@0xsequence/marketplace-sdk 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.changeset/config.json +1 -1
- package/.changeset/seven-doors-taste.md +5 -0
- package/CHANGELOG.md +6 -0
- package/dist/{chunk-WHFXVREI.js → chunk-A5ACY5YV.js} +2 -2
- package/dist/{chunk-2MSBZYLW.js → chunk-ABSYNRT5.js} +2 -2
- package/dist/{chunk-SBI52HTX.js → chunk-BN36GABQ.js} +9 -6
- package/dist/chunk-BN36GABQ.js.map +1 -0
- package/dist/{chunk-QKGZXS4T.js → chunk-X3QNSQER.js} +6 -6
- package/dist/index.js +5 -5
- package/dist/react/_internal/databeat/index.js +4 -4
- package/dist/react/hooks/index.js +5 -5
- package/dist/react/index.js +8 -8
- package/dist/react/ui/components/collectible-card/index.js +6 -6
- package/dist/react/ui/icons/index.js +1 -1
- package/dist/react/ui/index.js +6 -6
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +4 -4
- package/dist/utils/abi/index.js +5 -5
- package/dist/utils/index.js +5 -5
- package/package.json +1 -1
- package/src/react/ui/modals/BuyModal/Modal.tsx +5 -2
- package/.changeset/fuzzy-forks-smoke.md +0 -5
- package/dist/chunk-SBI52HTX.js.map +0 -1
- /package/dist/{chunk-WHFXVREI.js.map → chunk-A5ACY5YV.js.map} +0 -0
- /package/dist/{chunk-2MSBZYLW.js.map → chunk-ABSYNRT5.js.map} +0 -0
- /package/dist/{chunk-QKGZXS4T.js.map → chunk-X3QNSQER.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 { useSelectPaymentModal } from '@0xsequence/checkout';\nimport { useEffect } 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, skipNativeBalanceCheck } = useBuyModalProps();\n\n\tconst onError = useOnError();\n\n\tconst { openSelectPaymentModal } = useSelectPaymentModal();\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\topenSelectPaymentModal({\n\t\t\t...paymentModalParams,\n\t\t\tskipNativeBalanceCheck,\n\t\t});\n\t}\n};\n","import { Text } from '@0xsequence/design-system';\nimport { ActionModal } from './ActionModal';\n\ninterface ErrorModalProps {\n\tisOpen: boolean;\n\tchainId: number;\n\tonClose: () => void;\n\ttitle: string;\n\tmessage?: string;\n}\n\nexport const ErrorModal = ({\n\tisOpen,\n\tchainId,\n\tonClose,\n\ttitle,\n\tmessage,\n}: ErrorModalProps) => (\n\t<ActionModal\n\t\tisOpen={isOpen}\n\t\tchainId={chainId}\n\t\tonClose={onClose}\n\t\ttitle={title}\n\t\tctas={[]}\n\t>\n\t\t<div\n\t\t\tclassName=\"flex items-center justify-center p-4\"\n\t\t\tdata-testid=\"error-modal\"\n\t\t>\n\t\t\t<Text className=\"font-body\" color=\"text80\">\n\t\t\t\t{message || 'Error loading item details'}\n\t\t\t</Text>\n\t\t</div>\n\t</ActionModal>\n);\n","import { Spinner } from '@0xsequence/design-system';\nimport { ActionModal } from './ActionModal';\n\ninterface LoadingModalProps {\n\tisOpen: boolean;\n\tchainId: number;\n\tonClose: () => void;\n\ttitle: string;\n}\n\nexport const LoadingModal = ({\n\tisOpen,\n\tchainId,\n\tonClose,\n\ttitle,\n}: LoadingModalProps) => (\n\t<ActionModal\n\t\tisOpen={isOpen}\n\t\tchainId={chainId}\n\t\tonClose={onClose}\n\t\ttitle={title}\n\t\tctas={[]}\n\t\tdisableAnimation\n\t>\n\t\t<div\n\t\t\tclassName=\"flex items-center justify-center p-4\"\n\t\t\tdata-testid=\"loading-modal\"\n\t\t>\n\t\t\t<Spinner size=\"lg\" />\n\t\t</div>\n\t</ActionModal>\n);\n","'use client';\n\nimport { use$, useObservable } from '@legendapp/state/react';\nimport * as dn from 'dnum';\n\nimport { Text, TokenImage } from '@0xsequence/design-system';\nimport { DEFAULT_MARKETPLACE_FEE_PERCENTAGE } from '../../../../consts';\nimport { compareAddress } from '../../../../utils/address';\nimport type { Order } from '../../../_internal';\nimport { useCurrency, useMarketplaceConfig } from '../../../hooks';\nimport { ActionModal } from '../_internal/components/actionModal';\nimport QuantityInput from '../_internal/components/quantityInput';\nimport { 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 price = dn.from(order.priceAmount, currency.decimals);\n\n\t\t\tconst totalPriceWithoutFees = dn.multiply(quantityStr, price);\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\n\t\t\tconst feeMultiplier = dn.from(\n\t\t\t\t1 + marketplaceFeePercentage / 100,\n\t\t\t\tcurrency.decimals,\n\t\t\t);\n\t\t\tconst totalPrice = dn.multiply(totalPriceWithoutFees, feeMultiplier);\n\n\t\t\tformattedPrice = dn.format(totalPrice, { trailingZeros: false });\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}: 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\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 {\n\t\tchainId,\n\t\tcollectionAddress,\n\t\tcollectibleId,\n\t\torderId,\n\t\tcustomCreditCardProviderCallback,\n\t\tskipNativeBalanceCheck,\n\t} = useBuyModalProps();\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', args, quantity, 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\tfilters: {\n\t\t\tcurrencies: [price.currency.contractAddress],\n\t\t},\n\t});\n\n\tconst floorPriceRaw = listing?.order?.priceAmount;\n\tconst floorPriceFormatted = listing?.order?.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?.order?.priceCurrencyAddress || price.currency.contractAddress,\n\t\t\tquery: {\n\t\t\t\tenabled: !!floorPriceRaw && !listingLoading && price.amountRaw !== '0',\n\t\t\t},\n\t\t});\n\n\tif (\n\t\t!floorPriceRaw ||\n\t\tlistingLoading ||\n\t\tprice.amountRaw === '0' ||\n\t\tcomparisonLoading\n\t) {\n\t\treturn null;\n\t}\n\n\tlet floorPriceDifferenceText = 'Same as floor price';\n\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 text-large\" fontWeight=\"bold\">\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, formatUnits } from 'viem';\nimport { DEFAULT_MARKETPLACE_FEE_PERCENTAGE } from '../../../../../../consts';\nimport type { Price } from '../../../../../../types';\nimport { useMarketplaceConfig, useRoyalty } from '../../../../../hooks';\n\ntype TransactionDetailsProps = {\n\tcollectibleId: string;\n\tcollectionAddress: Hex;\n\tchainId: 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 =\n\t\tprice && formatUnits(BigInt(price.amountRaw), price.currency.decimals);\n\n\tif (royalty !== null && formattedAmount && price) {\n\t\tformattedAmount = (\n\t\t\tNumber.parseFloat(formattedAmount) -\n\t\t\t(Number.parseFloat(formattedAmount) * Number(royalty.percentage)) / 100\n\t\t).toFixed(price.currency.decimals);\n\t}\n\n\tif (marketplaceFeePercentage !== undefined && formattedAmount && price) {\n\t\tformattedAmount = (\n\t\t\tNumber.parseFloat(formattedAmount) -\n\t\t\t(Number.parseFloat(formattedAmount) * marketplaceFeePercentage) / 100\n\t\t).toFixed(price.currency.decimals);\n\t}\n\n\treturn (\n\t\t<div className=\"flex w-full items-center justify-between\">\n\t\t\t<Text className=\"font-body font-medium text-xs\" color={'text50'}>\n\t\t\t\tTotal earnings\n\t\t\t</Text>\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t<Image className=\"h-3 w-3\" src={currencyImageUrl} />\n\n\t\t\t\t{priceLoading ? (\n\t\t\t\t\t<Skeleton className=\"h-4 w-24 animate-shimmer\" />\n\t\t\t\t) : (\n\t\t\t\t\t<Text className=\"font-body font-medium text-xs\" color={'text100'}>\n\t\t\t\t\t\t{showPlaceholderPrice ? '0' : formattedAmount}{' '}\n\t\t\t\t\t\t{price.currency.symbol}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","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\tfilters: {\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?.order) {\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.order.orderId,\n\t\t\t\t\t\t\t\t\t\tmarketplace: lowestListing.order.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","dn","Text","jsx","jsx","jsxs","Text","collection","skipToken","useQuery","steps","useQuery","skipToken","jsx","observer","parseUnits","useAccount","Text","observer","useState","format","jsx","jsx","jsxs","format","jsx","jsxs","observer","ExpirationDateSelect","useState","Text","Button","Text","jsx","jsxs","Text","Button","NumericInput","Text","use$","useEffect","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","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","formatUnits","jsx","jsxs","formatUnits","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"]}
|