@0xsequence/marketplace-sdk 0.8.1 → 0.8.2
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/flat-parks-clean.md +8 -0
- package/CHANGELOG.md +9 -0
- package/dist/{builder-types-QlHwc9bI.d.ts → builder-types-Wrqq6YoW.d.ts} +1 -1
- package/dist/{chunk-3JU7SQVE.js → chunk-4DFOSZTE.js} +60 -23
- package/dist/chunk-4DFOSZTE.js.map +1 -0
- package/dist/{chunk-Q5RKAMYF.js → chunk-BGY4WXER.js} +43 -1
- package/dist/chunk-BGY4WXER.js.map +1 -0
- package/dist/{chunk-X3QNSQER.js → chunk-F6CUGMI4.js} +44 -67
- package/dist/chunk-F6CUGMI4.js.map +1 -0
- package/dist/{chunk-A5ACY5YV.js → chunk-LDHGFXPJ.js} +2 -2
- package/dist/{chunk-BN36GABQ.js → chunk-S2UFNIYX.js} +82 -61
- package/dist/chunk-S2UFNIYX.js.map +1 -0
- package/dist/{chunk-BCO4CYE4.js → chunk-SJU6QZHM.js} +2 -2
- package/dist/{chunk-2VHHJNXY.js → chunk-WXKV5N4T.js} +3 -3
- package/dist/{chunk-ABSYNRT5.js → chunk-XOHAZXBZ.js} +3 -11
- package/dist/chunk-XOHAZXBZ.js.map +1 -0
- package/dist/{create-config-ClkUr27C.d.ts → create-config-B58hoCDv.d.ts} +1 -1
- package/dist/{index-CnaFSNE9.d.ts → index-PhhCRKUH.d.ts} +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +10 -6
- package/dist/{listCollectibles-B0tbqnRd.d.ts → lowestListing-CuLxIWxy.d.ts} +49 -42
- package/dist/{marketplace.gen-BTHxxhG2.d.ts → marketplace.gen-De2-sxiG.d.ts} +1 -1
- package/dist/react/_internal/api/index.d.ts +2 -2
- package/dist/react/_internal/databeat/index.d.ts +1 -1
- package/dist/react/_internal/databeat/index.js +7 -7
- package/dist/react/_internal/index.d.ts +5 -5
- package/dist/react/_internal/wagmi/index.d.ts +3 -3
- package/dist/react/hooks/index.d.ts +8 -143
- package/dist/react/hooks/index.js +8 -10
- package/dist/react/hooks/options/index.d.ts +3 -3
- package/dist/react/index.d.ts +8 -8
- package/dist/react/index.js +12 -14
- package/dist/react/queries/index.d.ts +2 -2
- package/dist/react/queries/index.js +10 -27
- package/dist/react/queries/index.js.map +1 -1
- package/dist/react/ssr/index.d.ts +2 -2
- package/dist/react/ui/components/collectible-card/index.d.ts +1 -1
- package/dist/react/ui/components/collectible-card/index.js +10 -10
- package/dist/react/ui/icons/index.js +4 -4
- package/dist/react/ui/index.d.ts +1 -1
- package/dist/react/ui/index.js +10 -10
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +7 -7
- package/dist/{services-ybGoDJd9.d.ts → services-BdzIAR9w.d.ts} +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/{types-o_pKUpQG.d.ts → types-CmHOStH3.d.ts} +2 -2
- package/dist/utils/abi/index.js +5 -5
- package/dist/utils/index.d.ts +54 -2
- package/dist/utils/index.js +10 -6
- package/package.json +4 -2
- package/src/react/hooks/__tests__/useHighestOffer.test.tsx +7 -8
- package/src/react/hooks/__tests__/useLowestListing.test.tsx +4 -5
- package/src/react/hooks/useHighestOffer.tsx +1 -39
- package/src/react/hooks/useLowestListing.tsx +4 -51
- package/src/react/queries/highestOffer.ts +25 -30
- package/src/react/queries/index.ts +1 -0
- package/src/react/queries/lowestListing.ts +52 -0
- package/src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx +6 -9
- package/src/react/ui/modals/BuyModal/Modal.tsx +26 -8
- package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +6 -2
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +4 -4
- package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +1 -5
- package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +4 -4
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +1 -1
- package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +18 -14
- package/src/types/api-types.ts +1 -1
- package/src/types/types.ts +5 -0
- package/src/utils/price.ts +103 -0
- package/dist/chunk-3JU7SQVE.js.map +0 -1
- package/dist/chunk-ABSYNRT5.js.map +0 -1
- package/dist/chunk-BN36GABQ.js.map +0 -1
- package/dist/chunk-Q5RKAMYF.js.map +0 -1
- package/dist/chunk-X3QNSQER.js.map +0 -1
- /package/dist/{chunk-A5ACY5YV.js.map → chunk-LDHGFXPJ.js.map} +0 -0
- /package/dist/{chunk-BCO4CYE4.js.map → chunk-SJU6QZHM.js.map} +0 -0
- /package/dist/{chunk-2VHHJNXY.js.map → chunk-WXKV5N4T.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react/ui/modals/modal-provider.tsx","../src/react/ui/modals/BuyModal/Modal.tsx","../src/react/ui/modals/_internal/components/actionModal/ErrorModal.tsx","../src/react/ui/modals/_internal/components/actionModal/LoadingModal.tsx","../src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx","../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/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/CollectibleAsset.tsx","../src/react/ui/components/collectible-card/Footer.tsx"],"sourcesContent":["import { observer } from '@legendapp/state/react';\nimport { BuyModal } from './BuyModal/Modal';\nimport { CreateListingModal } from './CreateListingModal/Modal';\nimport { MakeOfferModal } from './MakeOfferModal/Modal';\nimport { SellModal } from './SellModal/Modal';\nimport SuccessfulPurchaseModal from './SuccessfulPurchaseModal';\nimport { TransferModal } from './TransferModal';\nimport SwitchChainModal from './_internal/components/switchChainModal';\nimport TransactionStatusModal from './_internal/components/transactionStatusModal';\nimport { _accountModalOpen$ } from './_internal/stores/accountModal';\n\nexport const ModalProvider = observer(() => {\n\treturn (\n\t\t<>\n\t\t\t<CreateListingModal />\n\t\t\t<MakeOfferModal />\n\t\t\t<TransferModal />\n\t\t\t<SellModal />\n\t\t\t<BuyModal />\n\t\t\t<SuccessfulPurchaseModal />\n\t\t\t{/* Helper modals */}\n\t\t\t<SwitchChainModal />\n\t\t\t<TransactionStatusModal />\n\t\t</>\n\t);\n});\n","'use client';\n\nimport {\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","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}: { order: Order; quantityStr: string }) => {\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?.collections.find((collection) =>\n\t\t\t\t\tcompareAddress(collection.address, order.collectionContractAddress),\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","'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:has(:disabled):hover]:opacity-100 [&>label>div>div:has(:disabled)]:opacity-100 [&>label>div>div>input]:text-xs [&>label>div>div]:h-9 [&>label>div>div]:rounded [&>label>div>div]:pr-0 [&>label>div>div]:pl-3 [&>label>div>div]:text-xs [&>label]:gap-[2px]',\n\t\t\t\tclassName,\n\t\t\t\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\tnumeric={true}\n\t\t\t\tvalue={localQuantity}\n\t\t\t\tonChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n\t\t\t\t\thandleChangeQuantity(e.target.value)\n\t\t\t\t}\n\t\t\t\twidth={'full'}\n\t\t\t/>\n\t\t\t{$invalidQuantity.get() && (\n\t\t\t\t<div className=\"text-negative text-sm\">Invalid quantity</div>\n\t\t\t)}\n\t\t</div>\n\t);\n});\n","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};\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?.collections.find(\n\t\t(collection) =>\n\t\t\tcollection.address.toLowerCase() === collectionAddress.toLowerCase() &&\n\t\t\tchainId === Number(collection.chainId),\n\t);\n\n\tconst avalancheOrOptimism =\n\t\tchainId === avalanche.id || chainId === optimism.id;\n\tconst receiver = avalancheOrOptimism\n\t\t? avalancheAndOptimismPlatformFeeRecipient\n\t\t: defaultPlatformFeeRecipient;\n\n\tconst percentageToBPS = (percentage: string | number) =>\n\t\t(Number(percentage) * 10000) / 100;\n\n\treturn {\n\t\tamount: percentageToBPS(collection?.feePercentage || defaultFee).toString(),\n\t\treceiver,\n\t} satisfies AdditionalFee;\n};\n","import { 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} 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}\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}: 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\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: customCreditCardProviderCallback\n\t\t\t? ['custom']\n\t\t\t: checkoutOptions.nftCheckout || [],\n\t\tonSuccess: (hash: string) => {\n\t\t\tcallbacks?.onSuccess?.({ hash: hash as Hash });\n\t\t},\n\t\tsupplementaryAnalyticsInfo: {\n\t\t\torderId: 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\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} 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} = 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})\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\tuseCurrencies,\n} from '../../../hooks';\nimport {\n\tActionModal,\n\ttype ActionModalProps,\n} from '../_internal/components/actionModal/ActionModal';\nimport { ErrorModal } from '../_internal/components/actionModal/ErrorModal';\nimport ExpirationDateSelect from '../_internal/components/expirationDateSelect';\nimport FloorPriceText from '../_internal/components/floorPriceText';\nimport PriceInput from '../_internal/components/priceInput';\nimport QuantityInput from '../_internal/components/quantityInput';\nimport 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\tisTestnet,\n\t} = useSelectWaasFeeOptions({\n\t\tchainId,\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} = useCurrencies({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tincludeNativeCurrency: true,\n\t});\n\tconst {\n\t\tdata: collection,\n\t\tisLoading: collectionIsLoading,\n\t\tisError: collectionIsError,\n\t} = useCollection({\n\t\tchainId,\n\t\tcollectionAddress,\n\t});\n\tconst modalLoading =\n\t\tcollectableIsLoading || collectionIsLoading || currenciesLoading;\n\n\tconst { address } = useAccount();\n\n\tconst { data: balance } = useBalanceOfCollectible({\n\t\tchainId,\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 ? !isTestnet : false,\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'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>.rounded-xl]:h-9 [&>label>div>.rounded-xl]:rounded-sm [&>label>div>.rounded-xl]:px-2 [&>label]:gap-1\">\n\t\t\t\t<NumericInput\n\t\t\t\t\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 { useCurrencies } 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 } = useCurrencies({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tincludeNativeCurrency,\n\t});\n\n\t// set default currency\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (\n\t\t\tcurrencies &&\n\t\t\tcurrencies.length > 0 &&\n\t\t\t!selectedCurrency$.get()?.contractAddress\n\t\t) {\n\t\t\t// We dont support native currency listings for any marketplace other than Sequence Marketplace v2\n\t\t\t// So we need to set the set another currency as the default\n\t\t\tif (secondCurrencyAsDefault) {\n\t\t\t\tselectedCurrency$.set(currencies[1]);\n\t\t\t} else {\n\t\t\t\tselectedCurrency$.set(currencies[0]);\n\t\t\t}\n\t\t}\n\t}, [currencies]);\n\n\tif (!currencies || currenciesLoading || !currency?.symbol) {\n\t\treturn <Skeleton className=\"mr-3 h-7 w-20 rounded-2xl\" />;\n\t}\n\n\tconst options = currencies.map(\n\t\t(currency) =>\n\t\t\t({\n\t\t\t\tlabel: currency.symbol,\n\t\t\t\tvalue: currency.contractAddress,\n\t\t\t\tcontent: currency.symbol,\n\t\t\t}) as SelectItem,\n\t);\n\n\tconst onChange = (value: string) => {\n\t\tconst selectedCurrency = currencies.find(\n\t\t\t(currency) => currency.contractAddress === value,\n\t\t);\n\t\tselectedCurrency$.set(selectedCurrency);\n\t};\n\n\treturn (\n\t\t<CustomSelect\n\t\t\titems={options}\n\t\t\tonValueChange={onChange}\n\t\t\tdefaultValue={{\n\t\t\t\tvalue: currency.contractAddress,\n\t\t\t\tcontent: currency.symbol,\n\t\t\t}}\n\t\t\ttestId=\"currency-select\"\n\t\t/>\n\t);\n});\n\nexport default CurrencyOptionsSelect;\n","'use client';\n\nimport {\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\topacity=\"100\"\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 { getNetwork } from '@0xsequence/connect';\nimport { Divider, Skeleton, Text } from '@0xsequence/design-system';\nimport { NetworkType } from '@0xsequence/network';\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 network = getNetwork(chainId);\n\t\tconst isTestnet = network.type === NetworkType.TESTNET;\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\tif (\n\t\t\t!selectWaasFeeOptions$.isVisible.get() ||\n\t\t\tisTestnet ||\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\titems={feeOptions}\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\tselectedFeeOption$.set(\n\t\t\t\tpendingFeeOptionConfirmation.options[0] as FeeOption,\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?.collections.find(\n\t\t\t\t(collection) => collection.address === collectionAddress,\n\t\t\t)?.feePercentage || DEFAULT_MARKETPLACE_FEE_PERCENTAGE\n\t\t: 0;\n\t// royaltyPercentage is an array of [recipient, percentage]\n\tconst { data: royalty, isLoading: royaltyLoading } = useRoyalty({\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t});\n\n\tconst priceLoading = !price || marketplaceConfigLoading || royaltyLoading;\n\n\tlet formattedAmount = '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 { getNetwork } from '@0xsequence/connect';\nimport { NetworkType } from '@0xsequence/network';\nimport type { FeeOption } from '../../../../../types/waas-types';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\n\ninterface UseSelectWaasFeeOptionsProps {\n\tchainId: string | number;\n\tisProcessing: boolean;\n\tfeeOptionsVisible: boolean;\n\tselectedFeeOption: FeeOption;\n}\n\nexport const useSelectWaasFeeOptions = ({\n\tchainId,\n\tisProcessing,\n\tfeeOptionsVisible,\n\tselectedFeeOption,\n}: UseSelectWaasFeeOptionsProps) => {\n\tconst { wallet } = useWallet();\n\tconst network = chainId ? getNetwork(Number(chainId)) : undefined;\n\tconst isTestnet = network?.type === NetworkType.TESTNET;\n\tconst isWaaS = wallet?.isWaaS;\n\tconst isProcessingWithWaaS = isProcessing && isWaaS;\n\n\tconst shouldHideActionButton =\n\t\t!isTestnet &&\n\t\tisProcessingWithWaaS &&\n\t\tfeeOptionsVisible === true &&\n\t\t!!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 && !isTestnet ? loadingLabel : defaultLabel;\n\t\t}\n\t\treturn defaultLabel;\n\t};\n\n\treturn {\n\t\tisWaaS,\n\t\tisTestnet,\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 {\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?.collections.find(\n\t\t(c) => c.address === collectionAddress,\n\t);\n\n\torderbookKind =\n\t\torderbookKind ??\n\t\tcollectionConfig?.destinationMarketplace ??\n\t\tOrderbookKind.sequence_marketplace_v2;\n\n\tconst { data: tokenApproval, isLoading: tokenApprovalIsLoading } =\n\t\tuseGetTokenApprovalData({\n\t\t\tchainId,\n\t\t\ttokenId: listingInput.listing.tokenId,\n\t\t\tcollectionAddress,\n\t\t\tcurrencyAddress: listingInput.listing.currencyAddress,\n\t\t\tcontractType: listingInput.contractType,\n\t\t\torderbook: orderbookKind,\n\t\t\tquery: {\n\t\t\t\tenabled: !marketplaceIsLoading,\n\t\t\t},\n\t\t});\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (tokenApproval?.step && !tokenApprovalIsLoading) {\n\t\t\tsteps$.approval.exist.set(true);\n\t\t}\n\t}, [tokenApproval?.step, tokenApprovalIsLoading]);\n\n\tconst { generatingSteps, executeApproval, createListing } =\n\t\tuseTransactionSteps({\n\t\t\tlistingInput,\n\t\t\tchainId,\n\t\t\tcollectionAddress,\n\t\t\torderbookKind,\n\t\t\tcallbacks,\n\t\t\tcloseMainModal,\n\t\t\tsteps$,\n\t\t});\n\n\treturn {\n\t\tisLoading: generatingSteps,\n\t\texecuteApproval,\n\t\tcreateListing,\n\t\ttokenApprovalStepExists: tokenApproval?.step !== null,\n\t\ttokenApprovalIsLoading,\n\t};\n};\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport { useAccount } from 'wagmi';\nimport { useConfig } from '../../../..';\nimport { dateToUnixTime } from '../../../../../utils/date';\nimport {\n\ttype ContractType,\n\ttype CreateReq,\n\ttype GenerateListingTransactionArgs,\n\ttype OrderbookKind,\n\ttype QueryArg,\n\tStepType,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\n\nexport interface UseGetTokenApprovalDataArgs {\n\tchainId: 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 type { OrderbookKind, Price } from '../../../../../types';\nimport {\n\tExecuteType,\n\ttype Step,\n\tStepType,\n\ttype TransactionSteps,\n\tbalanceQueries,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useAnalytics } from '../../../../_internal/databeat';\nimport { TransactionType } from '../../../../_internal/types';\nimport type { ListingInput } from '../../../../_internal/types';\nimport type {\n\tSignatureStep,\n\tTransactionStep as WalletTransactionStep,\n} from '../../../../_internal/utils';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport {\n\tuseConfig,\n\tuseCurrencies,\n\tuseGenerateListingTransaction,\n} from '../../../../hooks';\nimport { useTransactionStatusModal } from '../../_internal/components/transactionStatusModal';\nimport type { ModalCallbacks } from '../../_internal/types';\ninterface UseTransactionStepsArgs {\n\tlistingInput: ListingInput;\n\tchainId: 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 } = useCurrencies({\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\tanalytics.trackCreateListing({\n\t\t\t\t\tprops: {\n\t\t\t\t\t\torderbookKind,\n\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\tcurrencyAddress: listingInput.listing.currencyAddress,\n\t\t\t\t\t\tcurrencySymbol: '',\n\t\t\t\t\t\tchainId: 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\t\t\tif (callbacks?.onError && typeof callbacks.onError === 'function') {\n\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst executeTransaction = async ({\n\t\ttransactionStep,\n\t}: {\n\t\ttransactionStep: Step;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\tconst hash = await wallet.handleSendTransactionStep(\n\t\t\tNumber(chainId),\n\t\t\ttransactionStep as WalletTransactionStep,\n\t\t);\n\n\t\treturn hash;\n\t};\n\n\tconst executeSignature = async ({\n\t\tsignatureStep,\n\t}: {\n\t\tsignatureStep: Step;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\tconst signature = await wallet.handleSignMessageStep(\n\t\t\tsignatureStep as SignatureStep,\n\t\t);\n\n\t\tconst result = await marketplaceClient.execute({\n\t\t\tsignature: signature as string,\n\t\t\texecuteType: ExecuteType.order,\n\t\t\tbody: signatureStep.post?.body,\n\t\t});\n\n\t\treturn result.orderId;\n\t};\n\n\treturn {\n\t\tgeneratingSteps,\n\t\texecuteApproval,\n\t\tcreateListing,\n\t};\n};\n","'use client';\n\nimport { Modal, Skeleton, Text } from '@0xsequence/design-system';\nimport type { ChainId } from '@0xsequence/network';\nimport { use$ } from '@legendapp/state/react';\nimport type { QueryKey } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport type { Price } from '../../../../../../types';\nimport { getQueryClient } from '../../../../../_internal';\nimport type { TransactionType } from '../../../../../_internal/types';\nimport { useCollectible } from '../../../../../hooks';\nimport type { ModalCallbacks } from '../../types';\nimport { MODAL_OVERLAY_PROPS } from '../consts';\nimport { 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\tuseCurrencies,\n\tuseLowestListing,\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\tchainId,\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} = useCurrencies({\n\t\tchainId,\n\t\tincludeNativeCurrency: false,\n\t});\n\tconst modalLoading =\n\t\tcollectableIsLoading || collectionIsLoading || currenciesLoading;\n\n\tconst { isLoading, executeApproval, makeOffer } = useMakeOffer({\n\t\tofferInput: {\n\t\t\tcontractType: collection?.type as ContractType,\n\t\t\toffer: {\n\t\t\t\ttokenId: collectibleId,\n\t\t\t\tquantity: parseUnits(\n\t\t\t\t\tmakeOfferModal$.quantity.get(),\n\t\t\t\t\tcollectible?.decimals || 0,\n\t\t\t\t).toString(),\n\t\t\t\texpiry: dateToUnixTime(makeOfferModal$.expiry.get()),\n\t\t\t\tcurrencyAddress: offerPrice.currency.contractAddress,\n\t\t\t\tpricePerToken: offerPrice.amountRaw,\n\t\t\t},\n\t\t},\n\t\tchainId,\n\t\tcollectionAddress,\n\t\torderbookKind,\n\t\tcallbacks,\n\t\tcloseMainModal: () => makeOfferModal$.close(),\n\t\tsteps$: steps$,\n\t});\n\n\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 { 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?.collections.find(\n\t\t(c) => c.address === collectionAddress,\n\t);\n\n\torderbookKind =\n\t\torderbookKind ??\n\t\tcollectionConfig?.destinationMarketplace ??\n\t\tOrderbookKind.sequence_marketplace_v2;\n\n\tconst { data: tokenApproval, isLoading: tokenApprovalIsLoading } =\n\t\tuseGetTokenApprovalData({\n\t\t\tchainId,\n\t\t\ttokenId: offerInput.offer.tokenId,\n\t\t\tcollectionAddress,\n\t\t\tcurrencyAddress: offerInput.offer.currencyAddress,\n\t\t\tcontractType: offerInput.contractType,\n\t\t\torderbook: orderbookKind,\n\t\t\tquery: {\n\t\t\t\tenabled: !marketplaceIsLoading,\n\t\t\t},\n\t\t});\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (tokenApproval?.step && !tokenApprovalIsLoading) {\n\t\t\tsteps$.approval.exist.set(true);\n\t\t}\n\t}, [tokenApproval?.step, tokenApprovalIsLoading]);\n\n\tconst { generatingSteps, executeApproval, makeOffer } = useTransactionSteps({\n\t\tofferInput,\n\t\tchainId,\n\t\tcollectionAddress,\n\t\torderbookKind,\n\t\tcallbacks,\n\t\tcloseMainModal,\n\t\tsteps$,\n\t});\n\n\treturn {\n\t\tisLoading: generatingSteps,\n\t\texecuteApproval,\n\t\tmakeOffer,\n\t\ttokenApprovalStepExists: tokenApproval?.step !== null,\n\t\ttokenApprovalIsLoading,\n\t};\n};\n","import { skipToken, useQuery } from '@tanstack/react-query';\nimport { dateToUnixTime } from '../../../../../utils/date';\nimport {\n\ttype ContractType,\n\ttype CreateReq,\n\ttype GenerateOfferTransactionArgs,\n\ttype OrderbookKind,\n\ttype QueryArg,\n\tStepType,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport { useConfig } from '../../../../hooks/useConfig';\n\nexport interface UseGetTokenApprovalDataArgs {\n\tchainId: 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 {\n\tExecuteType,\n\ttype Step,\n\tStepType,\n\ttype TransactionSteps,\n\tbalanceQueries,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useAnalytics } from '../../../../_internal/databeat';\nimport { TransactionType } from '../../../../_internal/types';\nimport type { OfferInput } from '../../../../_internal/types';\nimport type {\n\tSignatureStep,\n\tTransactionStep,\n} from '../../../../_internal/utils';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport { useConfig, useCurrency } from '../../../../hooks';\nimport { useGenerateOfferTransaction } from '../../../../hooks/useGenerateOfferTransaction';\nimport { useTransactionStatusModal } from '../../_internal/components/transactionStatusModal';\nimport type { ModalCallbacks } from '../../_internal/types';\nexport type ExecutionState = 'approval' | 'offer' | null;\n\ninterface UseTransactionStepsArgs {\n\tofferInput: OfferInput;\n\tchainId: 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\n\t\t\t\tsteps$.transaction.isExecuting.set(false);\n\t\t\t\tsteps$.transaction.exist.set(false);\n\t\t\t}\n\n\t\t\tif (hash || orderId) {\n\t\t\t\tconst currencyDecimal = currency?.decimals || 0;\n\t\t\t\tconst currencyValueRaw = Number(offerInput.offer.pricePerToken);\n\t\t\t\tconst currencyValueDecimal = Number(\n\t\t\t\t\tformatUnits(BigInt(currencyValueRaw), currencyDecimal),\n\t\t\t\t);\n\n\t\t\t\tanalytics.trackCreateOffer({\n\t\t\t\t\tprops: {\n\t\t\t\t\t\torderbookKind,\n\t\t\t\t\t\tcollectionAddress,\n\t\t\t\t\t\tcurrencyAddress: offerInput.offer.currencyAddress,\n\t\t\t\t\t\tcurrencySymbol: currency?.symbol || '',\n\t\t\t\t\t\tchainId: 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\t\t\tif (callbacks?.onError && typeof callbacks.onError === 'function') {\n\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst executeTransaction = async ({\n\t\ttransactionStep,\n\t}: {\n\t\ttransactionStep: Step;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\tconst hash = await wallet.handleSendTransactionStep(\n\t\t\tNumber(chainId),\n\t\t\ttransactionStep as TransactionStep,\n\t\t);\n\n\t\treturn hash;\n\t};\n\n\tconst executeSignature = async ({\n\t\tsignatureStep,\n\t}: {\n\t\tsignatureStep: Step;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\tconst signature = await wallet.handleSignMessageStep(\n\t\t\tsignatureStep as SignatureStep,\n\t\t);\n\n\t\tconst result = await marketplaceClient.execute({\n\t\t\tsignature: signature as string,\n\t\t\texecuteType: ExecuteType.order,\n\t\t\tbody: signatureStep.post?.body,\n\t\t});\n\n\t\treturn result.orderId;\n\t};\n\n\treturn {\n\t\tgeneratingSteps,\n\t\texecuteApproval,\n\t\tmakeOffer,\n\t};\n};\n","import { observable } from '@legendapp/state';\nimport { addDays } from 'date-fns/addDays';\nimport type { Hex } from 'viem';\nimport type { Currency, OrderbookKind, Price } from '../../../../types';\nimport type { CollectionType, TransactionSteps } from '../../../_internal';\nimport type { BaseModalState, ModalCallbacks } from '../_internal/types';\n\ntype MakeOfferState = BaseModalState & {\n\torderbookKind?: OrderbookKind;\n\tcollectibleId: string;\n\tofferPrice: Price;\n\tofferPriceChanged: boolean;\n\tquantity: string;\n\texpiry: Date;\n\tinvalidQuantity: boolean;\n\tcollectionType?: CollectionType;\n\tsteps: TransactionSteps;\n\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\tchainId,\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\tExecuteType,\n\ttype MarketplaceKind,\n\ttype Step,\n\tStepType,\n\ttype TransactionSteps,\n\tbalanceQueries,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../../../../_internal';\nimport { useAnalytics } from '../../../../_internal/databeat';\nimport { TransactionType } from '../../../../_internal/types';\nimport type {\n\tSignatureStep,\n\tTransactionStep,\n} from '../../../../_internal/utils';\nimport { useWallet } from '../../../../_internal/wallet/useWallet';\nimport {\n\tuseConfig,\n\tuseCurrencies,\n\tuseGenerateSellTransaction,\n} from '../../../../hooks';\nimport { useFees } from '../../BuyModal/hooks/useFees';\nimport { useTransactionStatusModal } from '../../_internal/components/transactionStatusModal';\nimport type { ModalCallbacks } from '../../_internal/types';\nimport type { SellOrder } from './useSell';\nexport type ExecutionState = 'approval' | 'sell' | null;\n\ninterface UseTransactionStepsArgs {\n\tcollectibleId: string;\n\tchainId: 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 } = useCurrencies({\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\tcollectionAddress,\n\t\t\t\t\t\tcurrencyAddress: ordersData[0].currencyAddress,\n\t\t\t\t\t\tcurrencySymbol,\n\t\t\t\t\t\tchainId: 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\t\t\tif (callbacks?.onError && typeof callbacks.onError === 'function') {\n\t\t\t\tcallbacks.onError(error as Error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst executeTransaction = async ({\n\t\ttransactionStep,\n\t}: {\n\t\ttransactionStep: Step;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\tconst hash = await wallet.handleSendTransactionStep(\n\t\t\tNumber(chainId),\n\t\t\ttransactionStep as TransactionStep,\n\t\t);\n\n\t\treturn hash;\n\t};\n\n\tconst executeSignature = async ({\n\t\tsignatureStep,\n\t}: {\n\t\tsignatureStep: Step;\n\t}) => {\n\t\tif (!wallet) return;\n\n\t\tconst signature = await wallet.handleSignMessageStep(\n\t\t\tsignatureStep as SignatureStep,\n\t\t);\n\n\t\tconst result = await marketplaceClient.execute({\n\t\t\tsignature: signature as string,\n\t\t\texecuteType: ExecuteType.order,\n\t\t\tbody: signatureStep.post?.body,\n\t\t});\n\n\t\treturn result.orderId;\n\t};\n\n\treturn {\n\t\tgeneratingSteps,\n\t\texecuteApproval,\n\t\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<Button\n\t\t\t\tclassName=\"w-full\"\n\t\t\t\tas={'a'}\n\t\t\t\thref={successfulPurchaseModal$.state.explorerUrl.get()}\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\tshape=\"square\"\n\t\t\t\tleftIcon={ExternalLinkIcon}\n\t\t\t\tlabel={`View on ${successfulPurchaseModal$.state.explorerName.get()}`}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction CollectiblesGrid({ collectibles }: { collectibles: TokenMetadata[] }) {\n\tconst total = collectibles.length;\n\tconst shownCollectibles = total > 4 ? collectibles.slice(0, 4) : collectibles;\n\n\treturn (\n\t\t<div className=\"grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-2 [&:has(div:nth-child(4))>div]:col-[unset] [&>div:nth-child(1):only-child]:h-[312px] [&>div:nth-child(1):only-child]:w-[312px] [&>div:nth-child(3)]:col-[1/-1] [&>div:nth-child(3)]:justify-self-center\">\n\t\t\t{shownCollectibles.map((collectible) => {\n\t\t\t\tconst showPlus = total > 4 && collectibles.indexOf(collectible) === 3;\n\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"relative h-[150px] w-[150px]\"\n\t\t\t\t\t\tkey={collectible.tokenId}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tclassName={`aspect-square h-full w-full rounded-lg bg-background-secondary object-contain ${showPlus ? 'opacity-[0.4_!important]' : ''}`}\n\t\t\t\t\t\t\tsrc={collectible.image}\n\t\t\t\t\t\t\talt={collectible.name}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{showPlus && (\n\t\t\t\t\t\t\t<div className=\"absolute top-0 right-0 bottom-0 left-0 flex items-center justify-center bg-background-overlay backdrop-blur-md\">\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tclassName=\"rounded-lg bg-background-secondary px-2 py-1.5 text-sm backdrop-blur-md\"\n\t\t\t\t\t\t\t\t\tfontWeight=\"medium\"\n\t\t\t\t\t\t\t\t\tcolor=\"text80\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{total} TOTAL\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nexport default SuccessfulPurchaseModal;\n","import type { IconProps } from '@0xsequence/design-system';\nimport { observable } from '@legendapp/state';\nimport type { ComponentType } from 'react';\nimport type { TokenMetadata } from '../../../_internal';\nimport type { ModalCallbacks } from '../_internal/types';\n\nexport interface SuccessfulPurchaseModalState {\n\tisOpen: boolean;\n\topen: (\n\t\targs: SuccessfulPurchaseModalState['state'] & {\n\t\t\tcallbacks?: ModalCallbacks;\n\t\t\tdefaultCallbacks?: ModalCallbacks;\n\t\t},\n\t) => void;\n\tclose: () => void;\n\tstate: {\n\t\tcollectibles: TokenMetadata[];\n\t\ttotalPrice: string;\n\t\texplorerName: string;\n\t\texplorerUrl: string;\n\t\tctaOptions?: {\n\t\t\tctaLabel: string;\n\t\t\tctaOnClick: () => void;\n\t\t\tctaIcon?: ComponentType<IconProps>;\n\t\t};\n\t};\n\tcallbacks?: ModalCallbacks;\n}\n\nconst initialState: SuccessfulPurchaseModalState = {\n\tisOpen: false,\n\topen: ({\n\t\tcollectibles,\n\t\ttotalPrice,\n\t\texplorerName,\n\t\texplorerUrl,\n\t\tctaOptions,\n\t\tcallbacks,\n\t\tdefaultCallbacks,\n\t}: SuccessfulPurchaseModalState['state'] & {\n\t\tcallbacks?: ModalCallbacks;\n\t\tdefaultCallbacks?: ModalCallbacks;\n\t}) => {\n\t\tsuccessfulPurchaseModal$.state.set({\n\t\t\t...successfulPurchaseModal$.state.get(),\n\t\t\tcollectibles,\n\t\t\ttotalPrice,\n\t\t\texplorerName,\n\t\t\texplorerUrl: explorerUrl,\n\t\t\tctaOptions,\n\t\t});\n\t\tsuccessfulPurchaseModal$.callbacks.set(callbacks || defaultCallbacks);\n\t\tsuccessfulPurchaseModal$.isOpen.set(true);\n\t},\n\tclose: () => {\n\t\tsuccessfulPurchaseModal$.isOpen.set(false);\n\t\tsuccessfulPurchaseModal$.callbacks.set(undefined);\n\t\tsuccessfulPurchaseModal$.state.set({\n\t\t\t...initialState.state,\n\t\t});\n\t},\n\tstate: {\n\t\tcollectibles: [],\n\t\ttotalPrice: '0',\n\t\texplorerName: '',\n\t\texplorerUrl: '',\n\t\tctaOptions: undefined,\n\t},\n\tcallbacks: undefined,\n};\n\nexport const successfulPurchaseModal$ = observable(initialState);\n","'use client';\n\nimport { Modal } from '@0xsequence/design-system';\nimport { observer } from '@legendapp/state/react';\nimport type { 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\tchainId: chainId,\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\tchainId,\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]:h-13 [&>label>div>div]:rounded-xl [&>label>div>span]:text-sm [&>label>div>span]:text-text-80 [&>label]:gap-1\"\n\t\t\t\t/>\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 { CollectibleAsset } from './CollectibleAsset';\nimport { Footer } from './Footer';\n\nfunction CollectibleSkeleton() {\n\treturn (\n\t\t<div className=\"w-card-width overflow-hidden rounded-xl border border-border-base focus-visible:border-border-focus focus-visible:shadow-none focus-visible:outline-focus active:border-border-focus active:shadow-none\">\n\t\t\t<div className=\"relative aspect-square overflow-hidden bg-background-secondary\">\n\t\t\t\t<Skeleton\n\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\tclassName=\"absolute inset-0 h-full w-full animate-shimmer\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tborderRadius: 0,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"mt-2 flex flex-col gap-2 px-4 pb-4\">\n\t\t\t\t<Skeleton size=\"lg\" className=\"animate-shimmer\" />\n\t\t\t\t<Skeleton size=\"sm\" className=\"animate-shimmer\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\ntype CollectibleCardProps = {\n\tcollectibleId: string;\n\tchainId: number;\n\tcollectionAddress: Hex;\n\torderbookKind?: OrderbookKind;\n\tcollectionType?: ContractType;\n\tlowestListing: CollectibleOrder | undefined;\n\tonCollectibleClick?: (tokenId: string) => void;\n\tonOfferClick?: ({\n\t\torder,\n\t\te,\n\t}: {\n\t\torder?: Order;\n\t\te: React.MouseEvent<HTMLButtonElement>;\n\t}) => void;\n\tassetSrcPrefixUrl?: string;\n\tbalance?: string;\n\tcardLoading?: boolean;\n\t/**\n\t * Callback function that is called when the user attempts to perform an action\n\t * (such as buying or making an offer) that they are not permitted to do.\n\t *\n\t * This function is invoked in the following scenario:\n\t *\n\t * - When a disconnected user clicks on \"Buy Now\" and is prompted to connect\n\t * their wallet. After connecting, if it is determined that the user is\n\t * already the owner of the collectible, this callback is triggered to inform\n\t * them that they cannot perform the action (e.g., buying their own collectible).\n\t *\n\t * @param action - The action that the user cannot perform, which can be either\n\t * CollectibleCardAction.BUY or CollectibleCardAction.OFFER.\n\t */\n\tonCannotPerformAction?: (\n\t\taction: CollectibleCardAction.BUY | CollectibleCardAction.OFFER,\n\t) => void;\n};\n\nexport function CollectibleCard({\n\tcollectibleId,\n\tchainId,\n\tcollectionAddress,\n\torderbookKind,\n\tcollectionType,\n\tlowestListing,\n\tonCollectibleClick,\n\tonOfferClick,\n\tbalance,\n\tcardLoading,\n\tonCannotPerformAction,\n\tassetSrcPrefixUrl,\n}: CollectibleCardProps) {\n\tconst collectibleMetadata = lowestListing?.metadata;\n\tconst highestOffer = lowestListing?.offer;\n\n\tconst { data: lowestListingCurrency } = useCurrency({\n\t\tchainId,\n\t\tcurrencyAddress: lowestListing?.order?.priceCurrencyAddress,\n\t\tquery: {\n\t\t\tenabled: !!lowestListing?.order?.priceCurrencyAddress,\n\t\t},\n\t});\n\n\tif (cardLoading) {\n\t\treturn <CollectibleSkeleton />;\n\t}\n\n\tconst action = (\n\t\tbalance\n\t\t\t? (highestOffer && CollectibleCardAction.SELL) ||\n\t\t\t\t(!lowestListing?.order && CollectibleCardAction.LIST) ||\n\t\t\t\tCollectibleCardAction.TRANSFER\n\t\t\t: (lowestListing?.order && CollectibleCardAction.BUY) ||\n\t\t\t\tCollectibleCardAction.OFFER\n\t) as CollectibleCardAction;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"w-card-width overflow-hidden rounded-xl border border-border-base bg-background-primary focus-visible:border-border-focus focus-visible:shadow-focus-ring focus-visible:outline-focus active:border-border-focus active:shadow-active-ring\"\n\t\t\tonClick={() => onCollectibleClick?.(collectibleId)}\n\t\t\tonKeyDown={(e) => {\n\t\t\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\t\t\tonCollectibleClick?.(collectibleId);\n\t\t\t\t}\n\t\t\t}}\n\t\t>\n\t\t\t<div className=\"group relative z-10 flex h-full w-full cursor-pointer flex-col items-start overflow-hidden rounded-xl border-none bg-none p-0 focus:outline-none [&:focus]:rounded-[10px] [&:focus]:outline-[3px] [&:focus]:outline-black [&:focus]:outline-offset-[-3px]\">\n\t\t\t\t<article className=\"w-full rounded-xl\">\n\t\t\t\t\t<CollectibleAsset\n\t\t\t\t\t\tname={collectibleMetadata?.name || ''}\n\t\t\t\t\t\tcollectibleMetadata={collectibleMetadata}\n\t\t\t\t\t\tassetSrcPrefixUrl={assetSrcPrefixUrl}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Footer\n\t\t\t\t\t\tname={collectibleMetadata?.name || ''}\n\t\t\t\t\t\ttype={collectionType}\n\t\t\t\t\t\tonOfferClick={(e) => onOfferClick?.({ order: highestOffer, e })}\n\t\t\t\t\t\thighestOffer={highestOffer}\n\t\t\t\t\t\tlowestListingPriceAmount={lowestListing?.order?.priceAmount}\n\t\t\t\t\t\tlowestListingCurrency={lowestListingCurrency}\n\t\t\t\t\t\tbalance={balance}\n\t\t\t\t\t\tdecimals={collectibleMetadata?.decimals}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{(highestOffer || lowestListing) && (\n\t\t\t\t\t\t<div className=\"-bottom-action-offset absolute flex w-full items-center justify-center bg-overlay-light p-2 backdrop-blur transition-transform duration-200 ease-in-out group-hover:translate-y-[-44px]\">\n\t\t\t\t\t\t\t<ActionButton\n\t\t\t\t\t\t\t\tchainId={chainId}\n\t\t\t\t\t\t\t\tcollectionAddress={collectionAddress}\n\t\t\t\t\t\t\t\ttokenId={collectibleId}\n\t\t\t\t\t\t\t\torderbookKind={orderbookKind}\n\t\t\t\t\t\t\t\taction={action}\n\t\t\t\t\t\t\t\thighestOffer={highestOffer}\n\t\t\t\t\t\t\t\tlowestListing={lowestListing?.order}\n\t\t\t\t\t\t\t\towned={!!balance}\n\t\t\t\t\t\t\t\tonCannotPerformAction={onCannotPerformAction}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</article>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","'use client';\n\nimport { observer } from '@legendapp/state/react';\nimport type { Hex } from 'viem';\nimport type { Order, OrderbookKind } from '../../../../_internal';\nimport { NonOwnerActions } from './components/NonOwnerActions';\nimport { OwnerActions } from './components/OwnerActions';\nimport { useActionButtonLogic } from './hooks/useActionButtonLogic';\nimport type { CollectibleCardAction } from './types';\n\ntype ActionButtonProps = {\n\tchainId: 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 { useAccount } from 'wagmi';\nimport { setPendingAction } from '../store';\nimport type { CollectibleCardAction } from '../types';\n\ntype ActionButtonBodyProps = {\n\tlabel: 'Buy now' | 'Sell' | 'Make an offer' | 'Create listing' | 'Transfer';\n\ttokenId: string;\n\tonClick: () => void;\n\ticon?: ComponentType<IconProps>;\n\taction?: CollectibleCardAction.BUY | CollectibleCardAction.OFFER;\n};\n\nexport function ActionButtonBody({\n\ttokenId,\n\tlabel,\n\tonClick,\n\ticon,\n\taction,\n}: ActionButtonBodyProps) {\n\tconst { address } = useAccount();\n\tconst { setOpenConnectModal } = useOpenConnectModal();\n\n\tconst handleClick = (e: React.MouseEvent) => {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tif (!address && action) {\n\t\t\tsetPendingAction(action, onClick, tokenId);\n\t\t\tsetOpenConnectModal(true);\n\t\t} else {\n\t\t\tonClick();\n\t\t}\n\t};\n\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"flex w-full items-center justify-center\"\n\t\t\tvariant=\"primary\"\n\t\t\tlabel={label}\n\t\t\tonClick={handleClick}\n\t\t\tleftIcon={icon}\n\t\t\tsize=\"xs\"\n\t\t\tshape=\"square\"\n\t\t/>\n\t);\n}\n","import { observable } from '@legendapp/state';\nimport type { CollectibleCardAction } from './types';\n\ntype PendingAction = {\n\ttype: CollectibleCardAction.BUY | CollectibleCardAction.OFFER;\n\tcollectibleId: string;\n\tcallback: () => void;\n\ttimestamp: number;\n};\n\nexport const actionButtonStore = observable({\n\tpendingAction: null as PendingAction | null,\n});\n\nexport const setPendingAction = (\n\ttype: CollectibleCardAction.BUY | CollectibleCardAction.OFFER,\n\tcallback: () => void,\n\tcollectibleId: string,\n) => {\n\tactionButtonStore.pendingAction.set({\n\t\ttype,\n\t\tcallback,\n\t\ttimestamp: Date.now(),\n\t\tcollectibleId,\n\t});\n};\n\nexport const clearPendingAction = () => {\n\tactionButtonStore.pendingAction.set(null);\n};\n\nexport const executePendingActionIfExists = () => {\n\tconst timestamp = actionButtonStore.pendingAction.get()?.timestamp;\n\tconst callback = actionButtonStore.pendingAction.get()?.callback as\n\t\t| (() => void)\n\t\t| undefined;\n\n\tif (timestamp && callback) {\n\t\t// Only execute if the pending action is less than 5 minutes old\n\t\tif (\n\t\t\tDate.now() - timestamp < 5 * 60 * 1000 &&\n\t\t\ttypeof callback === 'function'\n\t\t) {\n\t\t\tcallback();\n\t\t}\n\t}\n};\n","'use client';\n\nimport type { Hex } from 'viem';\nimport { InvalidStepError } from '../../../../../../utils/_internal/error/transaction';\nimport type { Order, OrderbookKind } from '../../../../../_internal';\nimport SvgCartIcon from '../../../../icons/CartIcon';\nimport { useBuyModal } from '../../../../modals/BuyModal';\nimport { useMakeOfferModal } from '../../../../modals/MakeOfferModal';\nimport { CollectibleCardAction } from '../types';\nimport { ActionButtonBody } from './ActionButtonBody';\n\ntype NonOwnerActionsProps = {\n\taction: CollectibleCardAction;\n\ttokenId: string;\n\tcollectionAddress: Hex;\n\tchainId: 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 { useAccount } from 'wagmi';\nimport {\n\tactionButtonStore,\n\tclearPendingAction,\n\texecutePendingActionIfExists,\n} from '../store';\nimport { CollectibleCardAction } from '../types';\n\ntype UseActionButtonLogicProps = {\n\ttokenId: string;\n\towned?: boolean;\n\taction: CollectibleCardAction;\n\tonCannotPerformAction?: (\n\t\taction: CollectibleCardAction.BUY | CollectibleCardAction.OFFER,\n\t) => void;\n};\n\nexport const useActionButtonLogic = ({\n\ttokenId,\n\towned,\n\taction,\n\tonCannotPerformAction,\n}: UseActionButtonLogicProps) => {\n\tconst { address } = useAccount();\n\tconst actionsThatOwnersCannotPerform = [\n\t\tCollectibleCardAction.BUY,\n\t\tCollectibleCardAction.OFFER,\n\t];\n\tconst pendingActionType = actionButtonStore.pendingAction.type.get();\n\n\t// Handle owner restrictions\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n\tuseEffect(() => {\n\t\tif (\n\t\t\towned &&\n\t\t\tactionButtonStore.pendingAction.get() &&\n\t\t\taddress &&\n\t\t\t!actionsThatOwnersCannotPerform.includes(action) &&\n\t\t\tactionButtonStore.pendingAction.get()?.collectibleId === tokenId\n\t\t) {\n\t\t\tonCannotPerformAction?.(\n\t\t\t\tpendingActionType as\n\t\t\t\t\t| CollectibleCardAction.BUY\n\t\t\t\t\t| CollectibleCardAction.OFFER,\n\t\t\t);\n\t\t\tclearPendingAction();\n\t\t}\n\t}, [\n\t\towned,\n\t\tactionButtonStore.pendingAction.get(),\n\t\taddress,\n\t\taction,\n\t\ttokenId,\n\t\tonCannotPerformAction,\n\t\tpendingActionType,\n\t]);\n\n\t// Execute pending action when user becomes connected\n\tuseEffect(() => {\n\t\tif (\n\t\t\taddress &&\n\t\t\t!owned &&\n\t\t\tactionButtonStore.pendingAction.get() &&\n\t\t\tactionButtonStore.pendingAction.get()?.collectibleId === tokenId\n\t\t) {\n\t\t\t// TODO: Remove this timeout once pointer-events: none issue is fixed on Radix UI side\n\t\t\tsetTimeout(() => {\n\t\t\t\texecutePendingActionIfExists();\n\t\t\t\tclearPendingAction();\n\t\t\t}, 1000);\n\t\t}\n\t}, [address, owned, tokenId]);\n\n\tconst shouldShowAction = !address\n\t\t? [CollectibleCardAction.BUY, CollectibleCardAction.OFFER].includes(action)\n\t\t: true;\n\n\tconst isOwnerAction =\n\t\taddress &&\n\t\towned &&\n\t\t[\n\t\t\tCollectibleCardAction.LIST,\n\t\t\tCollectibleCardAction.TRANSFER,\n\t\t\tCollectibleCardAction.SELL,\n\t\t].includes(action);\n\n\treturn {\n\t\taddress,\n\t\tshouldShowAction,\n\t\tisOwnerAction,\n\t};\n};\n","'use client';\n\nimport { Skeleton } from '@0xsequence/design-system';\nimport { useEffect, useRef, useState } from 'react';\nimport { cn } from '../../../../utils';\nimport type { TokenMetadata } from '../../../_internal';\nimport ChessTileImage from '../../images/chess-tile.png';\n\nexport function CollectibleAssetSkeleton() {\n\treturn (\n\t\t<Skeleton\n\t\t\tsize=\"lg\"\n\t\t\tclassName=\"absolute inset-0 h-full w-full animate-shimmer\"\n\t\t\tstyle={{\n\t\t\t\tborderRadius: 0,\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nexport const isHtml = (fileName: string | undefined) => {\n\tconst isHtml = /.*\\.(html\\?.+|html)$/.test(fileName?.toLowerCase() || '');\n\treturn isHtml;\n};\n\nexport const isVideo = (fileName: string | undefined) => {\n\tconst isVideo = /.*\\.(mp4|ogg|webm)$/.test(fileName?.toLowerCase() || '');\n\treturn isVideo;\n};\n\nexport const is3dModel = (fileName: string | undefined) => {\n\tconst isGltf = /.*\\.gltf$/.test(fileName?.toLowerCase() || '');\n\treturn isGltf;\n};\n\ntype CollectibleImageProps = {\n\tname?: string;\n\tcollectibleMetadata?: TokenMetadata;\n\tassetSrcPrefixUrl?: string;\n};\n\nexport function CollectibleAsset({\n\tname,\n\tcollectibleMetadata,\n\tassetSrcPrefixUrl,\n}: CollectibleImageProps) {\n\tconst [assetLoadFailed, setAssetLoadFailed] = useState(false);\n\tconst [assetLoading, setAssetLoading] = useState(true);\n\tconst videoRef = useRef<HTMLVideoElement>(null);\n\tconst isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n\tconst placeholderImage = ChessTileImage;\n\tconst assetUrl =\n\t\tcollectibleMetadata?.image ||\n\t\tcollectibleMetadata?.video ||\n\t\tcollectibleMetadata?.animation_url ||\n\t\tcollectibleMetadata?.assets?.[0]?.url ||\n\t\tplaceholderImage;\n\tconst proxiedAssetUrl = assetSrcPrefixUrl\n\t\t? `${assetSrcPrefixUrl}${assetUrl}` // assetSrcPrefixUrl must have a trailing slash at the end\n\t\t: assetUrl;\n\n\tuseEffect(() => {\n\t\tif (videoRef.current) {\n\t\t\tvideoRef.current.addEventListener('loadedmetadata', () => {\n\t\t\t\tsetAssetLoading(false);\n\t\t\t});\n\t\t}\n\t}, []);\n\n\tif (isHtml(assetUrl)) {\n\t\treturn (\n\t\t\t<div className=\"flex aspect-square w-full items-center justify-center overflow-hidden rounded-lg bg-background-secondary\">\n\t\t\t\t{assetLoading && <CollectibleAssetSkeleton />}\n\n\t\t\t\t<iframe\n\t\t\t\t\ttitle={name || 'Collectible'}\n\t\t\t\t\tclassName=\"aspect-square w-full\"\n\t\t\t\t\tsrc={proxiedAssetUrl}\n\t\t\t\t\tallow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\"\n\t\t\t\t\tsandbox=\"allow-scripts\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tborder: '0px',\n\t\t\t\t\t}}\n\t\t\t\t\tonError={() => setAssetLoadFailed(true)}\n\t\t\t\t\tonLoad={() => setAssetLoading(false)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// TODO: Add 3d model support\n\n\tif (isVideo(assetUrl)) {\n\t\treturn (\n\t\t\t<div className=\"relative flex aspect-square w-full items-center justify-center overflow-hidden rounded-lg bg-background-secondary\">\n\t\t\t\t{assetLoading && <CollectibleAssetSkeleton />}\n\t\t\t\t<video\n\t\t\t\t\tref={videoRef}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t`absolute inset-0 h-full w-full object-cover transition-transform duration-200 ease-in-out group-hover:scale-hover ${\n\t\t\t\t\t\t\tassetLoading ? 'invisible' : 'visible'\n\t\t\t\t\t\t}`,\n\t\t\t\t\t\t// we can't hide the video controls in safari, when user hovers over the video they show up. `pointer-events-none` is the only way to hide them on hover\n\t\t\t\t\t\tisSafari && 'pointer-events-none',\n\t\t\t\t\t)}\n\t\t\t\t\tautoPlay\n\t\t\t\t\tloop\n\t\t\t\t\tcontrols\n\t\t\t\t\tplaysInline\n\t\t\t\t\tmuted\n\t\t\t\t\tcontrolsList=\"nodownload noremoteplayback nofullscreen \"\n\t\t\t\t\tonError={() => {\n\t\t\t\t\t\tsetAssetLoadFailed(true);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<source src={proxiedAssetUrl} />\n\t\t\t\t</video>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"relative aspect-square overflow-hidden bg-background-secondary\">\n\t\t\t{assetLoading && <CollectibleAssetSkeleton />}\n\n\t\t\t<img\n\t\t\t\tsrc={assetLoadFailed ? placeholderImage : proxiedAssetUrl}\n\t\t\t\talt={name || 'Collectible'}\n\t\t\t\tclassName={`absolute inset-0 h-full w-full object-cover transition-transform duration-200 ease-in-out group-hover:scale-hover ${\n\t\t\t\t\tassetLoading ? 'invisible' : 'visible'\n\t\t\t\t}`}\n\t\t\t\tonError={() => setAssetLoadFailed(true)}\n\t\t\t\tonLoad={() => setAssetLoading(false)}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","'use client';\n\nimport {\n\tChevronLeftIcon,\n\tChevronRightIcon,\n\tIconButton,\n\tImage,\n\tText,\n} from '@0xsequence/design-system';\nimport { formatUnits } from 'viem';\nimport { ContractType, type Currency, type Order } from '../../../_internal';\nimport SvgBellIcon from '../../icons/BellIcon';\n\nconst OVERFLOW_PRICE = 100000000;\nconst UNDERFLOW_PRICE = 0.0001;\n\nconst formatPrice = (amount: string, currency: Currency): React.ReactNode => {\n\tconst formattedPrice = formatUnits(BigInt(amount), currency.decimals);\n\tconst numericPrice = Number.parseFloat(formattedPrice);\n\n\tif (numericPrice < UNDERFLOW_PRICE) {\n\t\treturn (\n\t\t\t<div className=\"flex items-center\">\n\t\t\t\t<ChevronLeftIcon className=\"h-3 w-3 text-text-100\" />\n\t\t\t\t<Text>{`${UNDERFLOW_PRICE} ${currency.symbol}`}</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (numericPrice > OVERFLOW_PRICE) {\n\t\treturn (\n\t\t\t<div className=\"flex items-center\">\n\t\t\t\t<ChevronRightIcon className=\"h-3 w-3 text-text-100\" />\n\t\t\t\t<Text>{`${OVERFLOW_PRICE.toLocaleString('en-US', {\n\t\t\t\t\tmaximumFractionDigits: 2,\n\t\t\t\t})} ${currency.symbol}`}</Text>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst maxDecimals = numericPrice < 0.01 ? 6 : 4;\n\n\tconst formattedNumber = numericPrice.toLocaleString('en-US', {\n\t\tminimumFractionDigits: 0,\n\t\tmaximumFractionDigits: maxDecimals,\n\t});\n\n\treturn (\n\t\t<div className=\"flex items-center gap-1\">\n\t\t\t<Text>\n\t\t\t\t{formattedNumber} {currency.symbol}\n\t\t\t</Text>\n\t\t</div>\n\t);\n};\n\ntype FooterProps = {\n\tname: string;\n\ttype?: ContractType;\n\tdecimals?: number;\n\tonOfferClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n\thighestOffer?: Order;\n\tlowestListingPriceAmount?: string;\n\tlowestListingCurrency?: Currency;\n\tbalance?: string;\n};\n\nexport const Footer = ({\n\tname,\n\ttype,\n\tdecimals,\n\tonOfferClick,\n\thighestOffer,\n\tlowestListingPriceAmount,\n\tlowestListingCurrency,\n\tbalance,\n}: FooterProps) => {\n\tconst listed = !!lowestListingPriceAmount && !!lowestListingCurrency;\n\n\tif (name.length > 15 && highestOffer) {\n\t\tname = `${name.substring(0, 13)}...`;\n\t}\n\tif (name.length > 17 && !highestOffer) {\n\t\tname = `${name.substring(0, 17)}...`;\n\t}\n\n\treturn (\n\t\t<div className=\"relative flex flex-col items-start gap-2 whitespace-nowrap bg-background-primary p-4\">\n\t\t\t<div className=\"relative flex w-full items-center justify-between\">\n\t\t\t\t<Text className=\"text-left font-body font-bold text-sm text-text-100\">\n\t\t\t\t\t{name || 'Untitled'}\n\t\t\t\t</Text>\n\n\t\t\t\t{highestOffer && onOfferClick && (\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tclassName=\"absolute top-0 right-0 h-[22px] w-[22px] hover:animate-bell-ring\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\tonOfferClick?.(e);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ticon={(props) => <SvgBellIcon {...props} size=\"xs\" />}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className=\"flex items-center gap-1\">\n\t\t\t\t{listed && lowestListingCurrency.imageUrl && (\n\t\t\t\t\t<Image\n\t\t\t\t\t\tclassName=\"h-3 w-3\"\n\t\t\t\t\t\tsrc={lowestListingCurrency.imageUrl}\n\t\t\t\t\t\tonError={(e) => {\n\t\t\t\t\t\t\te.currentTarget.style.display = 'none';\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t<Text\n\t\t\t\t\tclassName={`text-left font-body font-bold text-sm ${\n\t\t\t\t\t\tlisted ? 'text-text-100' : 'text-text-50'\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t{listed &&\n\t\t\t\t\t\tformatPrice(lowestListingPriceAmount, lowestListingCurrency)}\n\t\t\t\t\t{!listed && 'Not listed yet'}\n\t\t\t\t</Text>\n\t\t\t</div>\n\t\t\t<TokenTypeBalancePill\n\t\t\t\tbalance={balance}\n\t\t\t\ttype={type as ContractType}\n\t\t\t\tdecimals={decimals}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\nconst TokenTypeBalancePill = ({\n\tbalance,\n\ttype,\n\tdecimals,\n}: {\n\tbalance?: string;\n\ttype: ContractType;\n\tdecimals?: number;\n}) => {\n\tconst displayText =\n\t\ttype === ContractType.ERC1155\n\t\t\t? balance\n\t\t\t\t? `Owned: ${formatUnits(BigInt(balance), decimals ?? 0)}`\n\t\t\t\t: 'ERC-1155'\n\t\t\t: 'ERC-721';\n\n\treturn (\n\t\t<Text className=\"rounded-lg bg-background-secondary px-2 py-1 text-left font-medium text-text-80 text-xs\">\n\t\t\t{displayText}\n\t\t</Text>\n\t);\n};\n"],"mappings":"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","names":["observer","jsx","Text","jsx","jsx","jsxs","Text","collection","skipToken","useQuery","steps","useQuery","skipToken","jsx","observer","parseUnits","useAccount","Text","observer","useState","jsx","jsx","jsxs","jsx","jsxs","observer","ExpirationDateSelect","useState","Text","Button","Text","jsx","jsxs","Text","Button","NumericInput","Text","use$","useEffect","useRef","useState","skipToken","useQuery","erc20Abi","balance","TokenImage","useState","jsx","Skeleton","observer","useEffect","Button","DropdownMenuContent","DropdownMenuPortal","DropdownMenuRoot","DropdownMenuTrigger","Text","useState","jsx","jsxs","jsx","observer","CurrencyOptionsSelect","useEffect","Skeleton","currency","jsx","jsxs","useRef","use$","useEffect","useState","NumericInput","Text","Skeleton","Text","observer","Text","observer","useEffect","formatUnits","zeroAddress","jsx","jsxs","Button","Skeleton","Spinner","jsx","jsxs","Text","jsx","jsxs","useEffect","useState","zeroAddress","useAccount","useAccount","useState","zeroAddress","useEffect","jsx","jsxs","observer","Text","Skeleton","Image","Skeleton","Text","jsx","jsxs","Skeleton","Image","Text","Image","Skeleton","Text","jsx","jsxs","Text","Image","Skeleton","getNetwork","NetworkType","getNetwork","NetworkType","useEffect","skipToken","useQuery","useAccount","useAccount","useQuery","steps","skipToken","formatUnits","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","useState","useQuery","skipToken","useEffect","formatUnits","formatUnits","jsx","jsxs","use$","Text","Skeleton","currency","steps","formatUnits","useEffect","observable","addDays","initialState","addDays","observable","jsx","jsxs","Modal","observer","listingPrice","useAccount","parseUnits","getNetwork","NetworkType","Show","observer","useState","parseUnits","useEffect","skipToken","useQuery","ONE_DAY_IN_SECONDS","useGetTokenApprovalData","useQuery","steps","skipToken","formatUnits","useTransactionSteps","steps","formatUnits","useGetTokenApprovalData","useEffect","useTransactionSteps","observable","addDays","approval","transaction","steps","initialState","actions","Fragment","jsx","jsxs","Show","Modal","observer","offerPrice","useState","parseUnits","getNetwork","NetworkType","state","getNetwork","NetworkType","Show","observer","parseUnits","Image","Skeleton","Text","formatDistanceToNow","jsx","jsxs","useEffect","skipToken","useQuery","useGetTokenApprovalData","useQuery","steps","skipToken","formatUnits","useTransactionSteps","steps","currency","formatUnits","useGetTokenApprovalData","useEffect","useTransactionSteps","observable","initialState","jsx","jsxs","Show","Modal","observer","getNetwork","NetworkType","parseUnits","Button","Image","Modal","Text","observer","use$","observable","initialState","jsx","jsxs","observer","use$","Modal","Text","Button","Image","Modal","observer","useAccount","observable","initialState","Text","observer","isAddress","useAccount","cn","Text","observable","observer","jsx","jsxs","observer","observable","cn","Text","getNetwork","Button","Spinner","NetworkType","observer","jsx","jsxs","observer","getNetwork","NetworkType","Spinner","Button","observer","useAccount","jsx","jsxs","observer","useAccount","useWaasFeeOptions","useWaasFeeOptions","jsx","jsxs","observer","useAccount","isAddress","Text","Button","Text","observer","jsx","jsxs","observer","Text","Button","jsx","jsxs","useAccount","observer","Modal","Fragment","jsx","jsxs","observer","Skeleton","observer","Button","useAccount","observable","jsx","useAccount","Button","jsx","jsx","useEffect","useAccount","useAccount","useEffect","jsx","observer","Skeleton","useEffect","useRef","useState","jsx","jsxs","Skeleton","isHtml","isVideo","useState","useRef","useEffect","jsxs","jsx","IconButton","Image","Text","formatUnits","jsx","jsxs","formatUnits","Text","IconButton","Image","jsx","jsxs","Skeleton"]}
|