{"mappings":"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IACD,8BAA8B;QAC5B,UAAU;QACV,SAAS;QACT,eAAe;QACf,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,OAAO;QACP,MAAM;QACN,aAAa;QACb,QAAQ;IACT;IACD,6BAA6B;QAC3B,UAAU;QACV,SAAS;QACT,eAAe;QACf,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,OAAO;QACP,MAAM;QACN,aAAa;QACb,QAAQ;IACT;IACD,0JACE;QACE,MAAM;QACN,OAAO;IACR;IACH,iFACE;QACE,MAAM;QACN,OAAO;IACR;IACH,2EAA2E;QACzE,QAAQ;IACT;IACD,uCAAuC;QACrC,SAAS;IACV;IACD,sCAAsC;QACpC,SAAS;IACV;IACD,iFACE;QACE,KAAK;IACN;IACH,0CAA0C;QACxC,SAAS;IACV;IACD,yCAAyC;QACvC,SAAS;IACV;IACD,6BAA6B;QAC3B,SAAS;IACV;IACD,sBAAsB;QACpB,UAAU;QACV,SAAS;IACV;IACD,qBAAqB;QACnB,SAAS;IACV;IACD,sCAAsC;QACpC,iBAAiB;QACjB,OAAO;QACP,MAAM;QACN,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,UAAU;QACV,YAAY;QACZ,UAAU;QACV,MAAM;QACN,cAAc;IACf;IACD,oFACE;QACE,YAAY;QACZ,gBAAgB;QAChB,QAAQ;QACR,UAAU;QACV,KAAK;QACL,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,OAAO;QACP,MAAM;IACP;IACH,0HACE;QACE,SAAS;IACV;IACH,wFACE;QACE,UAAU;IACX;IACH,8HACE;QACE,MAAM;IACP;IACH,8HACE;QACE,OAAO;IACR;IACH,gGACE;QACE,OAAO;IACR;IACH,wGACE;QACE,MAAM;IACP;IACH,4FACE;QACE,OAAO;QACP,QAAQ;IACT;IACH,sGACE;QACE,YAAY;QACZ,MAAM;IACP;IACH,oBAAoB;QAClB,UAAU;QACV,QAAQ;IACT;IACD,iDAAiD;QAC/C,SAAS;IACV;IACD,0BAA0B;QACxB,OAAO;IACR;IACD,qCAAqC;QACnC,SAAS;IACV;IACD,wGACE;QACE,QAAQ;QACR,sBAAsB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;YAC9C,OAAO;QACT;QAEA,OAAO;IACT,EAAE,OAAO,GAAG;QACV,QAAQ,KAAK,CAAC;QACd,OAAO;IACT;AACF;;;AC7DO,MAAM,4CAAa;IACxB;QACE,WAAW;QACX,QAAQ;YACN;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,MAAM;QACN,MAAM;IACP;IACD;QACE,WAAW;QACX,QAAQ;YACN;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,MAAM;QACN,MAAM;IACP;IACD;QACE,WAAW;QACX,QAAQ;YACN;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,MAAM;QACN,MAAM;IACP;IACD;QACE,WAAW;QACX,QAAQ;YACN;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,SAAS;gBACT,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,MAAM;QACN,MAAM;IACP;IACD;QACE,QAAQ;YACN;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,MAAM;QACN,SAAS;YACP;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,iBAAiB;QACjB,MAAM;IACP;IACD;QACE,QAAQ;YACN;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,MAAM;QACN,SAAS;YACP;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,iBAAiB;QACjB,MAAM;IACP;IACD;QACE,QAAQ;YACN;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,MAAM;QACN,SAAS;YACP;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,iBAAiB;QACjB,MAAM;IACP;IACD;QACE,QAAQ;YACN;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,MAAM;QACN,SAAS,EAAE;QACX,iBAAiB;QACjB,MAAM;IACP;IACD;QACE,QAAQ;YACN;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;SACF;QACD,MAAM;QACN,SAAS,EAAE;QACX,iBAAiB;QACjB,MAAM;IACP;IACD;QACE,QAAQ;YACN;gBACE,cAAc;gBACd,MAAM;gBACN,MAAM;YACP;YACD;gBACE,cAAc;gBACd,M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","sources":["packages/ui/src/index.ts","packages/ui/src/ReservoirKitProvider.tsx","packages/ui/src/themes/darkTheme.ts","packages/ui/src/themes/ReservoirKitTheme.ts","packages/ui/src/ReservoirClientProvider.tsx","packages/ui/package.json","packages/ui/stitches.config.ts","packages/ui/src/lib/swr.ts","packages/ui/src/styles/calendar.ts","packages/ui/src/hooks/useMutationObservable.ts","packages/ui/src/hooks/useAttributes.ts","packages/ui/src/hooks/useReservoirClient.ts","packages/ui/src/hooks/useBids.tsx","packages/ui/src/hooks/useInfiniteApi.ts","packages/ui/src/hooks/useCart.ts","packages/ui/src/context/CartProvider.tsx","packages/ui/src/hooks/useCurrencyConversion.ts","packages/ui/src/hooks/useChainCurrency.ts","packages/ui/src/constants/common.ts","packages/ui/src/hooks/useCoinConversion.ts","packages/ui/src/hooks/useCoinIds.ts","packages/ui/src/hooks/useCollectionActivity.ts","packages/ui/src/hooks/useCollections.ts","packages/ui/src/hooks/useDynamicTokens.ts","packages/ui/src/hooks/useTokens.ts","packages/ui/src/hooks/useListings.ts","packages/ui/src/hooks/useMarketplaceConfigs.ts","packages/ui/src/hooks/useOwnerListings.ts","packages/ui/src/hooks/useSearchActivities.ts","packages/ui/src/hooks/useSolverCapacity.ts","packages/ui/src/hooks/useTokenActivity.ts","packages/ui/src/hooks/useTrendingCollections.ts","packages/ui/src/hooks/useTrendingMints.ts","packages/ui/src/hooks/useUserCollections.ts","packages/ui/src/hooks/useUsersActivity.ts","packages/ui/src/hooks/useUserTokens.ts","packages/ui/src/hooks/useUserTopBids.ts","packages/ui/src/themes/lightTheme.ts","packages/ui/src/modal/buy/BuyModal.tsx","packages/ui/src/hooks/useFallbackState.ts","packages/ui/src/primitives/Anchor.tsx","packages/ui/src/primitives/Box.tsx","packages/ui/src/primitives/Button.tsx","packages/ui/src/primitives/ErrorWell.tsx","packages/ui/src/primitives/Flex.tsx","packages/ui/src/primitives/Text.tsx","packages/ui/src/lib/truncate.ts","packages/ui/src/primitives/FormatCryptoCurrency.tsx","packages/ui/src/primitives/FormatCrypto.tsx","packages/ui/src/lib/numbers.ts","packages/ui/src/primitives/CryptoCurrencyIcon.tsx","packages/ui/src/primitives/EthLogo.tsx","packages/ui/src/img/EthIconGlyph.tsx","packages/ui/src/img/EthIconGray.tsx","packages/ui/src/img/EthIconPurple.tsx","packages/ui/src/constants/wrappedContracts.ts","packages/ui/src/img/WEthIcon.tsx","packages/ui/src/primitives/Tooltip.tsx","packages/ui/src/primitives/Loader.tsx","packages/ui/src/modal/Progress.tsx","packages/ui/src/lib/getChainBlockExplorerUrl.ts","packages/ui/src/modal/Modal.tsx","packages/ui/src/primitives/Dialog.tsx","packages/ui/src/hooks/useMediaQuery.ts","packages/ui/src/img/ReservoirText.tsx","packages/ui/src/modal/buy/BuyModalRenderer.tsx","packages/ui/src/hooks/usePaymentTokens.ts","packages/ui/src/hooks/useCurrencyConversions.ts","packages/ui/src/modal/ProgressBar.tsx","packages/ui/src/modal/QuantitySelector.tsx","packages/ui/src/primitives/PseudoInput.tsx","packages/ui/src/common/PaymentDetails.tsx","packages/ui/src/primitives/FormatCurrency.tsx","packages/ui/src/common/TokenInfo.tsx","packages/ui/src/primitives/ChainIcon.tsx","packages/ui/src/constants/chainIcons.tsx","packages/ui/src/img/chains/MainnetIconDark.tsx","packages/ui/src/img/chains/MainnetIconLight.tsx","packages/ui/src/img/chains/PolygonIconDark.tsx","packages/ui/src/img/chains/PolygonIconLight.tsx","packages/ui/src/img/chains/PolygonIconColor.tsx","packages/ui/src/img/chains/BaseIconDark.tsx","packages/ui/src/img/chains/BaseIconLight.tsx","packages/ui/src/img/chains/BaseIconColor.tsx","packages/ui/src/img/chains/Ancient8IconDark.tsx","packages/ui/src/img/chains/Ancient8IconLight.tsx","packages/ui/src/img/chains/Ancient8IconColor.tsx","packages/ui/src/img/chains/ArbitrumIconDark.tsx","packages/ui/src/img/chains/ArbitrumIconLight.tsx","packages/ui/src/img/chains/ArbitrumIconColor.tsx","packages/ui/src/img/chains/ArbitrumNovaIconDark.tsx","packages/ui/src/img/chains/ArbitrumNovaIconLight.tsx","packages/ui/src/img/chains/ArbitrumNovaIconColor.tsx","packages/ui/src/img/chains/AvalancheIconDark.tsx","packages/ui/src/img/chains/AvalancheIconLight.tsx","packages/ui/src/img/chains/AvalancheIconColor.tsx","packages/ui/src/img/chains/BscIconDark.tsx","packages/ui/src/img/chains/BscIconLight.tsx","packages/ui/src/img/chains/BscIconColor.tsx","packages/ui/src/img/chains/GoerliIconDark.tsx","packages/ui/src/img/chains/GoerliIconLight.tsx","packages/ui/src/img/chains/LineaIconDark.tsx","packages/ui/src/img/chains/LineaIconLight.tsx","packages/ui/src/img/chains/LineaIconColor.tsx","packages/ui/src/img/chains/OptimismIconDark.tsx","packages/ui/src/img/chains/OptimismIconLight.tsx","packages/ui/src/img/chains/OptimismIconColor.tsx","packages/ui/src/img/chains/ScrollIconDark.tsx","packages/ui/src/img/chains/ScrollIconLight.tsx","packages/ui/src/img/chains/ScrollIconColor.tsx","packages/ui/src/img/chains/PolygonZkevmIconDark.tsx","packages/ui/src/img/chains/PolygonZkevmIconLight.tsx","packages/ui/src/img/chains/PolygonZkevmIconColor.tsx","packages/ui/src/img/chains/ZksyncIconDark.tsx","packages/ui/src/img/chains/ZksyncIconLight.tsx","packages/ui/src/img/chains/ZksyncIconColor.tsx","packages/ui/src/img/chains/ZoraIconDark.tsx","packages/ui/src/img/chains/ZoraIconLight.tsx","packages/ui/src/img/chains/ZoraIconColor.tsx","packages/ui/src/img/chains/FrameIconDark.tsx","packages/ui/src/img/chains/FrameIconLight.tsx","packages/ui/src/img/chains/FrameIconColor.tsx","packages/ui/src/img/chains/BlastSepoliaIconColor.tsx","packages/ui/src/img/chains/BlastSepoliaIconLight.tsx","packages/ui/src/img/chains/BlastSepoliaIconDark.tsx","packages/ui/src/img/chains/ApexPopIconLight.tsx","packages/ui/src/img/chains/ApexPopIconDark.tsx","packages/ui/src/img/chains/ApexPopIconColor.tsx","packages/ui/src/img/chains/BlastIconColor.tsx","packages/ui/src/img/chains/BlastIconDark.tsx","packages/ui/src/img/chains/BlastIconLight.tsx","packages/ui/src/img/chains/AuraIconLight.tsx","packages/ui/src/img/chains/AuraIconDark.tsx","packages/ui/src/primitives/Divider.tsx","packages/ui/src/primitives/Img.tsx","packages/ui/src/modal/list/ListModal.tsx","packages/ui/src/primitives/Input.tsx","packages/ui/src/modal/list/ListModalRenderer.tsx","packages/ui/src/hooks/useMarketplaces.ts","packages/ui/src/lib/getLocalMarketplaceData.ts","packages/ui/src/lib/defaultExpirationOptions.ts","packages/ui/src/modal/SigninStep.tsx","packages/ui/src/modal/list/ListCheckout.tsx","packages/ui/src/modal/CurrencySelector.tsx","packages/ui/src/primitives/Select.tsx","packages/ui/src/modal/list/PriceBreakdown.tsx","packages/ui/src/primitives/Collapsible.tsx","packages/ui/src/primitives/InfoTooltip.tsx","packages/ui/src/primitives/Popover.tsx","packages/ui/src/modal/list/FloorDropdown.tsx","packages/ui/src/primitives/Dropdown.tsx","packages/ui/src/modal/bid/BidModal.tsx","packages/ui/src/primitives/DateInput.tsx","packages/ui/src/primitives/FormatWrappedCurrency.tsx","packages/ui/src/modal/bid/BidModalRenderer.tsx","packages/ui/src/constants/wrappedContractNames.ts","packages/ui/src/modal/bid/TokenInfo.tsx","packages/ui/src/hooks/useTimeSince.ts","packages/ui/src/modal/TransactionProgress.tsx","packages/ui/src/modal/bid/AttributeSelector.tsx","packages/ui/src/primitives/ScrollArea.tsx","packages/ui/src/modal/acceptBid/AcceptBidModal.tsx","packages/ui/src/modal/acceptBid/AcceptBidModalRenderer.tsx","packages/ui/src/modal/acceptBid/AcceptBidLineItem.tsx","packages/ui/src/modal/acceptBid/ApproveBidCollapsible.tsx","packages/ui/src/modal/ApproveCollapisble.tsx","packages/ui/src/primitives/Grid.tsx","packages/ui/src/modal/acceptBid/AcceptBidSummaryLineItem.tsx","packages/ui/src/modal/cancelBid/CancelBidModal.tsx","packages/ui/src/modal/cancelBid/CancelBidModalRenderer.tsx","packages/ui/src/modal/TokenPrimitive.tsx","packages/ui/src/modal/cancelListing/CancelListingModal.tsx","packages/ui/src/modal/cancelListing/CancelListingModalRenderer.tsx","packages/ui/src/modal/editBid/EditBidModal.tsx","packages/ui/src/modal/editBid/EditBidModalRenderer.tsx","packages/ui/src/modal/editListing/EditListingModal.tsx","packages/ui/src/modal/editListing/EditListingModalRenderer.tsx","packages/ui/src/primitives/PriceInput.tsx","packages/ui/src/modal/mint/MintModal.tsx","packages/ui/src/modal/mint/MintModalRenderer.tsx","packages/ui/src/modal/CurrentStepTxHashes.tsx","packages/ui/src/modal/ApprovePurchasingCollapsible.tsx","packages/ui/src/modal/TokenCheckout.tsx","packages/ui/src/modal/mint/MintImages.tsx","packages/ui/src/components/TokenMedia/index.tsx","packages/ui/src/hooks/useModelViewer.ts","packages/ui/src/components/TokenMedia/MediaPlayButton.tsx","packages/ui/src/components/TokenMedia/TokenFallback.tsx","packages/ui/src/lib/processTokenURI.ts","packages/ui/src/constants/abis.ts","packages/ui/src/modal/TokenInfo.tsx","packages/ui/src/modal/CollectionInfo.tsx","packages/ui/src/modal/PurchaseCheckout.tsx","packages/ui/src/modal/sweep/SweepModal.tsx","packages/ui/src/modal/sweep/SweepModalRenderer.tsx","packages/ui/src/modal/SelectPaymentToken.tsx","packages/ui/src/img/EthIconCircleBlue.tsx","packages/ui/src/components/cart/CartPopover.tsx","packages/ui/src/components/cart/CartItem.tsx","packages/ui/src/components/cart/CartToast.tsx","packages/ui/src/components/cart/CartPopoverRenderer.tsx","packages/ui/src/components/cart/CartCheckoutModal.tsx","packages/ui/src/components/collectButton/index.tsx","packages/ui/src/components/collectButton/CollectButtonRenderer.tsx"],"sourcesContent":["/// <reference path=\"./types/parcel.d.ts\" />\r\n\r\n//Providers\r\nexport { ReservoirKitProvider } from './ReservoirKitProvider'\r\nexport { ReservoirClientProvider } from './ReservoirClientProvider'\r\n\r\n// Hooks\r\nexport {\r\n  useCollections,\r\n  useCollectionActivity,\r\n  useUsersActivity,\r\n  useReservoirClient,\r\n  useTokens,\r\n  useSearchActivities,\r\n  useTokenActivity,\r\n  useCoinConversion,\r\n  useListings,\r\n  useOwnerListings,\r\n  useAttributes,\r\n  useBids,\r\n  useUserTokens,\r\n  useUserTopBids,\r\n  useUserCollections,\r\n  useCart,\r\n  useDynamicTokens,\r\n  useTrendingCollections,\r\n  useTrendingMints,\r\n  useCurrencyConversion,\r\n  useSolverCapacity,\r\n  useMarketplaceConfigs,\r\n} from './hooks'\r\n\r\n// Themes\r\nexport { lightTheme, darkTheme } from './themes'\r\nexport type { ReservoirKitTheme } from './themes/ReservoirKitTheme'\r\n\r\n//Components\r\nexport { BuyModal } from './modal/buy/BuyModal'\r\nexport { BuyStep } from './modal/buy/BuyModalRenderer'\r\n\r\nexport { ListModal } from './modal/list/ListModal'\r\nexport { ListStep } from './modal/list/ListModalRenderer'\r\n\r\nexport { BidModal } from './modal/bid/BidModal'\r\nexport { BidStep } from './modal/bid/BidModalRenderer'\r\n\r\nexport { AcceptBidModal } from './modal/acceptBid/AcceptBidModal'\r\nexport { AcceptBidStep } from './modal/acceptBid/AcceptBidModalRenderer'\r\n\r\nexport { CancelBidModal } from './modal/cancelBid/CancelBidModal'\r\nexport { CancelStep as CancelBidStep } from './modal/cancelBid/CancelBidModalRenderer'\r\n\r\nexport { CancelListingModal } from './modal/cancelListing/CancelListingModal'\r\nexport { CancelStep as CancelListingStep } from './modal/cancelListing/CancelListingModalRenderer'\r\n\r\nexport { EditBidModal } from './modal/editBid/EditBidModal'\r\nexport { EditBidStep } from './modal/editBid/EditBidModalRenderer'\r\n\r\nexport { EditListingModal } from './modal/editListing/EditListingModal'\r\nexport { EditListingStep } from './modal/editListing/EditListingModalRenderer'\r\n\r\nexport { MintModal } from './modal/mint/MintModal'\r\nexport { MintStep } from './modal/mint/MintModalRenderer'\r\n\r\nexport { SweepModal } from './modal/sweep/SweepModal'\r\nexport { SweepStep } from './modal/sweep/SweepModalRenderer'\r\n\r\nexport {\r\n  default as TokenMedia,\r\n  extractMediaType,\r\n} from './components/TokenMedia'\r\n\r\nexport { default as CartPopover } from './components/cart/CartPopover'\r\nexport { CartProvider } from './context/CartProvider'\r\nexport type {\r\n  Cart,\r\n  CheckoutStatus,\r\n  CheckoutTransactionError,\r\n} from './context/CartProvider'\r\n\r\nexport { CollectButton } from './components/collectButton'\r\n","import React, {\r\n  createContext,\r\n  FC,\r\n  ReactNode,\r\n  useEffect,\r\n  useState,\r\n  useRef,\r\n  ComponentPropsWithoutRef,\r\n  useCallback,\r\n} from 'react'\r\nimport {\r\n  ReservoirClientOptions,\r\n  reservoirChains,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport { ReservoirKitTheme, darkTheme } from './themes'\r\nimport { ReservoirClientProvider } from './ReservoirClientProvider'\r\nimport { SWRConfig } from 'swr'\r\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\r\n\r\nexport type CoinId = {\r\n  [key: string]: string\r\n}\r\nexport type CoinGecko = {\r\n  proxy?: string\r\n  apiKey?: string\r\n  coinIds?: CoinId\r\n}\r\n\r\ntype ReservoirKitProviderOptions = {\r\n  disablePoweredByReservoir?: boolean\r\n  disableJumperLink?: boolean\r\n  coinGecko?: CoinGecko\r\n  alwaysIncludeListingCurrency?: boolean\r\n  preferDisplayFiatTotal?: boolean\r\n}\r\nexport interface ReservoirKitProviderProps {\r\n  children: ReactNode\r\n  options?: ReservoirClientOptions & ReservoirKitProviderOptions\r\n  theme?: ReservoirKitTheme\r\n  swrOptions?: ComponentPropsWithoutRef<typeof SWRConfig>['value']\r\n}\r\n\r\nimport { createTheme, ReservoirKitThemeContext } from '../stitches.config'\r\nimport { swrDefaultOptions } from './lib/swr'\r\n\r\nexport const ThemeContext = createContext<undefined | ReservoirKitThemeContext>(\r\n  undefined\r\n)\r\nexport const ProviderOptionsContext =\r\n  createContext<ReservoirKitProviderOptions>({})\r\n\r\nconst defaultOptions = {\r\n  chains: [{ ...reservoirChains.mainnet, active: true }],\r\n}\r\n\r\nconst classNameObserverOptions = {\r\n  attributeFilter: ['class'],\r\n}\r\n\r\nimport calendarCss from './styles/calendar'\r\nimport useMutationObservable from './hooks/useMutationObservable'\r\n\r\nexport const ReservoirKitProvider: FC<ReservoirKitProviderProps> = function ({\r\n  children,\r\n  options = defaultOptions,\r\n  theme,\r\n  swrOptions = {},\r\n}: ReservoirKitProviderProps) {\r\n  const [globalTheme, setGlobalTheme] = useState<\r\n    undefined | ReservoirKitThemeContext\r\n  >()\r\n  const [providerOptions, setProviderOptions] =\r\n    useState<ReservoirKitProviderOptions>({})\r\n  const currentTheme = useRef(null as any)\r\n  const classNameCallback = useCallback(\r\n    (mutationList: MutationRecord[]) => {\r\n      mutationList.forEach((mutation) => {\r\n        const body = mutation.target as HTMLBodyElement\r\n        if (\r\n          mutation.attributeName === 'class' &&\r\n          body &&\r\n          !body.className.includes(currentTheme.current)\r\n        ) {\r\n          document.body.classList.add(currentTheme.current)\r\n        }\r\n      })\r\n    },\r\n    [currentTheme]\r\n  )\r\n\r\n  useMutationObservable(\r\n    classNameCallback,\r\n    typeof window !== 'undefined' ? document.body : null,\r\n    classNameObserverOptions\r\n  )\r\n\r\n  calendarCss()\r\n\r\n  useEffect(() => {\r\n    let newTheme = createTheme(theme ? (theme as any) : (darkTheme() as any))\r\n    let oldTheme = currentTheme.current\r\n    currentTheme.current = newTheme\r\n\r\n    document.body.classList.add(newTheme)\r\n\r\n    if (oldTheme) {\r\n      document.body.classList.remove(oldTheme)\r\n    }\r\n\r\n    setGlobalTheme(newTheme as any)\r\n  }, [JSON.stringify(theme)])\r\n\r\n  useEffect(() => {\r\n    setProviderOptions(options)\r\n  }, [options])\r\n\r\n  return (\r\n    <ThemeContext.Provider value={globalTheme}>\r\n      <TooltipPrimitive.Provider>\r\n        <ProviderOptionsContext.Provider value={providerOptions}>\r\n          <ReservoirClientProvider options={options}>\r\n            <SWRConfig value={{ ...swrDefaultOptions, ...swrOptions }}>\r\n              {children}\r\n            </SWRConfig>\r\n          </ReservoirClientProvider>\r\n        </ProviderOptionsContext.Provider>\r\n      </TooltipPrimitive.Provider>\r\n    </ThemeContext.Provider>\r\n  )\r\n}\r\n","import {\r\n  redDark,\r\n  indigoDark,\r\n  slateDark,\r\n  indigoDarkA,\r\n  blackA,\r\n  green,\r\n} from '@radix-ui/colors'\r\n\r\nimport {\r\n  ReservoirKitOverrides,\r\n  ReservoirKitTheme,\r\n  sharedThemeConfig,\r\n} from './ReservoirKitTheme'\r\n\r\nexport default function (overrides?: ReservoirKitOverrides): ReservoirKitTheme {\r\n  let sharedTheme = sharedThemeConfig(overrides)\r\n\r\n  return {\r\n    colors: {\r\n      ...redDark,\r\n      ...indigoDark,\r\n      ...indigoDarkA,\r\n      ...slateDark,\r\n      ...blackA,\r\n      ...green,\r\n\r\n      // accent colors\r\n      accentBase: '$indigo1',\r\n      accentBgSubtle: '$indigo2',\r\n      accentBg: '$indigo3',\r\n      accentBgHover: '$indigo4',\r\n      accentBgActive: '$indigo5',\r\n      accentLine: '$indigo6',\r\n      accentBorder: '$indigo7',\r\n      accentBorderHover: overrides?.primaryColor || '$indigo8',\r\n      accentSolid: overrides?.primaryColor || '$indigo9',\r\n      accentSolidHover:\r\n        overrides?.primaryHoverColor || overrides?.primaryColor || '$indigo10',\r\n      accentText: '$indigo11',\r\n      accentTextContrast: '$indigo12',\r\n\r\n      // neutral colors\r\n      neutralBase: '$slate1',\r\n      neutralBgSubtle: '$slate2',\r\n      neutralBg: '$slate3',\r\n      neutralBgHover: '$slate4',\r\n      neutralBgActive: '$slate5',\r\n      neutralLine: '$slate6',\r\n      neutralBorder: '$slate7',\r\n      neutralBorderHover: '$slate8',\r\n      neutralSolid: '$slate9',\r\n      neutralSolidHover: '$slate10',\r\n      neutralText: '$slate11',\r\n      neutralTextContrast: '$slate12',\r\n\r\n      // secondary colors\r\n      secondaryBase: '$indigoA1',\r\n      secondaryBgSubtle: '$indigoA2',\r\n      secondaryBg: '$indigoA3',\r\n      secondaryBgHover: '$indigoA4',\r\n      secondaryBgActive: '$indigoA5',\r\n      secondaryLine: '$indigoA6',\r\n      secondaryBorder: '$indigoA7',\r\n      secondaryBorderHover: '$indigoA8',\r\n      secondarySolid: '$indigoA9',\r\n      secondarySolidHover: '$indigoA10',\r\n      secondaryText: '$indigoA11',\r\n      secondaryTextContrast: '$indigoA12',\r\n\r\n      // general colors\r\n      borderColor: overrides?.borderColor || '$neutralBorder',\r\n      textColor: overrides?.textColor || '$neutralTextContrast',\r\n      focusColor: '$neutralTextContrast',\r\n      errorText: '$red12',\r\n      errorAccent: '$red10',\r\n      successAccent: '$green10',\r\n\r\n      // component colors\r\n      reservoirLogoColor: '#ECEDEE',\r\n      inputBackground: '$neutralBgHover',\r\n      buttonTextColor: overrides?.buttonTextColor || 'white',\r\n      buttonTextHoverColor: overrides?.buttonTextHoverColor || 'white',\r\n      overlayBackground: overrides?.overlayBackground || '$blackA10',\r\n      headerBackground: overrides?.headerBackground || '$neutralBgHover',\r\n      footerBackground: overrides?.footerBackground || '$neutralBg',\r\n      contentBackground: overrides?.contentBackground || '$neutralBgSubtle',\r\n      wellBackground: overrides?.wellBackground || '$neutralBase',\r\n      popoverBackground: overrides?.popoverBackground || '$neutralBgActive',\r\n    },\r\n    assets: {\r\n      ethIcon: overrides?.ethIcon || 'purple',\r\n      chainIcon: overrides?.chainIcon || 'dark',\r\n    },\r\n    ...sharedTheme,\r\n  }\r\n}\r\n","export interface ReservoirKitTheme {\r\n  radii: {\r\n    borderRadius: string\r\n  }\r\n  fonts: {\r\n    body: string\r\n    button: string\r\n    headline: string\r\n  }\r\n  colors: ReservoirKitThemeColors\r\n  assets: {\r\n    ethIcon: 'glyph' | 'gray' | 'purple'\r\n    chainIcon: 'dark' | 'light'\r\n  }\r\n}\r\n\r\nexport interface ReservoirKitThemeColors {\r\n  // accent colors\r\n  accentBase: string\r\n  accentBgSubtle: string\r\n  accentBg: string\r\n  accentBgHover: string\r\n  accentBgActive: string\r\n  accentLine: string\r\n  accentBorder: string\r\n  accentBorderHover: string\r\n  accentSolid: string\r\n  accentSolidHover: string\r\n  accentText: string\r\n  accentTextContrast: string\r\n\r\n  // neutral colors\r\n  neutralBase: string\r\n  neutralBgSubtle: string\r\n  neutralBg: string\r\n  neutralBgHover: string\r\n  neutralBgActive: string\r\n  neutralLine: string\r\n  neutralBorder: string\r\n  neutralBorderHover: string\r\n  neutralSolid: string\r\n  neutralSolidHover: string\r\n  neutralText: string\r\n  neutralTextContrast: string\r\n\r\n  // secondary colors\r\n  secondaryBase: string\r\n  secondaryBgSubtle: string\r\n  secondaryBg: string\r\n  secondaryBgHover: string\r\n  secondaryBgActive: string\r\n  secondaryLine: string\r\n  secondaryBorder: string\r\n  secondaryBorderHover: string\r\n  secondarySolid: string\r\n  secondarySolidHover: string\r\n  secondaryText: string\r\n  secondaryTextContrast: string\r\n\r\n  // general colors\r\n  borderColor: string\r\n  textColor: string\r\n  focusColor: string\r\n  errorText: string\r\n  errorAccent: string\r\n  successAccent: string\r\n\r\n  // component colors\r\n  reservoirLogoColor: string\r\n  inputBackground: string\r\n  buttonTextColor: string\r\n  buttonTextHoverColor: string\r\n  overlayBackground: string\r\n  headerBackground: string\r\n  footerBackground: string\r\n  contentBackground: string\r\n  wellBackground: string\r\n  popoverBackground: string\r\n}\r\n\r\nexport type ReservoirKitOverrides = {\r\n  borderRadius?: string\r\n  font?: string\r\n  buttonFont?: string\r\n  buttonTextColor?: string\r\n  buttonTextHoverColor?: string\r\n  headlineFont?: string\r\n  primaryColor?: string\r\n  primaryHoverColor?: string\r\n  wellBackground?: string\r\n  textColor?: string\r\n  headerBackground?: string\r\n  contentBackground?: string\r\n  footerBackground?: string\r\n  overlayBackground?: string\r\n  popoverBackground?: string\r\n  borderColor?: string\r\n  ethIcon?: ReservoirKitTheme['assets']['ethIcon']\r\n  chainIcon?: ReservoirKitTheme['assets']['chainIcon']\r\n}\r\n\r\ntype ReservoirKitSharedTheme = Pick<ReservoirKitTheme, 'fonts' | 'radii'>\r\n\r\nexport const sharedThemeConfig = (\r\n  overrides?: ReservoirKitOverrides\r\n): ReservoirKitSharedTheme => {\r\n  return {\r\n    radii: {\r\n      borderRadius: overrides?.borderRadius || '4px',\r\n    },\r\n    fonts: {\r\n      body: overrides?.font || 'sans-serif',\r\n      button: overrides?.buttonFont || overrides?.font || 'sans-serif',\r\n      headline: overrides?.headlineFont || overrides?.font || 'sans-serif',\r\n    },\r\n  }\r\n}\r\n","import React, { createContext, FC, ReactNode, useState } from 'react'\r\nimport {\r\n  ReservoirClientOptions,\r\n  ReservoirClient,\r\n  createClient,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport { version } from '../package.json'\r\nexport interface ReservoirClientProviderProps {\r\n  children: ReactNode\r\n  options: ReservoirClientOptions\r\n}\r\n\r\nexport const ReservoirClientContext = createContext<ReservoirClient | null>(\r\n  null\r\n)\r\n\r\nexport const ReservoirClientProvider: FC<ReservoirClientProviderProps> =\r\n  function ({ children, options }: ReservoirClientProviderProps) {\r\n    const [clientContext, _] = useState<ReservoirClient | null>(\r\n      createClient({ ...options, uiVersion: version })\r\n    )\r\n\r\n    return (\r\n      <ReservoirClientContext.Provider value={clientContext}>\r\n        {children}\r\n      </ReservoirClientContext.Provider>\r\n    )\r\n  }\r\n","{\r\n  \"name\": \"@sh-reservoir0x/reservoir-kit-ui\",\r\n  \"description\": \"ReservoirKit is the official frontend kit to get you started building dApps with the ReservoirProtocol.\",\r\n  \"version\": \"0.2.7-b\",\r\n  \"author\": \"Reservoir Protocol\",\r\n  \"license\": \"MIT\",\r\n  \"exports\": {\r\n    \".\": {\r\n      \"import\": \"./dist/index.mjs\",\r\n      \"require\": \"./dist/index.js\",\r\n      \"types\": \"./dist/index.d.ts\"\r\n    }\r\n  },\r\n  \"source\": \"./src/index.ts\",\r\n  \"main\": \"./dist/index.js\",\r\n  \"module\": \"./dist/index.mjs\",\r\n  \"types\": \"./dist/index.d.ts\",\r\n  \"files\": [\r\n    \"dist\"\r\n  ],\r\n  \"keywords\": [\r\n    \"nft\",\r\n    \"reservoir\",\r\n    \"reservoirkit\",\r\n    \"protocol\",\r\n    \"sdk\"\r\n  ],\r\n  \"sideEffects\": false,\r\n  \"scripts\": {\r\n    \"clean\": \"rm -rf dist\"\r\n  },\r\n  \"dependencies\": {\r\n    \"@fortawesome/fontawesome-svg-core\": \"^6.2.1\",\r\n    \"@fortawesome/free-brands-svg-icons\": \"^6.2.1\",\r\n    \"@fortawesome/free-solid-svg-icons\": \"^6.2.1\",\r\n    \"@fortawesome/react-fontawesome\": \"^0.2.0\",\r\n    \"@radix-ui/colors\": \"^0.1.8\",\r\n    \"@radix-ui/react-collapsible\": \"1.0.3\",\r\n    \"@radix-ui/react-dialog\": \"1.0.4\",\r\n    \"@radix-ui/react-dropdown-menu\": \"2.0.5\",\r\n    \"@radix-ui/react-popover\": \"1.0.6\",\r\n    \"@radix-ui/react-scroll-area\": \"1.0.4\",\r\n    \"@radix-ui/react-select\": \"1.2.2\",\r\n    \"@radix-ui/react-switch\": \"1.0.3\",\r\n    \"@radix-ui/react-toggle-group\": \"1.0.4\",\r\n    \"@radix-ui/react-tooltip\": \"1.0.6\",\r\n    \"@react-hookz/web\": \"^19.2.0\",\r\n    \"@sh-reservoir0x/reservoir-sdk\": \"0.0.3-b\",\r\n    \"@stitches/react\": \"1.3.1-1\",\r\n    \"dayjs\": \"^1.11.4\",\r\n    \"flatpickr\": \"^4.6.13\",\r\n    \"framer-motion\": \"^6.4.2\",\r\n    \"react-flatpickr\": \"^3.10.13\",\r\n    \"swr\": \"2.0.1\"\r\n  },\r\n  \"peerDependencies\": {\r\n    \"@tanstack/react-query\": \"^5.20.2\",\r\n    \"react\": \"^18.2.0\",\r\n    \"react-dom\": \"^18.2.0\",\r\n    \"viem\": \"~2.7.8\",\r\n    \"wagmi\": \"~2.5.7\"\r\n  },\r\n  \"repository\": {\r\n    \"type\": \"git\",\r\n    \"url\": \"https://github.com/aura-nw/seekhype-reservoir-ui-kit\"\r\n  }\r\n}\r\n","import { createStitches } from '@stitches/react'\r\nimport type * as Stitches from '@stitches/react'\r\nimport { ReservoirKitTheme } from './src/themes/ReservoirKitTheme'\r\n\r\nexport type CSS = Stitches.CSS<typeof config>\r\nexport type CSSProps = { css?: CSS }\r\n\r\nexport const {\r\n  createTheme,\r\n  keyframes,\r\n  styled,\r\n  globalCss,\r\n  getCssText,\r\n  theme,\r\n  config,\r\n} = createStitches({\r\n  theme: {\r\n    space: {\r\n      1: '4px',\r\n      2: '8px',\r\n      3: '12px',\r\n      4: '16px',\r\n      5: '32px',\r\n      6: '64px',\r\n    },\r\n    fontSizes: {},\r\n    fontWeights: {},\r\n    fonts: {\r\n      body: 'sans-serif',\r\n      button: '$body',\r\n    },\r\n    lineHeights: {},\r\n    letterSpacings: {},\r\n    sizes: {},\r\n    radii: {\r\n      borderRadius: 0,\r\n    },\r\n    shadows: {},\r\n    transitions: {},\r\n  },\r\n  utils: {\r\n    // MARGIN\r\n    m: (value: Stitches.PropertyValue<'margin'>) => ({\r\n      margin: value,\r\n    }),\r\n    mx: (value: Stitches.PropertyValue<'margin'>) => ({\r\n      marginLeft: value,\r\n      marginRight: value,\r\n    }),\r\n    my: (value: Stitches.PropertyValue<'margin'>) => ({\r\n      marginTop: value,\r\n      marginBottom: value,\r\n    }),\r\n    mt: (value: Stitches.PropertyValue<'margin'>) => ({\r\n      marginTop: value,\r\n    }),\r\n    mb: (value: Stitches.PropertyValue<'margin'>) => ({\r\n      marginBottom: value,\r\n    }),\r\n    ml: (value: Stitches.PropertyValue<'margin'>) => ({\r\n      marginLeft: value,\r\n    }),\r\n    mr: (value: Stitches.PropertyValue<'margin'>) => ({\r\n      marginRight: value,\r\n    }),\r\n\r\n    // PADDING\r\n    p: (value: Stitches.PropertyValue<'padding'>) => ({\r\n      padding: value,\r\n    }),\r\n    px: (value: Stitches.PropertyValue<'padding'>) => ({\r\n      paddingLeft: value,\r\n      paddingRight: value,\r\n    }),\r\n    py: (value: Stitches.PropertyValue<'padding'>) => ({\r\n      paddingTop: value,\r\n      paddingBottom: value,\r\n    }),\r\n    pt: (value: Stitches.PropertyValue<'padding'>) => ({\r\n      paddingTop: value,\r\n    }),\r\n    pb: (value: Stitches.PropertyValue<'padding'>) => ({\r\n      paddingBottom: value,\r\n    }),\r\n    pl: (value: Stitches.PropertyValue<'padding'>) => ({\r\n      paddingLeft: value,\r\n    }),\r\n    pr: (value: Stitches.PropertyValue<'padding'>) => ({\r\n      paddingRight: value,\r\n    }),\r\n    // DIMENSIONS\r\n    w: (value: Stitches.PropertyValue<'width'>) => ({\r\n      width: value,\r\n    }),\r\n    h: (value: Stitches.PropertyValue<'height'>) => ({\r\n      height: value,\r\n    }),\r\n    size: (value: Stitches.PropertyValue<'width'>) => ({\r\n      width: value,\r\n      height: value,\r\n    }),\r\n  },\r\n  media: {\r\n    bp1: '(min-width: 600px)',\r\n    bp2: '(min-width: 905px)',\r\n    bp3: '(min-width: 1240px)',\r\n    bp4: '(min-width: 1440px)',\r\n    motion: '(prefers-reduced-motion)',\r\n    hover: '(any-hover: hover)',\r\n    dark: '(prefers-color-scheme: dark)',\r\n    light: '(prefers-color-scheme: light)',\r\n  },\r\n  prefix: 'rk',\r\n})\r\n\r\nexport type ReservoirKitThemeContext = {\r\n  assets: {\r\n    ethIcon: {\r\n      value: ReservoirKitTheme['assets']['ethIcon']\r\n    }\r\n    chainIcon: {\r\n      value: ReservoirKitTheme['assets']['chainIcon']\r\n    }\r\n  }\r\n} & typeof theme\r\n","import { ComponentPropsWithoutRef } from 'react'\r\nimport { Cache, SWRConfig } from 'swr'\r\nimport { version } from '../../package.json'\r\nimport { axios } from '@sh-reservoir0x/reservoir-sdk'\r\n\r\nexport const defaultHeaders = (\r\n  apiKey?: string | null,\r\n  clientVersion?: string | null\r\n) => {\r\n  const headers: HeadersInit = {\r\n    'x-rkui-version': version,\r\n  }\r\n  if (apiKey) {\r\n    headers['x-api-key'] = apiKey\r\n  }\r\n  if (clientVersion) {\r\n    headers['x-rkc-version'] = clientVersion\r\n  }\r\n  return headers\r\n}\r\n\r\nexport const defaultFetcher = (params: string[] | string) => {\r\n  let resource\r\n  let apiKey\r\n  let clientVersion\r\n  if (Array.isArray(params)) {\r\n    resource = params[0]\r\n    apiKey = params[1]\r\n    clientVersion = params[2]\r\n  } else {\r\n    resource = params\r\n  }\r\n  const headers = defaultHeaders(apiKey, clientVersion)\r\n  return axios(resource, {\r\n    headers,\r\n  })\r\n    .then((res) => {\r\n      if (res.headers?.['deprecation'] === 'true') {\r\n        console.warn(\r\n          `Warning: API ${res.config.url} is deprecated. Stability and performance may be affected.`\r\n        )\r\n      }\r\n\r\n      return res.data\r\n    })\r\n    .catch((e) => {\r\n      throw e\r\n    })\r\n}\r\n\r\nconst CACHE_KEY = 'reservoirkit.swr.cache'\r\nconst CACHE_KEY_TTL = 'reservoirkit.swr.cache-TTL'\r\n\r\nexport const localStorageProvider = (): Cache<any> => {\r\n  let map = new Map([])\r\n  let cacheTTL: Record<string, number> = {}\r\n  try {\r\n    map =\r\n      typeof window !== 'undefined'\r\n        ? new Map(JSON.parse(localStorage.getItem(CACHE_KEY) || '[]'))\r\n        : new Map([])\r\n    cacheTTL =\r\n      typeof window !== 'undefined'\r\n        ? JSON.parse(localStorage.getItem(CACHE_KEY_TTL) || '{}')\r\n        : {}\r\n    for (let key in cacheTTL) {\r\n      const ttl: number = cacheTTL[key]\r\n      const response = map.get(key) as any\r\n      let purge = false\r\n\r\n      if (Date.now() >= ttl) {\r\n        purge = true\r\n      } else if (\r\n        response.value &&\r\n        response.data &&\r\n        response.data.some((data: any) => !data)\r\n      ) {\r\n        purge = true\r\n      }\r\n\r\n      if (purge) {\r\n        map.delete(key)\r\n        delete cacheTTL[key]\r\n      }\r\n    }\r\n  } catch (e) {\r\n    console.warn('Failed to rehydrate SWR cache')\r\n  }\r\n\r\n  //Handlers to set TTL:\r\n  const mapSet = map.set.bind(map)\r\n  map.set = (key: unknown, value: unknown) => {\r\n    const url = key as string\r\n    const coingeckoCoinsApi = '/api/v3/coins/list'\r\n    if (url.includes(coingeckoCoinsApi)) {\r\n      cacheTTL[url] = Date.now() + 7200000 //2hr\r\n    } else {\r\n      cacheTTL[url] = Date.now() + 60000 * 5 //5m\r\n    }\r\n    return mapSet(key, value)\r\n  }\r\n\r\n  // Before unloading the app, we write back all the data into `localStorage`.\r\n  if (typeof window !== 'undefined') {\r\n    //Allowlist of all domains or urls we want to cache locally\r\n    window.addEventListener('beforeunload', () => {\r\n      const cachedApis = [\r\n        'api.coingecko.com',\r\n        '/api/v3/coins/list',\r\n        '/api/v3/coins/markets',\r\n        '/currencies/conversion/v',\r\n      ]\r\n      for (let url of map.keys()) {\r\n        if (\r\n          !cachedApis.some((cachedApi) => (url as string).includes(cachedApi))\r\n        ) {\r\n          map.delete(url)\r\n        }\r\n      }\r\n      const appCache = JSON.stringify(Array.from(map.entries()))\r\n      localStorage.setItem(CACHE_KEY_TTL, JSON.stringify(cacheTTL))\r\n      localStorage.setItem(CACHE_KEY, appCache)\r\n    })\r\n  }\r\n\r\n  // We still use the map for write & read for performance.\r\n  return map as Cache<any>\r\n}\r\n\r\nexport const swrDefaultOptions: ComponentPropsWithoutRef<\r\n  typeof SWRConfig\r\n>['value'] = {\r\n  fetcher: defaultFetcher,\r\n  revalidateOnFocus: false,\r\n  provider: localStorageProvider,\r\n}\r\n","import { globalCss, keyframes } from '../../stitches.config'\r\n\r\nconst fpFadeInDown = keyframes({\r\n  '0%': {\r\n    opacity: 0,\r\n    transform: 'translate3d(0, -20px, 0)',\r\n  },\r\n  '100%': {\r\n    opacity: 1,\r\n    transform: 'translate3d(0, 0, 0)',\r\n  },\r\n})\r\n\r\nconst calendarCss = globalCss({\r\n  '.flatpickr-calendar': {\r\n    opacity: 0,\r\n    display: 'none',\r\n    textAlign: 'center',\r\n    visibility: 'hidden',\r\n    padding: 20,\r\n    animation: 'none',\r\n    direction: 'ltr',\r\n    fontSize: 14,\r\n    lineHeight: '24px',\r\n    borderRadius: 5,\r\n    position: 'absolute',\r\n    boxSizing: 'border-box',\r\n    touchAction: 'manipulation',\r\n    backgroundColor: '$contentBackground',\r\n    boxShadow:\r\n      '1px 0 0 #20222c, -1px 0 0 #20222c, 0 1px 0 #20222c, 0 -1px 0 #20222c, 0 3px 13px rgba(0,0,0,0.08)',\r\n    border: '1px solid $borderColor',\r\n    fontFamily: '$body',\r\n  },\r\n  '.flatpickr-calendar.open': {\r\n    opacity: 1,\r\n    maxHeight: 640,\r\n    visibility: 'visible',\r\n    display: 'inline-block',\r\n    zIndex: 99999,\r\n    pointerEvents: 'all',\r\n  },\r\n  '.flatpickr-calendar.inline': {\r\n    opacity: 1,\r\n    maxHeight: 640,\r\n    visibility: 'visible',\r\n    display: 'block',\r\n    position: 'relative',\r\n    top: 2,\r\n  },\r\n  '.flatpickr-calendar.animate.open': {\r\n    animation: `${fpFadeInDown} 300ms cubic-bezier(0.23, 1, 0.32, 1)`,\r\n  },\r\n  '.flatpickr-calendar.static': {\r\n    position: 'absolute',\r\n    top: 'calc(100% + 2px)',\r\n  },\r\n  '.flatpickr-calendar.static.open': {\r\n    zIndex: 999,\r\n    display: 'block',\r\n  },\r\n  '.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7)':\r\n    {\r\n      boxShadow: 'none !important',\r\n    },\r\n  '.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1)':\r\n    {\r\n      boxShadow: '-2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6',\r\n    },\r\n  '.flatpickr-calendar .hasWeeks .dayContainer': {\r\n    borderBottom: 0,\r\n    borderBottomRightRadius: 0,\r\n    borderBottomLeftRadius: 0,\r\n    borderLeft: 0,\r\n  },\r\n  '.flatpickr-calendar .hasTime .dayContainer': {\r\n    borderBottom: 0,\r\n    borderBottomRightRadius: 0,\r\n    borderBottomLeftRadius: 0,\r\n  },\r\n  '.flatpickr-calendar.hasTime .flatpickr-time': {\r\n    height: 40,\r\n  },\r\n  '.flatpickr-calendar.noCalendar.hasTime .flatpickr-time': {\r\n    height: 'auto',\r\n  },\r\n  '.flatpickr-calendar:before': {\r\n    position: 'absolute',\r\n    display: 'block',\r\n    pointerEvents: 'none',\r\n    border: 'solid transparent',\r\n    content: '',\r\n    height: 0,\r\n    width: 0,\r\n    left: 22,\r\n    borderWidth: 5,\r\n    margin: '0 -5px',\r\n  },\r\n  '.flatpickr-calendar:after': {\r\n    position: 'absolute',\r\n    display: 'block',\r\n    pointerEvents: 'none',\r\n    border: 'solid transparent',\r\n    content: '',\r\n    height: 0,\r\n    width: 0,\r\n    left: 22,\r\n    borderWidth: 4,\r\n    margin: '0 -4px',\r\n  },\r\n  '.flatpickr-calendar.rightMost:before, .flatpickr-calendar.arrowRight:before, .flatpickr-calendar.rightMost:after, .flatpickr-calendar.arrowRight:after':\r\n    {\r\n      left: 'auto',\r\n      right: 22,\r\n    },\r\n  '.flatpickr-calendar.arrowCenter:before, .flatpickr-calendar.arrowCenter:after':\r\n    {\r\n      left: '50%',\r\n      right: '50%',\r\n    },\r\n  '.flatpickr-calendar.arrowTop:before, .flatpickr-calendar.arrowTop:after': {\r\n    bottom: '100%',\r\n  },\r\n  '.flatpickr-calendar.arrowTop:before': {\r\n    display: 'none',\r\n  },\r\n  '.flatpickr-calendar.arrowTop:after': {\r\n    display: 'none',\r\n  },\r\n  '.flatpickr-calendar.arrowBottom:before, .flatpickr-calendar.arrowBottom:after':\r\n    {\r\n      top: '100%',\r\n    },\r\n  '.flatpickr-calendar.arrowBottom:before': {\r\n    display: 'none',\r\n  },\r\n  '.flatpickr-calendar.arrowBottom:after': {\r\n    display: 'none',\r\n  },\r\n  '.flatpickr-calendar:focus': {\r\n    outline: 0,\r\n  },\r\n  '.flatpickr-wrapper': {\r\n    position: 'relative',\r\n    display: 'inline-block',\r\n  },\r\n  '.flatpickr-months': {\r\n    display: 'flex',\r\n  },\r\n  '.flatpickr-months .flatpickr-month': {\r\n    backgroundColor: '$contentBackground',\r\n    color: '$neutralTextContrast',\r\n    fill: '$neutralTextContrast',\r\n    height: 34,\r\n    lineHeight: '1px',\r\n    textAlign: 'center',\r\n    position: 'relative',\r\n    userSelect: 'none',\r\n    overflow: 'hidden',\r\n    flex: 1,\r\n    marginBottom: 8,\r\n  },\r\n  '.flatpickr-months .flatpickr-prev-month, .flatpickr-months .flatpickr-next-month':\r\n    {\r\n      userSelect: 'none',\r\n      textDecoration: 'none',\r\n      cursor: 'pointer',\r\n      position: 'absolute',\r\n      top: 20,\r\n      height: 34,\r\n      padding: 10,\r\n      zIndex: 3,\r\n      color: '$neutralText',\r\n      fill: '$neutralText',\r\n    },\r\n  '.flatpickr-months .flatpickr-prev-month.flatpickr-disabled, .flatpickr-months .flatpickr-next-month.flatpickr-disabled':\r\n    {\r\n      display: 'none',\r\n    },\r\n  '.flatpickr-months .flatpickr-prev-month i, .flatpickr-months .flatpickr-next-month i':\r\n    {\r\n      position: 'relative',\r\n    },\r\n  '.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month, .flatpickr-months .flatpickr-next-month.flatpickr-prev-month':\r\n    {\r\n      left: 0,\r\n    },\r\n  '.flatpickr-months .flatpickr-prev-month.flatpickr-next-month, .flatpickr-months .flatpickr-next-month.flatpickr-next-month':\r\n    {\r\n      right: 0,\r\n    },\r\n  '.flatpickr-months .flatpickr-prev-month:hover, .flatpickr-months .flatpickr-next-month:hover':\r\n    {\r\n      color: '$neutralText',\r\n    },\r\n  '.flatpickr-months .flatpickr-prev-month:hover svg, .flatpickr-months .flatpickr-next-month:hover svg':\r\n    {\r\n      fill: '$neutralTextContrast',\r\n    },\r\n  '.flatpickr-months .flatpickr-prev-month svg, .flatpickr-months .flatpickr-next-month svg':\r\n    {\r\n      width: 14,\r\n      height: 14,\r\n    },\r\n  '.flatpickr-months .flatpickr-prev-month svg path, .flatpickr-months .flatpickr-next-month svg path':\r\n    {\r\n      transition: 'fill 0.1s',\r\n      fill: 'inherit',\r\n    },\r\n  '.numInputWrapper': {\r\n    position: 'relative',\r\n    height: 'auto',\r\n  },\r\n  '.numInputWrapper input, .numInputWrapper span': {\r\n    display: 'inline-block',\r\n  },\r\n  '.numInputWrapper input': {\r\n    width: '100%',\r\n  },\r\n  '.numInputWrapper input::-ms-clear': {\r\n    display: 'none',\r\n  },\r\n  '.numInputWrapper input::-webkit-outer-spin-button, .numInputWrapper input::-webkit-inner-spin-button':\r\n    {\r\n      margin: 0,\r\n      '-webkit-appearance': 'none',\r\n    },\r\n  '.numInputWrapper span': {\r\n    position: 'absolute',\r\n    right: 0,\r\n    width: 14,\r\n    padding: '0 4px 0 2px',\r\n    height: '50%',\r\n    lineHeight: '50%',\r\n    opacity: 0,\r\n    cursor: 'pointer',\r\n    boxSizing: 'border-box',\r\n  },\r\n  '.numInputWrapper span:hover': {\r\n    background: '$neutralBgHover',\r\n  },\r\n  '.numInputWrapper span:active': {\r\n    background: '$neutralBgActive',\r\n  },\r\n  '.numInputWrapper span:after': {\r\n    display: 'block',\r\n    content: '',\r\n    position: 'absolute',\r\n  },\r\n  '.numInputWrapper span.arrowUp': {\r\n    top: 0,\r\n    borderBottom: 0,\r\n  },\r\n  '.numInputWrapper span.arrowUp:after': {\r\n    borderLeft: '4px solid transparent',\r\n    borderRight: '4px solid transparent',\r\n    borderBottom: '4px solid $neutralText',\r\n    top: '26%',\r\n  },\r\n  '.numInputWrapper span.arrowDown': {\r\n    top: '50%',\r\n  },\r\n  '.numInputWrapper span.arrowDown:after': {\r\n    borderLeft: '4px solid transparent',\r\n    borderRight: '4px solid transparent',\r\n    borderTop: '4px solid $neutralText',\r\n    top: '40%',\r\n  },\r\n  '.numInputWrapper span svg': {\r\n    width: 'inherit',\r\n    height: 'auto',\r\n  },\r\n  '.numInputWrapper span svg path': {\r\n    fill: '$neutralBgHover',\r\n  },\r\n  '.numInputWrapper:hover': {\r\n    background: '$neutralBgHover',\r\n  },\r\n  '.numInputWrapper:hover span': {\r\n    opacity: 1,\r\n  },\r\n  '.flatpickr-current-month': {\r\n    fontSize: '135%',\r\n    fontWeight: 300,\r\n    color: '$neutralText',\r\n    position: 'absolute',\r\n    width: '83%',\r\n    left: '12.5%',\r\n    lineHeight: '1px',\r\n    height: 34,\r\n    display: 'flex',\r\n    alignItems: 'center',\r\n    gap: 12,\r\n    textAlign: 'center',\r\n    transform: 'translate3d(0px, 0px, 0px)',\r\n  },\r\n  '.flatpickr-current-month span.cur-month': {\r\n    fontFamily: 'inherit',\r\n    fontWeight: 700,\r\n    color: '$neutralText',\r\n    display: 'inline-block',\r\n    marginLeft: '0.5ch',\r\n    padding: 0,\r\n  },\r\n  '.flatpickr-current-month span.cur-month:hover': {\r\n    background: 'rgba(192,187,167,0.05)',\r\n  },\r\n  '.flatpickr-current-month .numInputWrapper': {\r\n    width: '7ch\\0',\r\n    display: 'inline-block',\r\n  },\r\n  '.flatpickr-current-month .numInputWrapper span.arrowUp:after': {\r\n    borderBottomColor: '$neutralText',\r\n  },\r\n  '.flatpickr-current-month .numInputWrapper span.arrowDown:after': {\r\n    borderTopColor: '$neutralText',\r\n  },\r\n  '.flatpickr-current-month input.cur-year': {\r\n    backgroundColor: 'transparent',\r\n    boxSizing: 'border-box',\r\n    color: '$neutralText',\r\n    cursor: 'text',\r\n    margin: 0,\r\n    display: 'inline-block',\r\n    fontSize: 'inherit',\r\n    fontFamily: 'inherit',\r\n    lineHeight: 'inherit',\r\n    height: 'auto',\r\n    border: 0,\r\n    borderRadius: 0,\r\n    verticalAlign: 'initial',\r\n    appearance: 'textfield',\r\n    padding: '4px 0px',\r\n  },\r\n  '.flatpickr-current-month input.cur-year:focus': {\r\n    outline: 0,\r\n  },\r\n  '.flatpickr-current-month input.cur-year[disabled], .flatpickr-current-month input.cur-year[disabled]:hover':\r\n    {\r\n      fontSize: '100%',\r\n      color: '$neutralText',\r\n      background: 'transparent',\r\n      pointerEvents: 'none',\r\n    },\r\n  '.flatpickr-current-month .flatpickr-monthDropdown-months': {\r\n    appearance: 'menulist',\r\n    backgroundColor: 'transparent',\r\n    border: 'none',\r\n    borderRadius: 0,\r\n    boxSizing: 'border-box',\r\n    color: '$neutralText',\r\n    cursor: 'pointer',\r\n    fontSize: 'inherit',\r\n    fontFamily: 'inherit',\r\n    height: 'auto',\r\n    lineHeight: 'inherit',\r\n    outline: 'none',\r\n    position: 'relative',\r\n    verticalAlign: 'initial',\r\n    width: 'auto',\r\n    padding: '4px 8px',\r\n  },\r\n  '.flatpickr-current-month .flatpickr-monthDropdown-months:focus, .flatpickr-current-month .flatpickr-monthDropdown-months:active':\r\n    {\r\n      outline: 'none',\r\n    },\r\n  '.flatpickr-current-month .flatpickr-monthDropdown-months:hover': {\r\n    backgroundColor: '$neutralBgHover',\r\n  },\r\n  '.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month':\r\n    {\r\n      backgroundColor: '$neutralBg',\r\n      outline: 'none',\r\n      padding: 0,\r\n    },\r\n  '.flatpickr-weekdays': {\r\n    backgroundColor: 'transparent',\r\n    color: '$neutralText',\r\n    textAlign: 'center',\r\n    overflow: 'hidden',\r\n    width: '100%',\r\n    display: 'flex',\r\n    alignItems: 'center',\r\n    height: 28,\r\n    border: 'transparent',\r\n    marginBottom: 8,\r\n  },\r\n  '.flatpickr-weekdays .flatpickr-weekdaycontainer': {\r\n    display: 'flex',\r\n    flex: 1,\r\n  },\r\n  'span.flatpickr-weekday': {\r\n    cursor: 'default',\r\n    fontSize: '90%',\r\n    background: 'transparent',\r\n    color: '$neutralText',\r\n    lineHeight: '1px',\r\n    margin: 0,\r\n    textAlign: 'center',\r\n    display: 'block',\r\n    flex: 1,\r\n    fontWeight: 'bolder',\r\n  },\r\n  '.dayContainer, .flatpickr-weeks': {\r\n    padding: '1px 0 0 0',\r\n  },\r\n  '.flatpickr-days': {\r\n    position: 'relative',\r\n    overflow: 'hidden',\r\n    display: 'flex',\r\n    alignItems: 'flex-start',\r\n    width: 307.875,\r\n    marginBottom: 12,\r\n  },\r\n  '.flatpickr-days:focus': {\r\n    outline: 0,\r\n  },\r\n  '.dayContainer': {\r\n    padding: 0,\r\n    outline: 0,\r\n    textAlign: 'left',\r\n    width: 307.875,\r\n    minWidth: 307.875,\r\n    maxWidth: 307.875,\r\n    boxSizing: 'border-box',\r\n    display: 'flex',\r\n    flexWrap: 'wrap',\r\n    '-ms-flex-pack': 'justify',\r\n    justifyContent: 'space-around',\r\n    transform: 'translate3d(0px, 0px, 0px)',\r\n    opacity: 1,\r\n  },\r\n  '.dayContainer + .dayContainer': {\r\n    boxShadow: '-1px 0 0 #20222c',\r\n  },\r\n  '.flatpickr-day': {\r\n    background: 'none',\r\n    border: '1px solid transparent',\r\n    borderRadius: 150,\r\n    boxSizing: 'border-box',\r\n    color: '$neutralText',\r\n    cursor: 'pointer',\r\n    fontWeight: 400,\r\n    width: '14.2857143%',\r\n    flexBasis: '14.2857143%',\r\n    maxWidth: 39,\r\n    height: 39,\r\n    lineHeight: '39px',\r\n    margin: 0,\r\n    display: 'inline-block',\r\n    position: 'relative',\r\n    '-webkit-box-pack': 'center',\r\n    '-ms-flex-pack': 'center',\r\n    justifyContent: 'center',\r\n    textAlign: 'center',\r\n  },\r\n  '.flatpickr-day.inRange, .flatpickr-day.prevMonthDay.inRange, .flatpickr-day.nextMonthDay.inRange, .flatpickr-day.today.inRange, .flatpickr-day.prevMonthDay.today.inRange, .flatpickr-day.nextMonthDay.today.inRange, .flatpickr-day:hover, .flatpickr-day.prevMonthDay:hover, .flatpickr-day.nextMonthDay:hover, .flatpickr-day:focus, .flatpickr-day.prevMonthDay:focus, .flatpickr-day.nextMonthDay:focus':\r\n    {\r\n      cursor: 'pointer',\r\n      outline: 0,\r\n      backgroundColor: '$accentBg',\r\n      borderColor: '$neutralBorder',\r\n    },\r\n  '.flatpickr-day.today': {\r\n    borderColor: '$neutralBorder',\r\n  },\r\n  '.flatpickr-day.today:hover, .flatpickr-day.today:focus': {\r\n    borderColor: '$neutralBorder',\r\n    backgroundColor: '$neutralBg',\r\n    color: '$buttonTextColor',\r\n  },\r\n  '.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay':\r\n    {\r\n      backgroundColor: '$accentBg',\r\n      boxShadow: 'none',\r\n      color: '$neutralTextContrast',\r\n      borderColor: '$borderColor',\r\n    },\r\n  '.flatpickr-day.selected.startRange, .flatpickr-day.startRange.startRange, .flatpickr-day.endRange.startRange':\r\n    {\r\n      borderRadius: '50px 0 0 50px',\r\n    },\r\n  '.flatpickr-day.selected.endRange, .flatpickr-day.startRange.endRange, .flatpickr-day.endRange.endRange':\r\n    {\r\n      borderRadius: '0 50px 50px 0',\r\n    },\r\n  '.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)), .flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)), .flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1))':\r\n    {\r\n      boxShadow: '-10px 0 0 #80cbc4',\r\n    },\r\n  '.flatpickr-day.selected.startRange.endRange, .flatpickr-day.startRange.startRange.endRange, .flatpickr-day.endRange.startRange.endRange':\r\n    {\r\n      borderRadius: 50,\r\n    },\r\n  '.flatpickr-day.inRange': {\r\n    borderRadius: 0,\r\n    boxShadow: '-5px 0 0 #646c8c, 5px 0 0 #646c8c',\r\n  },\r\n  '.flatpickr-day.flatpickr-disabled, .flatpickr-day.flatpickr-disabled:hover, .flatpickr-day.prevMonthDay, .flatpickr-day.nextMonthDay, .flatpickr-day.notAllowed, .flatpickr-day.notAllowed.prevMonthDay, .flatpickr-day.notAllowed.nextMonthDay':\r\n    {\r\n      color: '$neutralText',\r\n      background: 'transparent',\r\n      borderColor: 'transparent',\r\n      cursor: 'default',\r\n    },\r\n  '.flatpickr-day.flatpickr-disabled, .flatpickr-day.flatpickr-disabled:hover':\r\n    {\r\n      cursor: 'not-allowed',\r\n      color: '$neutralText',\r\n      opacity: 0.5,\r\n    },\r\n  '.flatpickr-day.week.selected': {\r\n    borderRadius: 0,\r\n    boxShadow: '-5px 0 0 #80cbc4, 5px 0 0 #80cbc4',\r\n  },\r\n  '.flatpickr-day.hidden': {\r\n    visibility: 'hidden',\r\n  },\r\n  '.rangeMode .flatpickr-day': {\r\n    marginTop: 1,\r\n  },\r\n  '.flatpickr-weekwrapper': {\r\n    float: 'left',\r\n  },\r\n  '.flatpickr-weekwrapper .flatpickr-weeks': {\r\n    padding: '0 12px',\r\n    boxShadow: '1px 0 0 #20222c',\r\n  },\r\n  '.flatpickr-weekwrapper .flatpickr-weekday': {\r\n    float: 'none',\r\n    width: '100%',\r\n    lineHeight: '28px',\r\n  },\r\n  '.flatpickr-weekwrapper span.flatpickr-day, .flatpickr-weekwrapper span.flatpickr-day:hover':\r\n    {\r\n      display: 'block',\r\n      width: '100%',\r\n      maxWidth: 'none',\r\n      color: '$neutralText',\r\n      background: 'transparent',\r\n      cursor: 'default',\r\n      border: 'none',\r\n    },\r\n  '.flatpickr-innerContainer': {\r\n    display: 'flex',\r\n    boxSizing: 'border-box',\r\n    overflow: 'hidden',\r\n  },\r\n  '.flatpickr-rContainer': {\r\n    display: 'inline-block',\r\n    padding: 0,\r\n    boxSizing: 'border-box',\r\n  },\r\n  '.flatpickr-time': {\r\n    textAlign: 'center',\r\n    outline: 0,\r\n    height: 0,\r\n    lineHeight: '40px',\r\n    maxHeight: 40,\r\n    boxSizing: 'border-box',\r\n    overflow: 'hidden',\r\n    display: 'flex',\r\n  },\r\n  '.flatpickr-time:after': {\r\n    content: '',\r\n    display: 'table',\r\n    clear: 'both',\r\n  },\r\n  '.flatpickr-time .numInputWrapper': {\r\n    flex: 1,\r\n    width: '40%',\r\n    height: 40,\r\n    float: 'left',\r\n  },\r\n  '.flatpickr-time .numInputWrapper span.arrowUp:after': {\r\n    borderBottomColor: '$neutralText',\r\n  },\r\n  '.flatpickr-time .numInputWrapper span.arrowDown:after': {\r\n    borderTopColor: '$neutralText',\r\n  },\r\n  '.flatpickr-time.hasSeconds .numInputWrapper': {\r\n    width: '26%',\r\n  },\r\n  '.flatpickr-time.time24hr .numInputWrapper': {\r\n    width: '49%',\r\n  },\r\n  '.flatpickr-time input': {\r\n    background: 'transparent',\r\n    boxShadow: 'none',\r\n    border: 0,\r\n    borderRadius: 0,\r\n    textAlign: 'center',\r\n    margin: 0,\r\n    padding: 0,\r\n    height: 'inherit',\r\n    lineHeight: 'inherit',\r\n    color: '$neutralText',\r\n    fontSize: 14,\r\n    position: 'relative',\r\n    boxSizing: 'border-box',\r\n    appearance: 'textfield',\r\n  },\r\n  '.flatpickr-time input.flatpickr-hour': {},\r\n  '.flatpickr-time input.flatpickr-minute, .flatpickr-time input.flatpickr-second':\r\n    {\r\n      fontWeight: 400,\r\n    },\r\n  '.flatpickr-time input:focus': {\r\n    outline: 0,\r\n    border: 0,\r\n  },\r\n  '.flatpickr-time .flatpickr-time-separator, .flatpickr-time .flatpickr-am-pm':\r\n    {\r\n      height: 'inherit',\r\n      float: 'left',\r\n      lineHeight: 'inherit',\r\n      color: '$neutralText',\r\n      fontWeight: 'bold',\r\n      width: '2%',\r\n      userSelect: 'none',\r\n      '-ms-flex-item-align': 'center',\r\n      alignSelf: 'center',\r\n    },\r\n  '.flatpickr-time .flatpickr-am-pm': {\r\n    outline: 0,\r\n    width: '18%',\r\n    cursor: 'pointer',\r\n    textAlign: 'center',\r\n    fontWeight: 400,\r\n  },\r\n  '.flatpickr-time input:hover, .flatpickr-time .flatpickr-am-pm:hover, .flatpickr-time input:focus, .flatpickr-time .flatpickr-am-pm:focus':\r\n    {\r\n      background: '$neutralBgHover',\r\n    },\r\n  '.flatpickr-input[readonly]': {\r\n    cursor: 'pointer',\r\n  },\r\n  '.flatpickr-input.flatpickr-mobile': {\r\n    '&::-webkit-inner-spin-button': {\r\n      display: 'none',\r\n      '-webkit-appearance': 'none',\r\n    },\r\n    '&::-webkit-calendar-picker-indicator': {\r\n      position: 'absolute',\r\n      left: 0,\r\n      top: 0,\r\n      width: '100%',\r\n      height: '100%',\r\n      backgroundImage: 'none',\r\n    },\r\n    '&::-webkit-datetime-edit': {\r\n      display: 'none',\r\n      '-webkit-appearance': 'none',\r\n    },\r\n    '&::-webkit-date-and-time-value': {\r\n      display: 'none',\r\n      '-webkit-appearance': 'none',\r\n    },\r\n  },\r\n  '@-moz-document url-prefix()': {\r\n    '@media only screen and (max-width: 600px)': {\r\n      '.flatpickr-input[type=\"text\"]': {\r\n        color: 'transparent',\r\n      },\r\n    },\r\n  },\r\n})\r\n\r\nexport default calendarCss\r\n","import { useEffect, useState } from 'react'\r\n\r\nconst useMutationObservable = (\r\n  callback: MutationCallback,\r\n  el?: HTMLElement | null,\r\n  options?: MutationObserverInit\r\n) => {\r\n  const [observer, setObserver] = useState<MutationObserver | null>(null)\r\n\r\n  useEffect(() => {\r\n    if (observer) {\r\n      observer.disconnect()\r\n    }\r\n    if (\r\n      !el ||\r\n      typeof window === 'undefined' ||\r\n      !('MutationObserver' in window)\r\n    ) {\r\n      return\r\n    }\r\n\r\n    const obs = new MutationObserver(callback)\r\n    obs.observe(el, options)\r\n    setObserver(obs)\r\n\r\n    return () => {\r\n      obs.disconnect()\r\n    }\r\n  }, [el, callback, options])\r\n\r\n  return observer\r\n}\r\n\r\nexport default useMutationObservable\r\n","import { paths } from '@sh-reservoir0x/reservoir-sdk'\r\nimport useSWR, { SWRConfiguration } from 'swr'\r\nimport useReservoirClient from './useReservoirClient'\r\n\r\ntype AttributesResponse =\r\n  paths['/collections/{collection}/attributes/all/v4']['get']['responses']['200']['schema']\r\n\r\nexport default function (\r\n  collection?: string | undefined,\r\n  chainId?: number,\r\n  swrOptions: SWRConfiguration = {}\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const pathname = `${chain?.baseApiUrl}/collections/${collection}/attributes/all/v4`\r\n\r\n  const path = collection ? new URL(pathname) : null\r\n\r\n  const { data, mutate, error, isValidating } = useSWR<AttributesResponse>(\r\n    path ? [path.href, client?.apiKey, client?.version] : null,\r\n    null,\r\n    {\r\n      revalidateOnMount: true,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n  const collections: AttributesResponse['attributes'] | null =\r\n    data && data.attributes ? data.attributes : null\r\n\r\n  return { response: data, data: collections, mutate, error, isValidating }\r\n}\r\n","import { ReservoirClientContext } from '../ReservoirClientProvider'\r\nimport { useContext } from 'react'\r\n\r\nexport default function () {\r\n  return useContext(ReservoirClientContext)\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\nimport { useInfiniteApi, useReservoirClient } from './'\r\nimport { useMemo } from 'react'\r\n\r\ntype Bids = paths['/orders/bids/v6']['get']['responses']['200']['schema']\r\ntype BidsQuery = paths['/orders/bids/v6']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  options: BidsQuery,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  enabled: boolean = true,\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n\r\n  const response = useInfiniteApi<Bids>(\r\n    (pageIndex, previousPageData) => {\r\n      if (!enabled) {\r\n        return null\r\n      }\r\n\r\n      const chain =\r\n        chainId !== undefined\r\n          ? client?.chains.find((chain) => chain.id === chainId)\r\n          : client?.currentChain()\r\n\r\n      const url = new URL(`${chain?.baseApiUrl || ''}/orders/bids/v6`)\r\n      let query = options || {}\r\n\r\n      if (\r\n        query.normalizeRoyalties === undefined &&\r\n        client?.normalizeRoyalties !== undefined\r\n      ) {\r\n        query.normalizeRoyalties = client?.normalizeRoyalties\r\n      }\r\n\r\n      if (previousPageData && !previousPageData.continuation) {\r\n        return null\r\n      } else if (previousPageData && pageIndex > 0) {\r\n        query.continuation = previousPageData.continuation\r\n      }\r\n\r\n      setParams(url, query)\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n\r\n  const bids = useMemo(\r\n    () => response.data?.flatMap((page) => page.orders || []) ?? [],\r\n    [response.data]\r\n  )\r\n\r\n  return {\r\n    ...response,\r\n    data: bids,\r\n  }\r\n}\r\n","import { useState } from 'react'\r\nimport { useSWRConfig } from 'swr'\r\nimport useSWRInfinite from 'swr/infinite'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\n\r\ntype SWRInfiniteParams = Parameters<typeof useSWRInfinite>\r\n\r\nexport default function <ResponseType>(\r\n  getKey: SWRInfiniteParams['0'],\r\n  options: SWRInfiniteConfiguration,\r\n  limit?: number\r\n) {\r\n  const { mutate: globalMutate } = useSWRConfig()\r\n  const [keys, setKeys] = useState<string[]>([])\r\n  const response = useSWRInfinite<ResponseType>(\r\n    (pageIndex, previousPageData) => {\r\n      const params = getKey(pageIndex, previousPageData)\r\n      const key = params && params[0] ? params[0] : null\r\n      if (key && !keys.includes(key)) {\r\n        setKeys([...keys, key])\r\n      }\r\n      return params\r\n    },\r\n    null,\r\n    options\r\n  )\r\n\r\n  const { size, error, setSize, mutate } = response\r\n  const data = response.data as any\r\n  let hasNextPage: boolean\r\n  if (limit !== undefined) {\r\n    hasNextPage =\r\n      size === 0 || Boolean(data?.[size - 1]?.collections?.length === limit)\r\n  } else {\r\n    hasNextPage = size === 0 || Boolean(data?.[size - 1]?.continuation)\r\n  }\r\n  const isFetchingInitialData = !data && !error && size > 0\r\n  const isFetchingPage =\r\n    size > 0 &&\r\n    (isFetchingInitialData || (data && typeof data[size - 1] === 'undefined'))\r\n\r\n  const fetchNextPage = () => {\r\n    if (!isFetchingPage && hasNextPage) {\r\n      setSize((size) => size + 1)\r\n    }\r\n  }\r\n\r\n  const resetCache = () => {\r\n    setSize(0)\r\n    return mutate(undefined, {\r\n      revalidate: false,\r\n    }).then(() => {\r\n      globalMutate(\r\n        (key) => {\r\n          const url = key && key[0] ? key[0] : null\r\n          if (url) {\r\n            return keys.includes(url)\r\n          }\r\n          return false\r\n        },\r\n        undefined,\r\n        false\r\n      ).then(() => {\r\n        setKeys([])\r\n      })\r\n    })\r\n  }\r\n\r\n  return {\r\n    ...response,\r\n    hasNextPage,\r\n    isFetchingInitialData,\r\n    isFetchingPage,\r\n    resetCache,\r\n    fetchNextPage,\r\n  }\r\n}\r\n","import { Cart, CartContext } from '../context/CartProvider'\r\nimport { useContext, useSyncExternalStore } from 'react'\r\n\r\nexport default function useCart<SelectorOutput>(\r\n  selector: (store: Cart) => SelectorOutput\r\n) {\r\n  const cart = useContext(CartContext)\r\n  if (!cart) {\r\n    throw new Error('Cart not found')\r\n  }\r\n\r\n  const data = useSyncExternalStore(\r\n    cart.subscribe,\r\n    () => selector(cart.get()),\r\n    () => selector(cart.get())\r\n  )\r\n  const {\r\n    clear,\r\n    remove,\r\n    add,\r\n    validate,\r\n    checkout,\r\n    clearTransaction,\r\n    setQuantity,\r\n  } = cart\r\n\r\n  return {\r\n    data,\r\n    clear,\r\n    clearTransaction,\r\n    setQuantity,\r\n    remove,\r\n    add,\r\n    validate,\r\n    checkout,\r\n    set: cart.set,\r\n  }\r\n}\r\n","import {\r\n  Execute,\r\n  LogLevel,\r\n  ReservoirChain,\r\n  ReservoirClientActions,\r\n  ReservoirWallet,\r\n  paths,\r\n  setParams,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport {\r\n  useCurrencyConversion,\r\n  useListings,\r\n  useReservoirClient,\r\n  useTokens,\r\n} from '../hooks'\r\nimport { useChainCurrency } from '../hooks/index'\r\nimport { defaultFetcher } from '../lib/swr'\r\nimport React, {\r\n  createContext,\r\n  useCallback,\r\n  useRef,\r\n  ReactNode,\r\n  useEffect,\r\n  FC,\r\n  useState,\r\n} from 'react'\r\nimport { useAccount, useChains, useConfig, useSwitchChain } from 'wagmi'\r\nimport {\r\n  WalletClient,\r\n  formatUnits,\r\n  parseUnits,\r\n  zeroAddress,\r\n  encodeFunctionData,\r\n  createPublicClient,\r\n  http,\r\n} from 'viem'\r\nimport { version } from '../../package.json'\r\nimport { getAccount, getWalletClient } from 'wagmi/actions'\r\nimport { auraEVMTestnet } from '../constants/evmosChain'\r\nimport { ChainConfig, ContractConfig } from '../constants/common'\r\n\r\ntype Order = NonNullable<ReturnType<typeof useListings>['data'][0]>\r\ntype OrdersSchema =\r\n  paths['/orders/asks/v5']['get']['responses']['200']['schema']\r\ntype Token = NonNullable<ReturnType<typeof useTokens>['data'][0]>\r\ntype TokensSchema = paths['/tokens/v7']['get']['responses']['200']['schema']\r\ntype FloorAsk = NonNullable<NonNullable<Token['market']>['floorAsk']>\r\ntype CartItemPrice = FloorAsk['price']\r\ntype Currency = NonNullable<NonNullable<CartItemPrice>['currency']>\r\ntype BuyTokenOptions = Parameters<\r\n  ReservoirClientActions['buyToken']\r\n>['0']['options']\r\n\r\nexport enum CheckoutStatus {\r\n  Idle,\r\n  Approving,\r\n  Finalizing,\r\n  Complete,\r\n}\r\n\r\nexport enum CheckoutTransactionError {\r\n  Unknown,\r\n  PiceMismatch,\r\n  InsufficientBalance,\r\n  UserDenied,\r\n}\r\n\r\ntype CartItem = {\r\n  token: {\r\n    id: string\r\n    name: string\r\n  }\r\n  collection: {\r\n    id: string\r\n    name: string\r\n  }\r\n  order?: {\r\n    id: string\r\n    quantityRemaining: number\r\n    quantity: number\r\n    maker: string\r\n  }\r\n  price: CartItemPrice\r\n  poolId?: string\r\n  poolPrices?: CartItemPrice[]\r\n  previousPrice?: CartItemPrice\r\n}\r\n\r\nexport type Cart = {\r\n  totalPrice: number\r\n  currency?: NonNullable<CartItemPrice>['currency']\r\n  feeOnTop?: number\r\n  feesOnTopBps?: string[]\r\n  feesOnTopUsd?: string[]\r\n  items: CartItem[]\r\n  pools: Record<string, { prices: CartItemPrice[]; itemCount: number }>\r\n  isValidating: boolean\r\n  chain?: ReservoirChain\r\n  pendingTransactionId?: string\r\n  transaction: {\r\n    id?: string\r\n    txHashes?: {\r\n      txHash: `0x${string}`\r\n      chainId: number\r\n    }[]\r\n    chain: ReservoirChain\r\n    items: CartItem[]\r\n    error?: Error\r\n    errorType?: CheckoutTransactionError\r\n    status: CheckoutStatus\r\n    steps?: Execute['steps']\r\n    path?: Execute['path']\r\n    currentStep?: Execute['steps'][0]\r\n  } | null\r\n}\r\n\r\nconst CartStorageKey = `reservoirkit.cart.${version}`\r\n\r\ntype CartStoreProps = {\r\n  feesOnTopBps?: string[]\r\n  feesOnTopUsd?: string[]\r\n  persist?: boolean\r\n  walletClient?: ReservoirWallet | WalletClient\r\n}\r\n\r\nfunction cartStore({\r\n  feesOnTopBps,\r\n  feesOnTopUsd,\r\n  persist = true,\r\n  walletClient,\r\n}: CartStoreProps) {\r\n  const { address } = useAccount()\r\n  const chains = useChains()\r\n  const config = useConfig()\r\n  const { switchChainAsync } = useSwitchChain()\r\n  const [cartCurrency, setCartCurrency] = useState<Cart['currency']>()\r\n  const [cartChain, setCartChain] = useState<Cart['chain']>()\r\n  const cartData = useRef<Cart>({\r\n    totalPrice: 0,\r\n    feesOnTopBps: undefined,\r\n    feesOnTopUsd: undefined,\r\n    items: [],\r\n    pools: {},\r\n    isValidating: false,\r\n    transaction: null,\r\n  })\r\n\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const publicClient = createPublicClient({\r\n    chain: ChainConfig[currentChain ? currentChain?.id : 1235],\r\n    transport: http(),\r\n  })\r\n\r\n  const subscribers = useRef(new Set<() => void>())\r\n  const { data: usdFeeConversion } = useCurrencyConversion(\r\n    cartChain?.id,\r\n    cartCurrency?.contract,\r\n    'usd'\r\n  )\r\n  const usdPrice = Number(usdFeeConversion?.usd || 0)\r\n\r\n  useEffect(() => {\r\n    subscribe(() => {\r\n      setCartCurrency(cartData.current.currency)\r\n      setCartChain(cartData.current.chain)\r\n    })\r\n\r\n    if (persist && typeof window !== 'undefined' && window.localStorage) {\r\n      const storedCart = window.localStorage.getItem(CartStorageKey)\r\n      if (storedCart) {\r\n        const rehydratedCart: Cart = JSON.parse(storedCart)\r\n        const currency = getCartCurrency(\r\n          rehydratedCart.items,\r\n          rehydratedCart.chain?.id || 1\r\n        )\r\n        const pools = calculatePools(rehydratedCart.items)\r\n        const { totalPrice, feeOnTop } = calculatePricing(\r\n          rehydratedCart.items,\r\n          currency,\r\n          cartData.current.feesOnTopBps,\r\n          cartData.current.feesOnTopUsd,\r\n          usdPrice\r\n        )\r\n        cartData.current = {\r\n          ...cartData.current,\r\n          chain:\r\n            rehydratedCart.items.length > 0 ? rehydratedCart.chain : undefined,\r\n          items: rehydratedCart.items,\r\n          pools,\r\n          totalPrice,\r\n          feeOnTop,\r\n          currency,\r\n        }\r\n        subscribers.current.forEach((callback) => callback())\r\n        validate()\r\n      }\r\n    }\r\n  }, [])\r\n\r\n  useEffect(() => {\r\n    const currency = getCartCurrency(\r\n      cartData.current.items,\r\n      cartData.current.chain?.id || 1\r\n    )\r\n    const pools = calculatePools(cartData.current.items)\r\n    const { totalPrice, feeOnTop } = calculatePricing(\r\n      cartData.current.items,\r\n      currency,\r\n      feesOnTopBps,\r\n      feesOnTopUsd,\r\n      usdPrice\r\n    )\r\n    cartData.current = {\r\n      ...cartData.current,\r\n      pools,\r\n      totalPrice,\r\n      feesOnTopBps,\r\n      feesOnTopUsd,\r\n      feeOnTop,\r\n      currency,\r\n    }\r\n    commit()\r\n  }, [feesOnTopBps, feesOnTopUsd, usdPrice])\r\n\r\n  const get = useCallback(() => cartData.current, [])\r\n  const set = useCallback((value: Partial<Cart>) => {\r\n    cartData.current = { ...cartData.current, ...value }\r\n    commit()\r\n  }, [])\r\n\r\n  const subscribe = useCallback((callback: () => void) => {\r\n    subscribers.current.add(callback)\r\n    return () => subscribers.current.delete(callback)\r\n  }, [])\r\n\r\n  const commit = useCallback(() => {\r\n    subscribers.current.forEach((callback) => callback())\r\n    if (persist && typeof window !== 'undefined' && window.localStorage) {\r\n      window.localStorage.setItem(\r\n        CartStorageKey,\r\n        JSON.stringify(cartData.current)\r\n      )\r\n    }\r\n  }, [persist])\r\n\r\n  const calculatePools = useCallback((items: CartItem[]) => {\r\n    const pools: Record<\r\n      string,\r\n      { prices: CartItemPrice[]; itemCount: number }\r\n    > = {}\r\n    items.forEach((item) => {\r\n      if (item.poolId) {\r\n        if (!pools[item.poolId] && item.poolPrices) {\r\n          pools[item.poolId] = { prices: item.poolPrices, itemCount: 1 }\r\n          item.price = item.poolPrices[0]\r\n        } else if (item.poolPrices) {\r\n          item.price = item.poolPrices[pools[item.poolId].itemCount]\r\n          pools[item.poolId].itemCount += 1\r\n        }\r\n      }\r\n    })\r\n    return pools\r\n  }, [])\r\n\r\n  const calculatePricing = useCallback(\r\n    (\r\n      items: Cart['items'],\r\n      currency?: Cart['currency'],\r\n      feesOnTopBps?: Cart['feesOnTopBps'],\r\n      feesOnTopUsd?: Cart['feesOnTopUsd'],\r\n      usdPrice?: number\r\n    ) => {\r\n      let feeOnTop = 0\r\n      let subtotal = items.reduce((total, { price, order }) => {\r\n        let amount = price?.amount?.decimal\r\n        if (price?.currency?.contract !== currency?.contract) {\r\n          amount = price?.amount?.native\r\n        }\r\n\r\n        if (amount && order?.quantity) {\r\n          amount = amount * order?.quantity\r\n        }\r\n        return (total += amount || 0)\r\n      }, 0)\r\n      if (feesOnTopBps) {\r\n        feeOnTop = feesOnTopBps.reduce((total, feeOnTopBps) => {\r\n          const [_, feeBps] = feeOnTopBps.split(':')\r\n          total += (Number(feeBps || 0) / 10000) * subtotal\r\n          return total\r\n        }, 0)\r\n      } else if (feesOnTopUsd && usdPrice && currency && currency?.decimals) {\r\n        feeOnTop = feesOnTopUsd.reduce((totalFees, feeOnTop) => {\r\n          const [_, fee] = feeOnTop.split(':')\r\n          const atomicUsdPrice = parseUnits(`${usdPrice}`, 6)\r\n          const atomicFee = BigInt(fee)\r\n          const convertedAtomicFee =\r\n            atomicFee * BigInt(10 ** (currency?.decimals || 18))\r\n          const currencyFee = convertedAtomicFee / atomicUsdPrice\r\n          const parsedFee = formatUnits(currencyFee, currency.decimals || 18)\r\n          return totalFees + Number(parsedFee)\r\n        }, 0)\r\n      }\r\n      subtotal = subtotal + feeOnTop\r\n      return {\r\n        totalPrice: subtotal,\r\n        feeOnTop,\r\n      }\r\n    },\r\n    []\r\n  )\r\n\r\n  const getCartCurrency = useCallback(\r\n    (items: CartItem[], chainId: number): Currency | undefined => {\r\n      let currencies = new Set<string>()\r\n      let currenciesData: Record<string, Currency> = {}\r\n      for (let i = 0; i < items.length; i++) {\r\n        const currency = items[i].price?.currency\r\n        if (currency?.contract) {\r\n          currencies.add(currency.contract)\r\n          currenciesData[currency.contract] = currency\r\n        }\r\n        if (currencies.size > 1) {\r\n          break\r\n        }\r\n      }\r\n      if (currencies.size > 1) {\r\n        const chainCurrency = useChainCurrency(chainId)\r\n        return {\r\n          ...chainCurrency,\r\n          contract: chainCurrency.address,\r\n        }\r\n      } else if (currencies.size > 0) {\r\n        return Object.values(currenciesData)[0]\r\n      }\r\n    },\r\n    [chains]\r\n  )\r\n\r\n  const fetchTokens = useCallback(\r\n    async (tokenIds: string[], chainId: number) => {\r\n      if (!tokenIds || tokenIds.length === 0) {\r\n        return { tokens: [] }\r\n      }\r\n\r\n      const reservoirChain = client?.chains.find(\r\n        (chain) => chain.id === chainId\r\n      )\r\n      const url = new URL(`${reservoirChain?.baseApiUrl}/tokens/v7`)\r\n\r\n      const query: paths['/tokens/v7']['get']['parameters']['query'] = {\r\n        tokens: tokenIds,\r\n        limit: 100,\r\n        includeDynamicPricing: true,\r\n      }\r\n      if (client?.normalizeRoyalties !== undefined) {\r\n        query.normalizeRoyalties = client?.normalizeRoyalties\r\n      }\r\n      setParams(url, query)\r\n      const params = [url.href]\r\n      if (client?.apiKey) {\r\n        params.push(client.apiKey)\r\n      }\r\n      if (client?.version) {\r\n        params.push(client.version)\r\n      }\r\n\r\n      const response: TokensSchema = await defaultFetcher(params)\r\n\r\n      return { tokens: response.tokens }\r\n    },\r\n    [client]\r\n  )\r\n\r\n  const fetchOrders = useCallback(\r\n    async (orderIds: string[], chainId: number) => {\r\n      if (!orderIds || orderIds.length === 0) {\r\n        return { orders: [] }\r\n      }\r\n\r\n      const reservoirChain = client?.chains.find(\r\n        (chain) => chain.id === chainId\r\n      )\r\n\r\n      const url = new URL(`${reservoirChain?.baseApiUrl}/orders/asks/v5`)\r\n\r\n      const query: paths['/orders/asks/v5']['get']['parameters']['query'] = {\r\n        ids: orderIds,\r\n        limit: 1000,\r\n        includeCriteriaMetadata: true,\r\n      }\r\n      if (client?.normalizeRoyalties !== undefined) {\r\n        query.normalizeRoyalties = client?.normalizeRoyalties\r\n      }\r\n      setParams(url, query)\r\n      const params = [url.href]\r\n      if (client?.apiKey) {\r\n        params.push(client.apiKey)\r\n      }\r\n      if (client?.version) {\r\n        params.push(client.version)\r\n      }\r\n\r\n      const response: OrdersSchema = await defaultFetcher(params)\r\n\r\n      return { orders: response.orders }\r\n    },\r\n    [client]\r\n  )\r\n\r\n  const convertTokenToItem = useCallback(\r\n    (tokenData: Token): CartItem | undefined => {\r\n      const token = tokenData.token\r\n      const market = tokenData.market\r\n\r\n      if (!token?.tokenId || !token.collection?.id) {\r\n        return\r\n      }\r\n      const dynamicPricing = market?.floorAsk?.dynamicPricing\r\n\r\n      let order:\r\n        | undefined\r\n        | {\r\n            id: string\r\n            quantityRemaining: number\r\n            quantity: number\r\n            maker: string\r\n          } = undefined\r\n      if (token.kind === 'erc1155' && market?.floorAsk) {\r\n        order = {\r\n          id: market?.floorAsk?.id || '',\r\n          quantityRemaining: market?.floorAsk?.quantityRemaining || 1,\r\n          quantity: 1,\r\n          maker: market?.floorAsk?.maker || '',\r\n        }\r\n      }\r\n\r\n      return {\r\n        token: {\r\n          id: token.tokenId,\r\n          name: token.name || '',\r\n        },\r\n        collection: {\r\n          id: token.collection.id,\r\n          name: token.collection.name || '',\r\n        },\r\n        order: order,\r\n        price:\r\n          dynamicPricing?.kind === 'pool' ? undefined : market?.floorAsk?.price,\r\n        poolId:\r\n          dynamicPricing?.kind === 'pool'\r\n            ? (dynamicPricing.data?.pool as string)\r\n            : undefined,\r\n        poolPrices:\r\n          dynamicPricing?.kind === 'pool'\r\n            ? (dynamicPricing.data?.prices as CartItemPrice[])\r\n            : undefined,\r\n      }\r\n    },\r\n    []\r\n  )\r\n\r\n  const convertOrderToItem = useCallback(\r\n    (orderData: Order): CartItem | undefined => {\r\n      let criteria = orderData.criteria?.data\r\n      if (!criteria?.token?.tokenId || !criteria.collection?.id) {\r\n        return\r\n      }\r\n      return {\r\n        token: {\r\n          id: criteria.token.tokenId,\r\n          name: criteria.token.name || '',\r\n        },\r\n        collection: {\r\n          id: criteria.collection.id,\r\n          name: criteria.collection.name || '',\r\n        },\r\n        order: {\r\n          id: orderData.id,\r\n          quantityRemaining: orderData.quantityRemaining || 1,\r\n          quantity: 1,\r\n          maker: orderData.maker,\r\n        },\r\n        price: orderData.price,\r\n        poolId: undefined,\r\n        poolPrices: undefined,\r\n      }\r\n    },\r\n    []\r\n  )\r\n\r\n  const clear = useCallback(() => {\r\n    cartData.current = {\r\n      ...cartData.current,\r\n      items: [],\r\n      pools: {},\r\n      totalPrice: 0,\r\n      feeOnTop: 0,\r\n      chain: undefined,\r\n    }\r\n    commit()\r\n  }, [commit])\r\n\r\n  const clearTransaction = useCallback(() => {\r\n    cartData.current = {\r\n      ...cartData.current,\r\n      transaction: null,\r\n      pendingTransactionId: undefined,\r\n    }\r\n    commit()\r\n  }, [commit])\r\n\r\n  const setQuantity = useCallback(\r\n    (orderId: string, quantity: number) => {\r\n      const updatedItems = [...cartData.current.items]\r\n      let item = updatedItems.find((item) => item.order?.id === orderId)\r\n      if (item?.order && (quantity > 0 || quantity == -1)) {\r\n        if (quantity > item?.order?.quantityRemaining) {\r\n          quantity = item?.order?.quantityRemaining\r\n        }\r\n        {\r\n          item.order = {\r\n            ...item.order,\r\n            quantity: quantity,\r\n          }\r\n        }\r\n      }\r\n\r\n      if (quantity == -1) {\r\n        cartData.current = {\r\n          ...cartData.current,\r\n          items: updatedItems,\r\n        }\r\n      } else {\r\n        const currency = getCartCurrency(\r\n          updatedItems,\r\n          cartData.current.chain?.id || 1\r\n        )\r\n        const { totalPrice, feeOnTop } = calculatePricing(\r\n          updatedItems,\r\n          currency,\r\n          cartData.current.feesOnTopBps,\r\n          cartData.current.feesOnTopUsd,\r\n          usdPrice\r\n        )\r\n\r\n        cartData.current = {\r\n          ...cartData.current,\r\n          items: updatedItems,\r\n          totalPrice,\r\n          feeOnTop,\r\n          currency,\r\n        }\r\n      }\r\n\r\n      commit()\r\n    },\r\n    [commit, usdPrice]\r\n  )\r\n\r\n  type AsyncAddToCartOrder = { orderId: string }\r\n  type AsyncAddToCartToken = { id: string }\r\n  type AddToCartToken = AsyncAddToCartToken | AsyncAddToCartOrder | Token\r\n\r\n  const add = useCallback(\r\n    async (items: AddToCartToken[], chainId: number) => {\r\n      try {\r\n        if (cartData.current.chain && chainId != cartData.current.chain?.id) {\r\n          throw `ChainId: ${chainId}, is different than the cart chainId (${cartData.current.chain?.id})`\r\n        }\r\n        if (cartData.current.isValidating) {\r\n          throw 'Currently validating, adding items temporarily disabled'\r\n        }\r\n\r\n        const updatedItems = [...cartData.current.items]\r\n        const currentIds = cartData.current.items.map(\r\n          (item) => `${item.collection.id}:${item.token.id}`\r\n        )\r\n        const currentOrderIds = cartData.current.items.map(\r\n          (item) => item.order?.id\r\n        )\r\n\r\n        const tokensToFetch: string[] = []\r\n        const tokens: Token[] = []\r\n        const ordersToFetch: string[] = []\r\n\r\n        const tokensByMaker = updatedItems.reduce((map, item) => {\r\n          if (item.order) {\r\n            const maker = item.order?.maker\r\n            if (!map[maker]) {\r\n              map[maker] = []\r\n            }\r\n            map[maker].push(`${item.collection.id}:${item.token.id}`)\r\n          }\r\n          return map\r\n        }, {} as Record<string, string[]>)\r\n\r\n        items.forEach((item) => {\r\n          const token = item as Token\r\n          const asyncToken = item as AsyncAddToCartToken\r\n          const asyncOrder = item as AsyncAddToCartOrder\r\n          if (token.token) {\r\n            if (\r\n              !currentIds.includes(\r\n                `${token.token?.collection?.id}:${token.token?.tokenId}`\r\n              )\r\n            ) {\r\n              tokens.push(token)\r\n            }\r\n          } else if (\r\n            asyncToken &&\r\n            asyncToken.id &&\r\n            !currentIds.includes(asyncToken.id)\r\n          ) {\r\n            tokensToFetch.push(asyncToken.id)\r\n          } else if (\r\n            asyncOrder &&\r\n            asyncOrder.orderId &&\r\n            !currentOrderIds.includes(asyncOrder.orderId)\r\n          ) {\r\n            ordersToFetch.push(asyncOrder.orderId)\r\n          }\r\n        })\r\n\r\n        const promises: Promise<void>[] = []\r\n\r\n        if (tokensToFetch.length > 0) {\r\n          promises.push(\r\n            new Promise(async (resolve) => {\r\n              const { tokens: fetchedTokens } = await fetchTokens(\r\n                tokensToFetch,\r\n                chainId\r\n              )\r\n              fetchedTokens?.forEach((tokenData) => {\r\n                const item = convertTokenToItem(tokenData)\r\n                const id = `${item?.collection.id}:${item?.token.id}`\r\n                const maker = tokenData.market?.floorAsk?.maker\r\n                const duplicateListingDetected =\r\n                  item &&\r\n                  maker &&\r\n                  tokensByMaker[maker] &&\r\n                  tokensByMaker[maker].includes(id)\r\n                if (duplicateListingDetected) {\r\n                  client?.log(\r\n                    [\r\n                      'Detected adding duplicate listing to cart, aborting',\r\n                      tokenData,\r\n                      updatedItems,\r\n                    ],\r\n                    LogLevel.Error\r\n                  )\r\n                } else if (item) {\r\n                  updatedItems.push(item)\r\n                }\r\n              })\r\n\r\n              resolve()\r\n            })\r\n          )\r\n        }\r\n\r\n        if (ordersToFetch.length > 0) {\r\n          promises.push(\r\n            new Promise(async (resolve) => {\r\n              const { orders: fetchedOrders } = await fetchOrders(\r\n                ordersToFetch,\r\n                chainId\r\n              )\r\n              fetchedOrders?.forEach((orderData) => {\r\n                const item = convertOrderToItem(orderData)\r\n                const id = `${item?.collection.id}:${item?.token.id}`\r\n                const duplicateListingDetected =\r\n                  item &&\r\n                  tokensByMaker[orderData.maker] &&\r\n                  tokensByMaker[orderData.maker].includes(id)\r\n                if (duplicateListingDetected) {\r\n                  client?.log(\r\n                    [\r\n                      'Detected adding duplicate listing to cart, aborting',\r\n                      orderData,\r\n                      updatedItems,\r\n                    ],\r\n                    LogLevel.Error\r\n                  )\r\n                } else if (item) {\r\n                  updatedItems.push(item)\r\n                }\r\n              })\r\n\r\n              resolve()\r\n            })\r\n          )\r\n        }\r\n\r\n        if (promises.length > 0) {\r\n          cartData.current.isValidating = true\r\n          subscribers.current.forEach((callback) => callback())\r\n\r\n          await Promise.allSettled(promises)\r\n        }\r\n\r\n        if (tokens.length > 0) {\r\n          tokens.forEach((token) => {\r\n            if (\r\n              token.market?.floorAsk?.maker?.toLowerCase() !==\r\n                address?.toLowerCase() &&\r\n              token.token?.owner?.toLowerCase() !== address?.toLowerCase()\r\n            ) {\r\n              const item = convertTokenToItem(token)\r\n              if (item) {\r\n                updatedItems.push(item)\r\n              }\r\n            }\r\n          })\r\n        }\r\n\r\n        const pools = calculatePools(updatedItems)\r\n        const currency = getCartCurrency(updatedItems, chainId)\r\n        const { totalPrice, feeOnTop } = calculatePricing(\r\n          updatedItems,\r\n          currency,\r\n          cartData.current.feesOnTopBps,\r\n          cartData.current.feesOnTopUsd,\r\n          usdPrice\r\n        )\r\n\r\n        cartData.current = {\r\n          ...cartData.current,\r\n          isValidating: false,\r\n          items: updatedItems,\r\n          totalPrice,\r\n          feeOnTop,\r\n          currency,\r\n          pools,\r\n        }\r\n\r\n        if (!cartData.current.chain) {\r\n          cartData.current.chain =\r\n            client?.chains.find((chain) => chain.id === chainId) ||\r\n            client?.currentChain() ||\r\n            undefined\r\n        }\r\n        commit()\r\n      } catch (e) {\r\n        if (cartData.current.isValidating) {\r\n          cartData.current.isValidating = false\r\n          commit()\r\n        }\r\n        throw e\r\n      }\r\n    },\r\n    [fetchTokens, commit, address, usdPrice]\r\n  )\r\n\r\n  /**\r\n   * @param ids An array of order ids or token keys. Tokens should be in the format `collection:token`\r\n   */\r\n\r\n  const remove = useCallback(\r\n    (ids: string[]) => {\r\n      if (cartData.current.isValidating) {\r\n        console.warn(\r\n          'Currently validating, removing items temporarily disabled'\r\n        )\r\n        return\r\n      }\r\n      const updatedItems: CartItem[] = []\r\n      const removedItems: CartItem[] = []\r\n      cartData.current.items.forEach((item) => {\r\n        const key = `${item.collection.id}:${item.token.id}`\r\n        const orderId = item.order?.id\r\n        if (orderId && ids.includes(orderId)) {\r\n          removedItems.push(item)\r\n        } else if (ids.includes(key)) {\r\n          removedItems.push(item)\r\n        } else {\r\n          updatedItems.push(item)\r\n        }\r\n      })\r\n      const pools = calculatePools(updatedItems)\r\n      const currency = getCartCurrency(\r\n        updatedItems,\r\n        cartData.current.chain?.id || 1\r\n      )\r\n      const { totalPrice, feeOnTop } = calculatePricing(\r\n        updatedItems,\r\n        currency,\r\n        cartData.current.feesOnTopBps,\r\n        cartData.current.feesOnTopUsd,\r\n        usdPrice\r\n      )\r\n\r\n      //Suppress pool price changes if the removed item was from the pool\r\n      const removedPoolIds = removedItems.reduce((poolIds, item) => {\r\n        if (item.poolId) {\r\n          poolIds.push(item.poolId)\r\n        }\r\n        return poolIds\r\n      }, [] as string[])\r\n\r\n      updatedItems.forEach((item) => {\r\n        if (item.poolId && removedPoolIds.includes(item.poolId)) {\r\n          item.previousPrice = item.price\r\n        }\r\n      })\r\n\r\n      cartData.current = {\r\n        ...cartData.current,\r\n        items: updatedItems,\r\n        pools,\r\n        totalPrice,\r\n        feeOnTop,\r\n        currency,\r\n      }\r\n      if (updatedItems.length === 0) {\r\n        cartData.current.chain = undefined\r\n      }\r\n      commit()\r\n    },\r\n    [usdPrice]\r\n  )\r\n\r\n  const validate = useCallback(async () => {\r\n    try {\r\n      if (cartData.current.items.length === 0) {\r\n        return false\r\n      }\r\n      cartData.current = { ...cartData.current, isValidating: true }\r\n      commit()\r\n\r\n      const items = [...cartData.current.items]\r\n\r\n      const positionMap =\r\n        cartData.current.items.reduce((items, item, index) => {\r\n          if (item.order?.id) {\r\n            items[`${item.order.id}`] = index\r\n          } else if (item.collection.id && item.token?.id) {\r\n            items[`${item.collection.id}:${item.token.id}`] = index\r\n          }\r\n          return items\r\n        }, {} as Record<string, number>) || {}\r\n\r\n      const tokensToFetch: string[] = []\r\n      const ordersToFetch: string[] = []\r\n\r\n      //find tokens and order ids to fetch\r\n      cartData.current.items.map((item) => {\r\n        if (item.order?.id) {\r\n          ordersToFetch.push(item.order.id)\r\n        } else {\r\n          const contract = item.collection.id.split(':')[0]\r\n          tokensToFetch.push(`${contract}:${item.token.id}`)\r\n        }\r\n      })\r\n\r\n      //fetch tokens and orders in tandem\r\n      const promises: (\r\n        | ReturnType<typeof fetchOrders>\r\n        | ReturnType<typeof fetchTokens>\r\n      )[] = []\r\n\r\n      if (ordersToFetch.length > 0) {\r\n        promises.push(\r\n          fetchOrders(ordersToFetch, cartData.current.chain?.id as number)\r\n        )\r\n      }\r\n\r\n      if (tokensToFetch.length > 0) {\r\n        promises.push(\r\n          fetchTokens(tokensToFetch, cartData.current.chain?.id as number)\r\n        )\r\n      }\r\n\r\n      const responses = await Promise.allSettled(promises)\r\n\r\n      // hashmap of items to remove { orderId/tokenId: item index }\r\n      let itemsToRemove: Record<string, number> = {}\r\n\r\n      responses.forEach((response) => {\r\n        if (response.status === 'fulfilled') {\r\n          const ordersResponse = response.value as OrdersSchema\r\n          const tokensResponse = response.value as TokensSchema\r\n\r\n          if (ordersResponse && ordersResponse.orders) {\r\n            // process orders response\r\n            ordersResponse.orders.map((order) => {\r\n              let index = positionMap[order.id]\r\n              if (\r\n                address &&\r\n                order.maker.toLowerCase() === address?.toLowerCase()\r\n              ) {\r\n                itemsToRemove[order.id] = index\r\n              } else if (order.status !== 'active') {\r\n                items[index] = {\r\n                  ...items[index],\r\n                  price: undefined,\r\n                }\r\n              }\r\n            })\r\n          } else if (tokensResponse && tokensResponse.tokens) {\r\n            // process tokens response\r\n            tokensResponse.tokens.map(({ token, market }) => {\r\n              const index =\r\n                positionMap[`${token?.collection?.id}:${token?.tokenId}`]\r\n\r\n              if (\r\n                address &&\r\n                (token?.owner?.toLowerCase() === address?.toLowerCase() ||\r\n                  market?.floorAsk?.maker?.toLowerCase() ===\r\n                    address?.toLowerCase())\r\n              ) {\r\n                if (token?.collection?.id && token?.tokenId) {\r\n                  itemsToRemove[`${token.collection.id}:${token.tokenId}`] =\r\n                    index\r\n                }\r\n              } else {\r\n                const dynamicPricing = market?.floorAsk?.dynamicPricing\r\n\r\n                items[index] = {\r\n                  ...items[index],\r\n                  previousPrice: items[index].price,\r\n                  price: market?.floorAsk?.price,\r\n                  poolId:\r\n                    dynamicPricing?.kind === 'pool'\r\n                      ? (dynamicPricing.data?.pool as string)\r\n                      : undefined,\r\n                  poolPrices:\r\n                    dynamicPricing?.kind === 'pool'\r\n                      ? (dynamicPricing.data?.prices as CartItemPrice[])\r\n                      : undefined,\r\n                }\r\n                if (token?.name) {\r\n                  items[index].token.name = token.name\r\n                }\r\n                if (token?.collection?.name) {\r\n                  items[index].collection.name = token.collection.name\r\n                }\r\n              }\r\n            })\r\n          }\r\n        }\r\n      })\r\n\r\n      // Remove all items in itemsToRemove\r\n      if (Object.values(itemsToRemove).length > 0) {\r\n        Object.values(itemsToRemove).map((index) => {\r\n          items.splice(index, 1)\r\n        })\r\n      }\r\n\r\n      const pools = calculatePools(items)\r\n      const currency = getCartCurrency(items, cartData.current.chain?.id || 1)\r\n      const { totalPrice, feeOnTop } = calculatePricing(\r\n        items,\r\n        currency,\r\n        cartData.current.feesOnTopBps,\r\n        cartData.current.feesOnTopUsd,\r\n        usdPrice\r\n      )\r\n      cartData.current = {\r\n        ...cartData.current,\r\n        items,\r\n        pools,\r\n        isValidating: false,\r\n        totalPrice,\r\n        feeOnTop,\r\n        currency,\r\n      }\r\n\r\n      commit()\r\n      return true\r\n    } catch (e) {\r\n      if (cartData.current.isValidating) {\r\n        cartData.current.isValidating = false\r\n        commit()\r\n      }\r\n      throw e\r\n    }\r\n  }, [fetchTokens, fetchOrders, address, usdPrice])\r\n\r\n  const checkout = useCallback(\r\n    async (options: BuyTokenOptions = {}) => {\r\n      if (!client) {\r\n        throw 'Reservoir SDK not initialized'\r\n      }\r\n\r\n      const { chain: activeChain } = await getAccount(config)\r\n\r\n      if (\r\n        cartData.current.chain &&\r\n        cartData.current.chain?.id !== activeChain?.id\r\n      ) {\r\n        const chain = await switchChainAsync?.({\r\n          ...config,\r\n          chainId: cartData.current.chain.id,\r\n        })\r\n        if (chain?.id !== cartData.current.chain.id) {\r\n          throw 'Active chain does not match cart chain'\r\n        }\r\n      }\r\n\r\n      const wagmiWalletClient = await getWalletClient(config, {\r\n        chainId: cartData.current.chain?.id,\r\n      })\r\n\r\n      const wallet = walletClient || wagmiWalletClient\r\n\r\n      if (!wallet) {\r\n        throw 'Wallet/Signer not available'\r\n      }\r\n\r\n      let isMixedCurrency = false\r\n      const tokens = cartData.current.items.reduce(\r\n        (items, { token, collection, price, order }) => {\r\n          if (price) {\r\n            const contract = collection.id.split(':')[0]\r\n            items?.push({\r\n              token: order?.id ? undefined : `${contract}:${token.id}`,\r\n              orderId: order?.id,\r\n              quantity: order?.quantity,\r\n            })\r\n            if (\r\n              price.currency?.contract != cartData.current.currency?.contract\r\n            ) {\r\n              isMixedCurrency = true\r\n            }\r\n          }\r\n          return items\r\n        },\r\n        [] as Parameters<ReservoirClientActions['buyToken']>['0']['items']\r\n      )\r\n\r\n      if (!tokens || tokens.length === 0) {\r\n        throw 'Cart is empty'\r\n      }\r\n      const chainCurrency = useChainCurrency(cartData.current.chain?.id || 1)\r\n      const currencyChain = client.chains.find(\r\n        (chain) => chainCurrency.chainId === chain.id\r\n      )\r\n      const feeOnTop = cartData.current.feeOnTop ? cartData.current.feeOnTop : 0\r\n      const expectedPrice = cartData.current.totalPrice - feeOnTop\r\n      let currencyDecimals = cartData.current.currency?.decimals || 18\r\n\r\n      if (isMixedCurrency) {\r\n        options.currency = zeroAddress\r\n        currencyDecimals = chainCurrency.decimals\r\n      } else {\r\n        options.currency = cartData.current.currency?.contract\r\n      }\r\n\r\n      if (feeOnTop) {\r\n        if (cartData.current.feesOnTopBps) {\r\n          const fixedFees = cartData.current.feesOnTopBps.map((fullFee) => {\r\n            const [referrer, feeBps] = fullFee.split(':')\r\n            const fee = Math.floor(\r\n              Number(\r\n                parseUnits(`${expectedPrice}`, currencyDecimals) *\r\n                  BigInt(feeBps)\r\n              ) / 10000\r\n            )\r\n            const atomicUnitsFee = formatUnits(BigInt(fee), 0)\r\n            return `${referrer}:${atomicUnitsFee}`\r\n          })\r\n          options.feesOnTop = fixedFees\r\n        } else if (cartData.current.feesOnTopUsd && usdPrice) {\r\n          options.feesOnTop = cartData.current.feesOnTopUsd.map((feeOnTop) => {\r\n            const [recipient, fee] = feeOnTop.split(':')\r\n            const atomicUsdPrice = parseUnits(`${usdPrice}`, 6)\r\n            const atomicFee = BigInt(fee)\r\n            const convertedAtomicFee =\r\n              atomicFee * BigInt(10 ** cartData.current?.currency?.decimals!)\r\n            const currencyFee = convertedAtomicFee / atomicUsdPrice\r\n            const parsedFee = formatUnits(currencyFee, 0)\r\n            return `${recipient}:${parsedFee}`\r\n          })\r\n        }\r\n      }\r\n\r\n      if (options.partial === undefined) {\r\n        options.partial = true\r\n      }\r\n\r\n      const transactionId = `${new Date().getTime()}`\r\n      cartData.current = {\r\n        ...cartData.current,\r\n        pendingTransactionId: transactionId,\r\n        transaction: {\r\n          id: transactionId,\r\n          chain: cartData.current.chain || currencyChain || client.chains[0],\r\n          items: cartData.current.items,\r\n          status: CheckoutStatus.Approving,\r\n        },\r\n      }\r\n      commit()\r\n\r\n      if (\r\n        activeChain?.name ===\r\n        ChainConfig[currentChain ? currentChain?.id : 1235]?.name\r\n      ) {\r\n        if (address) {\r\n          const calls = cartData?.current?.items?.map((item) => ({\r\n            allowFailure: true,\r\n            callData: encodeFunctionData({\r\n              abi: [\r\n                {\r\n                  inputs: [\r\n                    {\r\n                      internalType: 'address',\r\n                      name: '_tokenContract',\r\n                      type: 'address',\r\n                    },\r\n                    {\r\n                      internalType: 'uint256',\r\n                      name: '_tokenId',\r\n                      type: 'uint256',\r\n                    },\r\n                    {\r\n                      internalType: 'address',\r\n                      name: '_fillCurrency',\r\n                      type: 'address',\r\n                    },\r\n                    {\r\n                      internalType: 'uint256',\r\n                      name: '_fillAmount',\r\n                      type: 'uint256',\r\n                    },\r\n                    {\r\n                      internalType: 'address',\r\n                      name: '_finder',\r\n                      type: 'address',\r\n                    },\r\n                  ],\r\n                  name: 'fillAsk',\r\n                  outputs: [],\r\n                  stateMutability: 'payable',\r\n                  type: 'function',\r\n                },\r\n              ],\r\n              functionName: 'fillAsk',\r\n              args: [\r\n                item?.collection?.id as `0x${string}`,\r\n                BigInt(Number(item?.token?.id)),\r\n                item?.price?.currency?.contract as `0x${string}`,\r\n                BigInt(item?.price?.amount?.raw || 0n),\r\n                address as `0x${string}`,\r\n              ],\r\n            }),\r\n          }))\r\n\r\n          if (cartData.current.transaction) {\r\n            cartData.current.transaction.currentStep = {\r\n              action: '',\r\n              description: '',\r\n              kind: 'transaction',\r\n              id: '',\r\n              items: [\r\n                {\r\n                  status: 'incomplete',\r\n                },\r\n              ],\r\n            }\r\n\r\n            commit()\r\n          }\r\n\r\n          await wagmiWalletClient\r\n            ?.writeContract({\r\n              abi: [\r\n                {\r\n                  type: 'function',\r\n                  name: 'aggregate',\r\n                  inputs: [\r\n                    {\r\n                      name: 'calls',\r\n                      type: 'tuple[]',\r\n                      internalType: 'struct Multicall.Call[]',\r\n                      components: [\r\n                        {\r\n                          name: 'allowFailure',\r\n                          type: 'bool',\r\n                          internalType: 'bool',\r\n                        },\r\n                        {\r\n                          name: 'callData',\r\n                          type: 'bytes',\r\n                          internalType: 'bytes',\r\n                        },\r\n                      ],\r\n                    },\r\n                  ],\r\n                  outputs: [\r\n                    {\r\n                      name: 'returnData',\r\n                      type: 'tuple[]',\r\n                      internalType: 'struct Multicall.Result[]',\r\n                      components: [\r\n                        { name: 'success', type: 'bool', internalType: 'bool' },\r\n                        {\r\n                          name: 'returnData',\r\n                          type: 'bytes',\r\n                          internalType: 'bytes',\r\n                        },\r\n                      ],\r\n                    },\r\n                  ],\r\n                  stateMutability: 'payable',\r\n                },\r\n              ],\r\n              address: ContractConfig[activeChain?.id]\r\n                ?.ASK1_1_MODULE_ADDRESS as `0x${string}`,\r\n              functionName: `aggregate`,\r\n              args: [calls],\r\n              gas: 500000n,\r\n              value: parseUnits(cartData?.current?.totalPrice?.toString(), 18),\r\n            })\r\n            .then((hash) => {\r\n              if (cartData?.current?.transaction) {\r\n                cartData.current.transaction.status = CheckoutStatus.Finalizing\r\n                cartData.current.transaction.currentStep = {\r\n                  action: '',\r\n                  description: '',\r\n                  kind: 'transaction',\r\n                  id: '',\r\n                  items: [\r\n                    {\r\n                      status: 'incomplete',\r\n                      txHashes: [{ txHash: hash, chainId: activeChain?.id }],\r\n                    },\r\n                  ],\r\n                }\r\n              }\r\n\r\n              commit()\r\n\r\n              publicClient\r\n                .waitForTransactionReceipt({ hash })\r\n                .then((res) => {\r\n                  if (res?.status === 'success') {\r\n                    setTimeout(() => {\r\n                      if (cartData?.current?.transaction) {\r\n                        cartData.current.transaction.status =\r\n                          CheckoutStatus.Complete\r\n                        cartData.current.transaction.currentStep = {\r\n                          action: '',\r\n                          description: '',\r\n                          kind: 'transaction',\r\n                          id: '',\r\n                          items: [\r\n                            {\r\n                              status: 'complete',\r\n                              transfersData: [\r\n                                {\r\n                                  amount:\r\n                                    cartData?.current?.items?.length?.toString() ||\r\n                                    '0',\r\n                                },\r\n                              ],\r\n                              txHashes: [\r\n                                { txHash: hash, chainId: activeChain?.id },\r\n                              ],\r\n                            },\r\n                          ],\r\n                        }\r\n\r\n                        cartData.current.items = []\r\n                        cartData.current.pools = {}\r\n                        cartData.current.totalPrice = 0\r\n                        cartData.current.currency = undefined\r\n                        cartData.current.chain = undefined\r\n\r\n                        commit()\r\n                      }\r\n                    }, 5000)\r\n                  }\r\n                })\r\n                .catch((e) => {\r\n                  let error = e as any\r\n                  let errorType = CheckoutTransactionError.Unknown\r\n                  const errorStatus = (error as any)?.statusCode\r\n\r\n                  if (\r\n                    error?.message &&\r\n                    error?.message.includes('ETH balance')\r\n                  ) {\r\n                    errorType = CheckoutTransactionError.InsufficientBalance\r\n                  } else if (error?.code && error?.code == 4001) {\r\n                    errorType = CheckoutTransactionError.UserDenied\r\n                  } else {\r\n                    let message =\r\n                      'Oops, something went wrong. Please try again.'\r\n                    if (errorStatus >= 400 && errorStatus < 500) {\r\n                      message = error.message\r\n                    }\r\n                    if (error?.type && error?.type === 'price mismatch') {\r\n                      errorType = CheckoutTransactionError.PiceMismatch\r\n                      message = error.message\r\n                    }\r\n\r\n                    //@ts-ignore: Should be fixed in an update to typescript\r\n                    error = new Error(message, {\r\n                      cause: error,\r\n                    })\r\n                  }\r\n\r\n                  if (cartData?.current?.transaction) {\r\n                    cartData.current.transaction.status =\r\n                      CheckoutStatus.Approving\r\n                    cartData.current.transaction.error = error\r\n                    cartData.current.transaction.errorType = errorType\r\n                  }\r\n\r\n                  commit()\r\n                  validate()\r\n                })\r\n            })\r\n            .catch((e) => {\r\n              let error = e as any\r\n              let errorType = CheckoutTransactionError.Unknown\r\n              const errorStatus = (error as any)?.statusCode\r\n\r\n              if (error?.message && error?.message.includes('AURA balance')) {\r\n                errorType = CheckoutTransactionError.InsufficientBalance\r\n              } else if (error?.code && error?.code == 4001) {\r\n                errorType = CheckoutTransactionError.UserDenied\r\n              } else {\r\n                let message = 'Oops, something went wrong. Please try again.'\r\n                if (errorStatus >= 400 && errorStatus < 500) {\r\n                  message = error.message\r\n                }\r\n                if (error?.type && error?.type === 'price mismatch') {\r\n                  errorType = CheckoutTransactionError.PiceMismatch\r\n                  message = error.message\r\n                }\r\n\r\n                //@ts-ignore: Should be fixed in an update to typescript\r\n                error = new Error(message, {\r\n                  cause: error,\r\n                })\r\n              }\r\n\r\n              if (cartData?.current?.transaction) {\r\n                cartData.current.transaction.status = CheckoutStatus.Approving\r\n                cartData.current.transaction.error = error\r\n                cartData.current.transaction.errorType = errorType\r\n              }\r\n\r\n              commit()\r\n              validate()\r\n            })\r\n        }\r\n      } else {\r\n        client.actions\r\n          .buyToken({\r\n            expectedPrice: {\r\n              [options.currency || zeroAddress]: {\r\n                amount: expectedPrice,\r\n                raw: parseUnits(`${expectedPrice}`, currencyDecimals),\r\n                currencyAddress: options.currency || zeroAddress,\r\n                currencyDecimals: currencyDecimals,\r\n              },\r\n            },\r\n            wallet,\r\n            items: tokens,\r\n            options,\r\n            onProgress: (steps: Execute['steps'], path: Execute['path']) => {\r\n              if (!steps) {\r\n                return\r\n              }\r\n              if (transactionId != cartData.current.pendingTransactionId) {\r\n                return\r\n              }\r\n\r\n              let status =\r\n                cartData.current.transaction?.status || CheckoutStatus.Approving\r\n\r\n              const executableSteps = steps.filter(\r\n                (step) => step.items && step.items.length > 0\r\n              )\r\n\r\n              let stepCount = executableSteps.length\r\n\r\n              let currentStepItem:\r\n                | NonNullable<Execute['steps'][0]['items']>[0]\r\n                | undefined\r\n\r\n              const currentStepIndex = executableSteps.findIndex((step) => {\r\n                currentStepItem = step.items?.find(\r\n                  (item) => item.status === 'incomplete'\r\n                )\r\n                return currentStepItem\r\n              })\r\n\r\n              const currentStep =\r\n                currentStepIndex > -1\r\n                  ? executableSteps[currentStepIndex]\r\n                  : executableSteps[stepCount - 1]\r\n\r\n              if (currentStep.error) {\r\n                return\r\n              }\r\n\r\n              executableSteps.findIndex((step) => {\r\n                currentStepItem = step.items?.find(\r\n                  (item) => item.status === 'incomplete'\r\n                )\r\n                return currentStepItem\r\n              })\r\n\r\n              const transactionSteps = steps.filter(\r\n                (step) =>\r\n                  step.kind === 'transaction' &&\r\n                  step.items &&\r\n                  step.items?.length > 0\r\n              )\r\n\r\n              if (\r\n                transactionSteps.length > 0 &&\r\n                transactionSteps.every((step) =>\r\n                  step.items?.every((item) => item.txHashes)\r\n                )\r\n              ) {\r\n                status = CheckoutStatus.Finalizing\r\n                if (cartData.current.items.length > 0) {\r\n                  cartData.current.items = []\r\n                  cartData.current.pools = {}\r\n                  cartData.current.totalPrice = 0\r\n                  cartData.current.currency = undefined\r\n                  cartData.current.chain = undefined\r\n                }\r\n              }\r\n              if (\r\n                steps.every(\r\n                  (step) =>\r\n                    !step.items ||\r\n                    step.items.length == 0 ||\r\n                    step.items?.every((item) => item.status === 'complete')\r\n                )\r\n              ) {\r\n                status = CheckoutStatus.Complete\r\n              }\r\n\r\n              if (\r\n                cartData.current.transaction?.status != status &&\r\n                (status === CheckoutStatus.Finalizing ||\r\n                  status === CheckoutStatus.Complete)\r\n              ) {\r\n                cartData.current.items = []\r\n                cartData.current.pools = {}\r\n                cartData.current.totalPrice = 0\r\n                cartData.current.currency = undefined\r\n                cartData.current.chain = undefined\r\n              }\r\n\r\n              if (cartData.current.transaction) {\r\n                cartData.current.transaction.status = status\r\n                cartData.current.transaction.currentStep = currentStep\r\n                if (currentStepItem) {\r\n                  cartData.current.transaction.txHashes =\r\n                    currentStepItem?.txHashes\r\n                  cartData.current.transaction.steps = steps\r\n                  cartData.current.transaction.path = path\r\n                }\r\n              }\r\n              commit()\r\n            },\r\n          })\r\n          .catch((e: any) => {\r\n            if (transactionId != cartData.current.pendingTransactionId) {\r\n              return\r\n            }\r\n            let error = e as any\r\n            let errorType = CheckoutTransactionError.Unknown\r\n            const errorStatus = (error as any)?.statusCode\r\n\r\n            if (error?.message && error?.message.includes('ETH balance')) {\r\n              errorType = CheckoutTransactionError.InsufficientBalance\r\n            } else if (error?.code && error?.code == 4001) {\r\n              errorType = CheckoutTransactionError.UserDenied\r\n            } else {\r\n              let message = 'Oops, something went wrong. Please try again.'\r\n              if (errorStatus >= 400 && errorStatus < 500) {\r\n                message = error.message\r\n              }\r\n              if (error?.type && error?.type === 'price mismatch') {\r\n                errorType = CheckoutTransactionError.PiceMismatch\r\n                message = error.message\r\n              }\r\n\r\n              //@ts-ignore: Should be fixed in an update to typescript\r\n              error = new Error(message, {\r\n                cause: error,\r\n              })\r\n            }\r\n            if (cartData.current.transaction) {\r\n              cartData.current.transaction.status = CheckoutStatus.Idle\r\n              cartData.current.transaction.error = error\r\n              cartData.current.transaction.errorType = errorType\r\n              if (\r\n                cartData.current.chain?.id ==\r\n                cartData.current.transaction.chain.id\r\n              ) {\r\n                const items = [...cartData.current.transaction.items]\r\n                const pools = calculatePools(items)\r\n                const currency = getCartCurrency(\r\n                  items,\r\n                  cartData.current.transaction.chain.id\r\n                )\r\n                const { totalPrice, feeOnTop } = calculatePricing(\r\n                  items,\r\n                  currency,\r\n                  cartData.current.feesOnTopBps,\r\n                  cartData.current.feesOnTopUsd,\r\n                  usdPrice\r\n                )\r\n                cartData.current.items = items\r\n                cartData.current.pools = pools\r\n                cartData.current.currency = currency\r\n                cartData.current.totalPrice = totalPrice\r\n                cartData.current.feeOnTop = feeOnTop\r\n                cartData.current.chain = cartData.current.transaction.chain\r\n              }\r\n              commit()\r\n              validate()\r\n            }\r\n          })\r\n      }\r\n    },\r\n    [client, switchChainAsync, usdPrice, walletClient, config, address]\r\n  )\r\n\r\n  return {\r\n    get,\r\n    set,\r\n    subscribe,\r\n    setQuantity,\r\n    add,\r\n    remove,\r\n    clear,\r\n    clearTransaction,\r\n    validate,\r\n    checkout,\r\n  }\r\n}\r\n\r\nexport const CartContext = createContext<ReturnType<typeof cartStore> | null>(\r\n  null\r\n)\r\n\r\ntype CartProviderProps = {\r\n  children: ReactNode\r\n  feesOnTopBps?: string[]\r\n  feesOnTopUsd?: string[]\r\n  persist?: boolean\r\n}\r\n\r\nexport const CartProvider: FC<CartProviderProps> = function ({\r\n  children,\r\n  feesOnTopBps,\r\n  feesOnTopUsd,\r\n  persist,\r\n}) {\r\n  return (\r\n    <CartContext.Provider\r\n      value={cartStore({ feesOnTopBps, feesOnTopUsd, persist })}\r\n    >\r\n      {children}\r\n    </CartContext.Provider>\r\n  )\r\n}\r\n","import { paths } from '@sh-reservoir0x/reservoir-sdk'\r\nimport useReservoirClient from './useReservoirClient'\r\nimport useSWR from 'swr/immutable'\r\n\r\nexport default function (chainId?: number, from?: string, to?: string) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n  const path = new URL(\r\n    `${chain?.baseApiUrl}/currencies/conversion/v1?from=${from}&to=${to}`\r\n  )\r\n\r\n  return useSWR<\r\n    paths['/currencies/conversion/v1']['get']['responses'][200]['schema']\r\n  >(from && to ? [path.href, client?.apiKey, client?.version] : null, null, {\r\n    refreshInterval: 300000, //5m\r\n  })\r\n}\r\n","import { getClient, customChains } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { Address, zeroAddress } from 'viem'\r\nimport * as allChains from 'viem/chains'\r\nimport { ChainConfig } from '../constants/common'\r\n\r\nexport default (chainId?: number) => {\r\n  const client = getClient()\r\n  const reservoirChain = chainId\r\n    ? client.chains.find((chain) => chain.id === chainId)\r\n    : client.currentChain()\r\n\r\n  const chains = Object.values({\r\n    ...allChains,\r\n    ...customChains,\r\n    ...ChainConfig,\r\n  })\r\n  let chain = chains.find((chain) => reservoirChain?.id === chain.id)\r\n  // let chain = ChainConfig[chainId ? chainId : 1235]\r\n\r\n  if (!chain && chains.length > 0) {\r\n    chain = chains[0]\r\n  }\r\n\r\n  const ETHChains: number[] = [allChains.mainnet.id, allChains.goerli.id]\r\n\r\n  if (!chain || !chain.nativeCurrency || ETHChains.includes(chain.id)) {\r\n    return {\r\n      name: 'Ethereum',\r\n      symbol: 'ETH',\r\n      decimals: 18,\r\n      address: zeroAddress as Address,\r\n      chainId: chain?.id || allChains.mainnet.id,\r\n    }\r\n  } else {\r\n    return {\r\n      ...chain.nativeCurrency,\r\n      address: zeroAddress as Address,\r\n      chainId: chain.id,\r\n    }\r\n  }\r\n}\r\n","export const ASK1_1_MODULE_ADDRESS =\r\n  '0xc3A73d1b9870FEdDb782237aa8AF50167a5016A9'\r\nexport const ZORA_MODULE_MANAGER_ADDRESS =\r\n  '0x072e1b72e39aa018de54091CF6625dBDf227b3B4'\r\nexport const ERC721TRANSFERHELPER = '0x6944F3183F54757a8deaC2aEb9d4D3d64cb985f1'\r\n\r\n// not in use\r\nexport const RoyaltyRegistry = '0x727A80Eb575c2d0397a594De24bAb97165D12705'\r\nexport const ERC20TransferHelper = '0x71B65250BF5ED67321D318A3a7dB46c7616fa154'\r\nexport const RoyaltyEngineV1 = '0x8E4B6D854cB9acaD86435D1E396017e1dAb3220A'\r\nexport const ZoraProtocolFeeSettings =\r\n  '0xCFE3456274bE608f2aBf92d0f7d952712D4F3275'\r\nexport const WETH = '0x5Db8A2543e7e3Add18389C5ED63757A46A4848C1'\r\n\r\nexport const ContractConfig = {\r\n  // dev\r\n  [1235 as number]: {\r\n    ASK1_1_MODULE_ADDRESS: '0x19d4E98A6b84787879fdc71b5b4a992fF92a5f77',\r\n    ZORA_MODULE_MANAGER_ADDRESS: '0x6B1Cc558DA2f0d909aD16FA29F2D74bF7A8cA6B4',\r\n    ERC721TRANSFERHELPER: '0x9f075Deab9a7433f0A5541d235a57db1cA491E0a',\r\n\r\n    RoyaltyRegistry: '0x9A1945e4A316708631332BF7EC4fA8A2f6C6E2f8',\r\n    ERC20TransferHelper: '0xbeA9f83Dc816f0Df3F7fB43a288BE9fF211C3E7A',\r\n    RoyaltyEngineV1: '0xA1b5001fbda9179CBe69DfBEED78be1EC900d523',\r\n    ZoraProtocolFeeSettings: '0x8a914102864dEd8B134E7338e2a54b8f6eb7cb0e',\r\n    \r\n    // for offer/bid\r\n    WETH: '0x7C258D32e0C5ADda30d18194870b56A38E2EBBbC',\r\n    OFFER_MODULE_MANAGER: '0x6B1Cc558DA2f0d909aD16FA29F2D74bF7A8cA6B4',\r\n    OFFERS_OMNIBUS: '0x14511dEfE1fbc147b7364d3A5A3ED1179bd0c707',\r\n  },\r\n  // serenity\r\n  [1236 as number]: {\r\n    ASK1_1_MODULE_ADDRESS: '0x1a7cD784bD81c6761A6bDD88E3508c737f0C800e',\r\n    ZORA_MODULE_MANAGER_ADDRESS: '0xB28D39287eC900E0987f5dD755651dE4256D0F5b',\r\n    ERC721TRANSFERHELPER: '0x56e88b1731D55703C1f80391602297715886Fa6A',\r\n\r\n    RoyaltyRegistry: '0x875bf704a28d70909F2Dc04522d58DFE6E9625a9',\r\n    ERC20TransferHelper: '0xd1fC2D4F9984B6214D0a3778cbacbAbfA5e84224',\r\n    RoyaltyEngineV1: '0x297afC4971CD9b6A392c580542399e7B096EEBfd',\r\n    ZoraProtocolFeeSettings: '0x5203152e5E4EaEF7f6a95959817dB260ce97Dca1',\r\n\r\n    // for offer/bid\r\n    WETH: '0xE974cC14c93FC6077B0d65F98832B846C5454A0B',\r\n    OFFER_MODULE_MANAGER: '0xB28D39287eC900E0987f5dD755651dE4256D0F5b',\r\n    OFFERS_OMNIBUS: '0x98605ae21Dd3BE686337A6d7a8f156d0d8BAeE92',\r\n  },\r\n  // euphoria\r\n  [6321 as number]: {\r\n    ASK1_1_MODULE_ADDRESS: '0x605532fe1917031251a2A01519B3d976CeaeE209',\r\n    ZORA_MODULE_MANAGER_ADDRESS: '0x6b1efdc214b641D612f538c35818a2cF224D54D4',\r\n    ERC721TRANSFERHELPER: '0xB9D293eda7C4A9dbE2114Da9a9154C4dC97fd91a',\r\n\r\n    // RoyaltyRegistry: '0x727A80Eb575c2d0397a594De24bAb97165D12705',\r\n    ERC20TransferHelper: '0xE6e2a48B4a21DD66328D8a19f6396a60d3BfB7ec',\r\n    RoyaltyEngineV1: '0x6A8e8c700c949Bfe02A2Db958098b757799b069D',\r\n    ZoraProtocolFeeSettings: '0x084CFA5aF594A87b56Dfdb5E43e1F0BC37b677Df',\r\n    \r\n    // for offer/bid\r\n    WETH: '0x7f4f375454B34895DAE95e0cCEDc0743B3850893',\r\n    OFFER_MODULE_MANAGER: '0x6b1efdc214b641D612f538c35818a2cF224D54D4',\r\n    OFFERS_OMNIBUS: '0x0B0257bb9d3aA53e7b50b8568B5f79dA8185A8bc',\r\n  },\r\n  // main\r\n  [6322 as number]: {\r\n    ASK1_1_MODULE_ADDRESS: '0xFfC170cF1F6cDF421877793d1b8A9a13ead49e0e',\r\n    ZORA_MODULE_MANAGER_ADDRESS: '0x6FD4720cBe77f0c7bbE8263938f38e77D9efEE6A',\r\n    ERC721TRANSFERHELPER: '0xD43f62921bE6d42fe87a0336841431cfFd57F0Eb',\r\n\r\n    // RoyaltyRegistry: '0x727A80Eb575c2d0397a594De24bAb97165D12705',\r\n    ERC20TransferHelper: '0xbF3B5f77aBE83eE878cA0205a8b9A59d2AF256F7',\r\n    RoyaltyEngineV1: '0x62435914C478C5f511A1fEBBFAF092CaFB4C2e16',\r\n    ZoraProtocolFeeSettings: '0xDd475d464C0A1De8fD7CdB18756f9F0f4483eAF4',\r\n\r\n    // for offer/bid\r\n    WETH: '0xDE47A655a5d9904BD3F7e1A536D8323fBD99993A',\r\n    OFFER_MODULE_MANAGER: '0x6FD4720cBe77f0c7bbE8263938f38e77D9efEE6A',\r\n    OFFERS_OMNIBUS: '0xbf64f73074FA5dBF08c57962Fa4aE706F329BA9f',\r\n  },\r\n}\r\n\r\nexport const ChainConfig = {\r\n  [1235 as number]: {\r\n    id: 1235,\r\n    name: 'Aura EVM',\r\n    nativeCurrency: {\r\n      decimals: 18,\r\n      name: 'aura',\r\n      symbol: 'aura',\r\n    },\r\n    rpcUrls: {\r\n      default: {\r\n        http: ['https://jsonrpc.dev.aura.network/'],\r\n      },\r\n    },\r\n    blockExplorers: {\r\n      default: {\r\n        name: 'Aura EVM Block Explorer',\r\n        url: 'https://explorer.dev.aura.network/',\r\n      },\r\n    },\r\n  },\r\n  [1236 as number]: {\r\n    id: 1236,\r\n    name: 'Aura EVM',\r\n    nativeCurrency: {\r\n      decimals: 18,\r\n      name: 'aura',\r\n      symbol: 'aura',\r\n    },\r\n    rpcUrls: {\r\n      default: {\r\n        http: ['https://jsonrpc.serenity.aura.network/'],\r\n      },\r\n    },\r\n    blockExplorers: {\r\n      default: {\r\n        name: 'Aura EVM Block Explorer',\r\n        url: 'https://serenity.aurascan.io/',\r\n      },\r\n    },\r\n  },\r\n  [6321 as number]: {\r\n    id: 6321,\r\n    name: 'Aura EVM',\r\n    nativeCurrency: {\r\n      decimals: 18,\r\n      name: 'aura',\r\n      symbol: 'aura',\r\n    },\r\n    rpcUrls: {\r\n      default: {\r\n        http: ['https://jsonrpc.euphoria.aura.network/'],\r\n      },\r\n    },\r\n    blockExplorers: {\r\n      default: {\r\n        name: 'Aura EVM Block Explorer',\r\n        url: 'https://euphoria.aurascan.io/',\r\n      },\r\n    },\r\n  },\r\n  [6322 as number]: {\r\n    id: 6322,\r\n    name: 'Aura EVM',\r\n    nativeCurrency: {\r\n      decimals: 18,\r\n      name: 'aura',\r\n      symbol: 'aura',\r\n    },\r\n    rpcUrls: {\r\n      default: {\r\n        http: ['https://jsonrpc.aura.network/'],\r\n      },\r\n    },\r\n    blockExplorers: {\r\n      default: {\r\n        name: 'Aura EVM Block Explorer',\r\n        url: 'https://aurascan.io/',\r\n      },\r\n    },\r\n  },\r\n}\r\n\r\nexport const HALO_TRADE = {\r\n  [1235 as number]: 'https://dev.halotrade.zone/evm/swap',\r\n  [1236 as number]: 'https://serenity.halotrade.zone/evm/swap',\r\n  [6321 as number]: 'https://euphoria.halotrade.zone/evm/swap',\r\n  [6322 as number]: 'https://halotrade.zone/evm/swap',\r\n}\r\n\r\nexport const IPFS_GATEWAY = {\r\n  [1235 as number]: 'https://ipfs-gw.dev.aura.network/ipfs/',\r\n  [1236 as number]: 'https://ipfs-gw.dev.aura.network/ipfs/',\r\n  [6321 as number]: 'https://ipfs-gw.dev.aura.network/ipfs/',\r\n  [6322 as number]: 'https://ipfs-gw.dev.aura.network/ipfs/',\r\n}\r\n","import { useContext } from 'react'\r\nimport useSWR from 'swr/immutable'\r\nimport { CoinGecko, ProviderOptionsContext } from '../ReservoirKitProvider'\r\nimport useCoinIds from './useCoinIds'\r\n\r\nconst createBaseUrl = (config: CoinGecko | undefined) => {\r\n  if (config?.proxy) return `${config.proxy}/api/v3/coins/markets?`\r\n\r\n  if (config?.apiKey)\r\n    return `https://pro-api.coingecko.com/api/v3/coins/markets?x_cg_pro_api_key={${config.apiKey}}&`\r\n\r\n  return 'https://api.coingecko.com/api/v3/coins/markets?'\r\n}\r\n\r\nexport default function (\r\n  vs_currency?: string,\r\n  symbols: string = 'aura',\r\n  id: string = 'aura-network'\r\n): { price: number; symbol: string; id: string }[] {\r\n  const providerOptionsContext = useContext(ProviderOptionsContext)\r\n  const { data: coinIds } = useCoinIds()\r\n  const baseUrl = createBaseUrl(providerOptionsContext?.coinGecko)\r\n\r\n  if (id.length === 0) {\r\n    id = symbols\r\n      .split(',')\r\n      .reduce((ids: string[], symbol: string) => {\r\n        const normalizedSymbol = symbol.toLowerCase()\r\n        if (providerOptionsContext.coinGecko?.coinIds?.[normalizedSymbol]) {\r\n          ids.push(providerOptionsContext.coinGecko.coinIds[normalizedSymbol])\r\n        } else {\r\n          const coins = coinIds[normalizedSymbol]\r\n          if (coins?.length === 1) {\r\n            ids.push(coins[0].id)\r\n          }\r\n        }\r\n\r\n        return ids\r\n      }, [])\r\n      .join(',')\r\n  }\r\n\r\n  const { data } = useSWR(\r\n    vs_currency ? `${baseUrl}vs_currency=${vs_currency}&ids=${id}` : null,\r\n    null,\r\n    {\r\n      refreshInterval: 300000, //5m Interval\r\n    }\r\n  )\r\n\r\n  if (data && data.length > 0) {\r\n    return data\r\n      .filter((conversion: any) =>\r\n        symbols\r\n          .split(',')\r\n          .some((symbol) => symbol.toLowerCase().includes(conversion.symbol))\r\n      )\r\n      .map((conversion: any) => ({\r\n        price: conversion.current_price,\r\n        symbol: (conversion.symbol || '').toUpperCase(),\r\n        coinGeckoId: conversion.id,\r\n      }))\r\n  }\r\n  return []\r\n}\r\n","import { useContext } from 'react'\r\nimport useSWR from 'swr/immutable'\r\nimport { CoinGecko, ProviderOptionsContext } from '../ReservoirKitProvider'\r\n\r\nconst createBaseUrl = (config: CoinGecko | undefined) => {\r\n  if (config?.proxy) return `${config.proxy}/api/v3/coins/list?`\r\n\r\n  if (config?.apiKey)\r\n    return `https://pro-api.coingecko.com/api/v3/coins/list?x_cg_pro_api_key={${config.apiKey}}`\r\n\r\n  return 'https://api.coingecko.com/api/v3/coins/list'\r\n}\r\n\r\ntype CoinList = Record<string, { name: string; symbol: string; id: string }[]>\r\n\r\nexport default function () {\r\n  const providerOptionsContext = useContext(ProviderOptionsContext)\r\n  const baseUrl = createBaseUrl(providerOptionsContext?.coinGecko)\r\n  const response = useSWR(baseUrl, null, {\r\n    refreshInterval: 7200000, //2hr\r\n  })\r\n  const coins: CoinList =\r\n    response?.data?.reduce((coins: CoinList, coin: CoinList[0][0]) => {\r\n      //Hardcoded symbol to id pairings for established cryptocurrencies\r\n      if (\r\n        (coin.symbol === 'eth' && coin.id !== 'ethereum') ||\r\n        (coin.symbol === 'weth' && coin.id !== 'weth') ||\r\n        (coin.symbol === 'wmatic' && coin.id !== 'wmatic') ||\r\n        (coin.symbol === 'usdc' && coin.id !== 'usd-coin') ||\r\n        (coin.symbol === 'matic' && coin.id !== 'matic-network') ||\r\n        (coin.symbol === 'dai' && coin.id !== 'dai') ||\r\n        (coin.symbol === 'sand' && coin.id !== 'the-sandbox')\r\n      ) {\r\n        return coins\r\n      }\r\n      if (!coins[coin.symbol]) {\r\n        coins[coin.symbol] = [coin]\r\n      } else {\r\n        coins[coin.symbol].push(coin)\r\n      }\r\n      return coins\r\n    }, {}) || {}\r\n\r\n  return {\r\n    ...response,\r\n    data: coins,\r\n  }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\nimport { useInfiniteApi, useReservoirClient } from './'\r\n\r\ntype CollectionActivityResponse =\r\n  paths['/collections/activity/v6']['get']['responses']['200']['schema']\r\n\r\ntype CollectionActivityQuery =\r\n  paths['/collections/activity/v6']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  options?: CollectionActivityQuery | false,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const response = useInfiniteApi<CollectionActivityResponse>(\r\n    (pageIndex, previousPageData) => {\r\n      if (\r\n        !options ||\r\n        (!options.collection && !options.collectionsSetId && !options.community)\r\n      ) {\r\n        return null\r\n      }\r\n\r\n      const url = new URL(`${chain?.baseApiUrl}/collections/activity/v6`)\r\n\r\n      let query: CollectionActivityQuery = { ...options }\r\n\r\n      if (previousPageData && !previousPageData.continuation) {\r\n        return null\r\n      } else if (previousPageData && pageIndex > 0) {\r\n        query.continuation = previousPageData.continuation\r\n      }\r\n\r\n      setParams(url, query)\r\n\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n\r\n  const activities =\r\n    response.data?.flatMap((page) => page.activities || []) ?? []\r\n\r\n  return {\r\n    ...response,\r\n    data: activities,\r\n  }\r\n}\r\n","import { useInfiniteApi, useReservoirClient } from './'\r\nimport { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\n\r\ntype CollectionResponse =\r\n  paths['/collections/v7']['get']['responses']['200']['schema']\r\n\r\ntype CollectionsQuery = paths['/collections/v7']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  options?: CollectionsQuery | false,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const response = useInfiniteApi<CollectionResponse>(\r\n    (pageIndex, previousPageData) => {\r\n      if (!options) {\r\n        return null\r\n      }\r\n\r\n      const url = new URL(`${chain?.baseApiUrl}/collections/v7`)\r\n      let query: CollectionsQuery = { ...options }\r\n\r\n      if (previousPageData && !previousPageData.continuation) {\r\n        return null\r\n      } else if (previousPageData && pageIndex > 0) {\r\n        query.continuation = previousPageData.continuation\r\n      }\r\n\r\n      if (\r\n        query.normalizeRoyalties === undefined &&\r\n        client?.normalizeRoyalties !== undefined\r\n      ) {\r\n        query.normalizeRoyalties = client.normalizeRoyalties\r\n      }\r\n\r\n      setParams(url, query)\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n\r\n  const collections =\r\n    response.data?.flatMap((page) => page?.collections || []) ?? []\r\n\r\n  return {\r\n    ...response,\r\n    data: collections,\r\n  }\r\n}\r\n","import { useMemo } from 'react'\r\nimport { useCart, useReservoirClient, useTokens } from './'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\nimport { Cart } from './../context/CartProvider'\r\n\r\ntype DynamicTokens = (ReturnType<typeof useTokens>['data'][0] & {\r\n  isInCart?: boolean\r\n})[]\r\n\r\nexport default function (\r\n  options: Parameters<typeof useTokens>['0'] = {},\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n  const tokensResponse = useTokens(\r\n    {\r\n      includeDynamicPricing: true,\r\n      ...options,\r\n    },\r\n    swrOptions,\r\n    chainId\r\n  )\r\n  const { data: cartItems, ...cartActions } = useCart((cart) => cart.items)\r\n  const { data: cartPools } = useCart((cart) => cart.pools)\r\n  const { data: cartChain } = useCart((cart) => cart.chain)\r\n  const cartRequiresReordering = useMemo(\r\n    () => Object.values(cartPools).some((pool) => pool.itemCount > 0),\r\n    [cartPools]\r\n  )\r\n  const itemsMap = useMemo(() => {\r\n    return cartItems.reduce((itemMap, item) => {\r\n      itemMap[`${item.collection.id}:${item.token.id}`] = item\r\n      return itemMap\r\n    }, {} as Record<string, Cart['items'][0]>)\r\n  }, [cartItems])\r\n\r\n  let dynamicTokens: DynamicTokens\r\n  if (\r\n    cartChain &&\r\n    (chainId === cartChain?.id ||\r\n      (chainId === undefined && client?.currentChain()?.id === cartChain?.id))\r\n  ) {\r\n    dynamicTokens = tokensResponse.data.map((tokenData) => {\r\n      const id = `${tokenData?.token?.collection?.id}:${tokenData?.token?.tokenId}`\r\n      const cartItem = itemsMap[id]\r\n      const dynamicTokenData = {\r\n        ...tokenData,\r\n        isInCart: cartItem !== undefined,\r\n      }\r\n      const floorAsk = tokenData?.market?.floorAsk\r\n      const isInPool = floorAsk?.dynamicPricing?.kind === 'pool'\r\n      const poolId = isInPool\r\n        ? (floorAsk?.dynamicPricing?.data?.pool as string)\r\n        : undefined\r\n      const poolPrices = isInPool\r\n        ? (floorAsk?.dynamicPricing?.data\r\n            ?.prices as Cart['items'][0]['poolPrices'])\r\n        : undefined\r\n      if (cartItem) {\r\n        if (\r\n          dynamicTokenData.market?.floorAsk &&\r\n          cartItem.poolId &&\r\n          cartItem.price &&\r\n          cartItem.price.amount?.decimal !=\r\n            dynamicTokenData.market?.floorAsk?.price\r\n        ) {\r\n          dynamicTokenData.market.floorAsk.price = cartItem.price\r\n        }\r\n      } else if (\r\n        isInPool &&\r\n        poolId &&\r\n        poolPrices &&\r\n        floorAsk &&\r\n        dynamicTokenData.market?.floorAsk\r\n      ) {\r\n        const nextPoolCartIndex = cartPools[poolId]\r\n          ? cartPools[poolId].itemCount\r\n          : 0\r\n\r\n        if (nextPoolCartIndex >= poolPrices.length) {\r\n          dynamicTokenData.market.floorAsk.price = undefined\r\n        } else if (poolPrices && poolPrices[nextPoolCartIndex]) {\r\n          dynamicTokenData.market.floorAsk.price = poolPrices[nextPoolCartIndex]\r\n        }\r\n      }\r\n      return dynamicTokenData\r\n    })\r\n\r\n    if (\r\n      cartRequiresReordering &&\r\n      (!options || !options.sortBy || options.sortBy === 'floorAskPrice')\r\n    ) {\r\n      dynamicTokens.sort((a, b) => {\r\n        const aPrice = a.market?.floorAsk?.price?.amount?.decimal\r\n        const bPrice = b.market?.floorAsk?.price?.amount?.decimal\r\n\r\n        if (aPrice === undefined) {\r\n          return 1\r\n        } else if (bPrice === undefined) {\r\n          return -1\r\n        } else if (\r\n          !options ||\r\n          !options.sortDirection ||\r\n          options.sortDirection === 'asc'\r\n        ) {\r\n          return aPrice - bPrice\r\n        } else {\r\n          return bPrice - aPrice\r\n        }\r\n      })\r\n    }\r\n  } else {\r\n    dynamicTokens = tokensResponse.data.map((tokenData) => {\r\n      const floorAsk = tokenData?.market?.floorAsk\r\n      const isInPool = floorAsk?.dynamicPricing?.kind === 'pool'\r\n      const poolPrices = isInPool\r\n        ? (floorAsk?.dynamicPricing?.data\r\n            ?.prices as Cart['items'][0]['poolPrices'])\r\n        : undefined\r\n\r\n      if (tokenData.market?.floorAsk && poolPrices && poolPrices[0]) {\r\n        tokenData.market.floorAsk.price = poolPrices[0]\r\n      }\r\n\r\n      return tokenData\r\n    })\r\n  }\r\n\r\n  return {\r\n    ...tokensResponse,\r\n    data: dynamicTokens,\r\n    ...cartActions,\r\n  }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\nimport { useInfiniteApi, useReservoirClient } from './'\r\nimport { useMemo } from 'react'\r\n\r\ntype TokenDetailsResponse =\r\n  paths['/tokens/v7']['get']['responses']['200']['schema']\r\n\r\ntype TokensQuery = paths['/tokens/v7']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  options?: TokensQuery | false,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const response = useInfiniteApi<TokenDetailsResponse>(\r\n    (pageIndex, previousPageData) => {\r\n      if (!options) {\r\n        return null\r\n      }\r\n\r\n      const url = new URL(`${chain?.baseApiUrl}/tokens/v7`)\r\n      let query: TokensQuery = { ...options }\r\n\r\n      if (previousPageData && !previousPageData.continuation) {\r\n        return null\r\n      } else if (previousPageData && pageIndex > 0) {\r\n        query.continuation = previousPageData.continuation\r\n      }\r\n\r\n      if (\r\n        query.normalizeRoyalties === undefined &&\r\n        client?.normalizeRoyalties !== undefined\r\n      ) {\r\n        query.normalizeRoyalties = client.normalizeRoyalties\r\n      }\r\n\r\n      setParams(url, query)\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n\r\n  const tokens = useMemo(\r\n    () => response.data?.flatMap((page) => page.tokens || []) ?? [],\r\n    [response.data]\r\n  )\r\n\r\n  return {\r\n    ...response,\r\n    data: tokens,\r\n  }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport useReservoirClient from './useReservoirClient'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\nimport useInfiniteApi from './useInfiniteApi'\r\n\r\ntype Asks = paths['/orders/asks/v5']['get']['responses']['200']['schema']\r\ntype AsksQuery = paths['/orders/asks/v5']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  options: AsksQuery,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  enabled: boolean = true,\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const response = useInfiniteApi<Asks>(\r\n    (pageIndex, previousPageData) => {\r\n      if (!enabled) {\r\n        return null\r\n      }\r\n\r\n      const url = new URL(`${chain?.baseApiUrl || ''}/orders/asks/v5`)\r\n      let query: AsksQuery = options || {}\r\n\r\n      if (\r\n        query.normalizeRoyalties === undefined &&\r\n        client?.normalizeRoyalties !== undefined\r\n      ) {\r\n        query.normalizeRoyalties = client.normalizeRoyalties\r\n      }\r\n\r\n      if (previousPageData && !previousPageData.continuation) {\r\n        return null\r\n      } else if (previousPageData && pageIndex > 0) {\r\n        query.continuation = previousPageData.continuation\r\n      }\r\n\r\n      setParams(url, query)\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n\r\n  const listings = response.data?.flatMap((page) => page.orders || []) ?? []\r\n\r\n  return {\r\n    ...response,\r\n    data: listings,\r\n  }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport useSWR from 'swr/immutable'\r\nimport { useReservoirClient } from './'\r\n\r\ntype MarketplaceConfigurationsResponse =\r\n  paths['/collections/{collection}/marketplace-configurations/v2']['get']['responses']['200']['schema']\r\n\r\nexport type MarketPlaceConfigurationsQuery =\r\n  paths['/collections/{collection}/marketplace-configurations/v2']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  collectionId?: string,\r\n  chainId?: number,\r\n  options?: MarketPlaceConfigurationsQuery,\r\n  enabled: boolean = true\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const { data, error } = useSWR<MarketplaceConfigurationsResponse>(() => {\r\n    if (!enabled || !collectionId) {\r\n      return null\r\n    }\r\n\r\n    const url = new URL(\r\n      `${chain?.baseApiUrl}/collections/${collectionId}/marketplace-configurations/v2`\r\n    )\r\n    let query: MarketPlaceConfigurationsQuery = { ...options }\r\n\r\n    setParams(url, query)\r\n    return [url.href, client?.apiKey, client?.version]\r\n  })\r\n\r\n  return {\r\n    data: data,\r\n    isError: !!error,\r\n    isLoading: !data && !error,\r\n  }\r\n}\r\n","import useListings from './useListings'\r\nimport { useAccount } from 'wagmi'\r\nimport { paths } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { SWRConfiguration } from 'swr'\r\n\r\nexport default function (\r\n  query?: paths['/orders/asks/v5']['get']['parameters']['query'] | false,\r\n  swrOptions?: SWRConfiguration,\r\n  chainId?: number\r\n) {\r\n  const { address } = useAccount()\r\n  let queryOptions = {\r\n    maker: address as string,\r\n  }\r\n  if (query) {\r\n    queryOptions = {\r\n      ...queryOptions,\r\n      ...query,\r\n    }\r\n  }\r\n  return useListings(queryOptions, swrOptions, address !== undefined, chainId)\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\nimport { useInfiniteApi, useReservoirClient } from './'\r\n\r\ntype SearchActivitiesQuery =\r\n  paths['/search/activities/v1']['get']['parameters']['query']\r\n\r\ntype SearchActivitiesResponse =\r\n  paths['/search/activities/v1']['get']['responses']['200']['schema']\r\n\r\nexport default function (\r\n  options?: SearchActivitiesQuery | false,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  chaindId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n\r\n  const chain =\r\n    chaindId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chaindId)\r\n      : client?.currentChain()\r\n\r\n  const response = useInfiniteApi<SearchActivitiesResponse>(\r\n    (pageIndex, previousPageData) => {\r\n      if (!options) {\r\n        return null\r\n      }\r\n\r\n      const url = new URL(`${chain?.baseApiUrl}/search/activities/v1`)\r\n\r\n      let query: SearchActivitiesQuery = { ...options }\r\n\r\n      if (previousPageData && !previousPageData.continuation) {\r\n        return null\r\n      } else if (previousPageData && pageIndex > 0) {\r\n        query.continuation = previousPageData.continuation\r\n      }\r\n\r\n      setParams(url, query)\r\n\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n\r\n  const activities =\r\n    response.data?.flatMap((page) => page.activities || []) ?? []\r\n\r\n  return {\r\n    ...response,\r\n    data: activities,\r\n  }\r\n}\r\n","import useSWR from 'swr'\r\nimport { axios, paths } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { useReservoirClient } from './'\r\n\r\ntype SolverCapacityResponse =\r\n  paths['/execute/solve/capacity/v1']['post']['responses']['200']['schema']\r\n\r\nexport default function (chainId?: number, enabled: boolean = true) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const { data, error } = useSWR<SolverCapacityResponse>(\r\n    chain && enabled ? `${chain?.baseApiUrl}/execute/solve/capacity/v1` : null,\r\n    async (url) => {\r\n      try {\r\n        const response = await axios.post(url, {\r\n          kind: 'cross-chain-intent',\r\n        })\r\n        return response.data\r\n      } catch (error) {\r\n        console.error('Error fetching solver capacity:', error)\r\n        return undefined\r\n      }\r\n    },\r\n    {\r\n      revalidateOnFocus: false,\r\n    }\r\n  )\r\n\r\n  return {\r\n    data,\r\n    isError: !!error,\r\n    isLoading: !data && !error,\r\n  }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\nimport { useInfiniteApi, useReservoirClient } from './'\r\n\r\ntype TokenActivityQuery =\r\n  paths['/tokens/{token}/activity/v5']['get']['parameters']['query']\r\n\r\ntype TokenActivityResponse =\r\n  paths['/tokens/{token}/activity/v5']['get']['responses']['200']['schema']\r\n\r\nexport default function (\r\n  token: string,\r\n  options?: TokenActivityQuery | false,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const response = useInfiniteApi<TokenActivityResponse>(\r\n    (pageIndex, previousPageData) => {\r\n      if (!token) {\r\n        return null\r\n      }\r\n\r\n      const url = new URL(`${chain?.baseApiUrl}/tokens/${token}/activity/v5`)\r\n\r\n      let query: TokenActivityQuery = { ...options }\r\n\r\n      if (previousPageData && !previousPageData.continuation) {\r\n        return null\r\n      } else if (previousPageData && pageIndex > 0) {\r\n        query.continuation = previousPageData.continuation\r\n      }\r\n\r\n      setParams(url, query)\r\n\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n\r\n  const activities =\r\n    response.data?.flatMap((page) => page.activities || []) ?? []\r\n\r\n  return {\r\n    ...response,\r\n    data: activities,\r\n  }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport useSWR, { SWRConfiguration } from 'swr'\r\nimport { useReservoirClient } from './'\r\n\r\ntype TrendingCollectionsResponse =\r\n  paths['/collections/trending/v1']['get']['responses']['200']['schema']\r\n\r\ntype TrendingCollectionsQuery =\r\n  paths['/collections/trending/v1']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  options: TrendingCollectionsQuery | false,\r\n  chainId?: number,\r\n  swrOptions: SWRConfiguration = {}\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const url = new URL(`${chain?.baseApiUrl}/collections/trending/v1`)\r\n  let query: TrendingCollectionsQuery = { ...options }\r\n\r\n  setParams(url, query)\r\n\r\n  const { data, mutate, error, isValidating, isLoading } =\r\n    useSWR<TrendingCollectionsResponse>(\r\n      url && options ? [url.href, client?.apiKey, client?.version] : null,\r\n      null,\r\n      {\r\n        revalidateOnMount: true,\r\n        ...swrOptions,\r\n      }\r\n    )\r\n\r\n  const collections: TrendingCollectionsResponse['collections'] | null =\r\n    data && data.collections ? data.collections : null\r\n  return {\r\n    response: data,\r\n    data: collections,\r\n    mutate,\r\n    error,\r\n    isValidating,\r\n    isLoading,\r\n  }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport useSWR, { SWRConfiguration } from 'swr'\r\nimport { useReservoirClient } from './'\r\n\r\ntype TrendingMintsResponse =\r\n  paths['/collections/trending-mints/v1']['get']['responses']['200']['schema']\r\n\r\ntype TrendingMintsQuery =\r\n  paths['/collections/trending-mints/v1']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  options: TrendingMintsQuery | false,\r\n  chainId?: number,\r\n  swrOptions: SWRConfiguration = {}\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const url = new URL(`${chain?.baseApiUrl}/collections/trending-mints/v1`)\r\n  let query: TrendingMintsQuery = { ...options }\r\n\r\n  setParams(url, query)\r\n\r\n  const { data, mutate, error, isValidating, isLoading } =\r\n    useSWR<TrendingMintsResponse>(\r\n      url && options ? [url.href, client?.apiKey, client?.version] : null,\r\n      null,\r\n      {\r\n        revalidateOnMount: true,\r\n        ...swrOptions,\r\n      }\r\n    )\r\n\r\n  const mints: TrendingMintsResponse['mints'] | null =\r\n    data && data.mints ? data.mints : null\r\n  return { response: data, data: mints, mutate, error, isValidating, isLoading }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { useReservoirClient, useInfiniteApi } from './'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\n\r\ntype UserCollections =\r\n  paths['/users/{user}/collections/v4']['get']['responses']['200']['schema']\r\ntype UserCollectionsQuery =\r\n  paths['/users/{user}/collections/v4']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  user?: string,\r\n  options?: UserCollectionsQuery,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  let defaultLimit = 20\r\n\r\n  const response = useInfiniteApi<UserCollections>(\r\n    (pageIndex, previousPageData) => {\r\n      if (!user) {\r\n        return null\r\n      }\r\n      const url = new URL(\r\n        `${chain?.baseApiUrl || ''}/users/${user}/collections/v4`\r\n      )\r\n      let query: UserCollectionsQuery = {\r\n        offset: pageIndex * (options?.limit || defaultLimit),\r\n        limit: options?.limit || defaultLimit,\r\n        ...options,\r\n      }\r\n\r\n      if (\r\n        previousPageData?.collections &&\r\n        previousPageData?.collections?.length === 0\r\n      ) {\r\n        return null\r\n      }\r\n\r\n      setParams(url, query)\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    },\r\n    options?.limit || defaultLimit\r\n  )\r\n\r\n  const collections =\r\n    response.data?.flatMap((page) => page.collections || []) ?? []\r\n\r\n  return {\r\n    ...response,\r\n    data: collections,\r\n  }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { useReservoirClient, useInfiniteApi } from './'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\n\r\ntype UsersActivityResponse =\r\n  paths['/users/activity/v6']['get']['responses']['200']['schema']\r\n\r\ntype UsersActivityBaseQuery =\r\n  paths['/users/activity/v6']['get']['parameters']['query']\r\n\r\ntype UsersQuery = UsersActivityBaseQuery['users'] | undefined\r\ntype UsersActivityQuery = Omit<UsersActivityBaseQuery, 'users'>\r\n\r\nexport default function (\r\n  users?: UsersQuery,\r\n  options?: UsersActivityQuery | false,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const response = useInfiniteApi<UsersActivityResponse>(\r\n    (pageIndex, previousPageData) => {\r\n      if (!users) {\r\n        return null\r\n      }\r\n\r\n      const url = new URL(`${chain?.baseApiUrl}/users/activity/v6`)\r\n\r\n      let query: UsersActivityBaseQuery = { ...options, users }\r\n\r\n      if (previousPageData && !previousPageData.continuation) {\r\n        return null\r\n      } else if (previousPageData && pageIndex > 0) {\r\n        query.continuation = previousPageData.continuation\r\n      }\r\n\r\n      setParams(url, query)\r\n\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n\r\n  const activities =\r\n    response.data?.flatMap((page) => page.activities || []) ?? []\r\n\r\n  return {\r\n    ...response,\r\n    data: activities,\r\n  }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { useReservoirClient, useInfiniteApi } from './'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\n\r\ntype UserTokenResponse =\r\n  paths['/users/{user}/tokens/v9']['get']['responses']['200']['schema']\r\n\r\ntype UserTokenQuery =\r\n  paths['/users/{user}/tokens/v9']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  user?: string | undefined,\r\n  options?: UserTokenQuery | false,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const response = useInfiniteApi<UserTokenResponse>(\r\n    (pageIndex, previousPageData) => {\r\n      if (!user) {\r\n        return null\r\n      }\r\n\r\n      const url = new URL(`${chain?.baseApiUrl}/users/${user}/tokens/v10`)\r\n\r\n      let query: UserTokenQuery = { ...options }\r\n\r\n      if (previousPageData && !previousPageData.continuation) {\r\n        return null\r\n      } else if (previousPageData && pageIndex > 0) {\r\n        query.continuation = previousPageData.continuation\r\n      }\r\n\r\n      if (\r\n        query.normalizeRoyalties === undefined &&\r\n        client?.normalizeRoyalties !== undefined\r\n      ) {\r\n        query.normalizeRoyalties = client.normalizeRoyalties\r\n      }\r\n\r\n      setParams(url, query)\r\n\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n\r\n  const tokens = response.data?.flatMap((page) => page.tokens || []) ?? []\r\n\r\n  return {\r\n    ...response,\r\n    data: tokens,\r\n  }\r\n}\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { useReservoirClient, useInfiniteApi } from './'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\n\r\ntype Bids =\r\n  paths['/orders/users/{user}/top-bids/v4']['get']['responses']['200']['schema']\r\ntype BidsQuery =\r\n  paths['/orders/users/{user}/top-bids/v4']['get']['parameters']['query']\r\n\r\nexport default function (\r\n  user?: string,\r\n  options?: BidsQuery,\r\n  swrOptions: SWRInfiniteConfiguration = {},\r\n  chainId?: number\r\n) {\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const response = useInfiniteApi<Bids>(\r\n    (pageIndex, previousPageData) => {\r\n      if (!user) {\r\n        return null\r\n      }\r\n      const url = new URL(\r\n        `${chain?.baseApiUrl || ''}/orders/users/${user}/top-bids/v4`\r\n      )\r\n      let query: BidsQuery = options || {}\r\n\r\n      if (previousPageData && !previousPageData.continuation) {\r\n        return null\r\n      } else if (previousPageData && pageIndex > 0) {\r\n        query.continuation = previousPageData.continuation\r\n      }\r\n\r\n      if (\r\n        query.normalizeRoyalties === undefined &&\r\n        client?.normalizeRoyalties !== undefined\r\n      ) {\r\n        query.normalizeRoyalties = client.normalizeRoyalties\r\n      }\r\n\r\n      setParams(url, query)\r\n      return [url.href, client?.apiKey, client?.version]\r\n    },\r\n    {\r\n      revalidateOnMount: true,\r\n      revalidateFirstPage: false,\r\n      ...swrOptions,\r\n    }\r\n  )\r\n\r\n  const bids = response.data?.flatMap((page) => page.topBids || []) ?? []\r\n\r\n  return {\r\n    ...response,\r\n    data: bids,\r\n  }\r\n}\r\n","import {\r\n  red,\r\n  indigo,\r\n  indigoA,\r\n  gray,\r\n  whiteA,\r\n  blackA,\r\n  green,\r\n} from '@radix-ui/colors'\r\nimport {\r\n  sharedThemeConfig,\r\n  ReservoirKitTheme,\r\n  ReservoirKitOverrides,\r\n} from './ReservoirKitTheme'\r\n\r\nexport default function (overrides?: ReservoirKitOverrides): ReservoirKitTheme {\r\n  let sharedTheme = sharedThemeConfig(overrides)\r\n\r\n  return {\r\n    colors: {\r\n      ...indigo,\r\n      ...indigoA,\r\n      ...red,\r\n      ...gray,\r\n      ...blackA,\r\n      ...whiteA,\r\n      ...green,\r\n\r\n      // accent colors\r\n      accentBase: '$indigo1',\r\n      accentBgSubtle: '$indigo2',\r\n      accentBg: '$indigo3',\r\n      accentBgHover: '$indigo4',\r\n      accentBgActive: '$indigo5',\r\n      accentLine: '$indigo6',\r\n      accentBorder: '$indigo7',\r\n      accentBorderHover: overrides?.primaryColor || '$indigo8',\r\n      accentSolid: overrides?.primaryColor || '$indigo9',\r\n      accentSolidHover:\r\n        overrides?.primaryHoverColor || overrides?.primaryColor || '$indigo10',\r\n      accentText: '$indigo11',\r\n      accentTextContrast: '$indigo12',\r\n\r\n      // neutral colors\r\n      neutralBase: '$gray1',\r\n      neutralBgSubtle: 'white',\r\n      neutralBg: '$gray3',\r\n      neutralBgHover: '$gray2',\r\n      neutralBgActive: '$gray5',\r\n      neutralLine: '$gray6',\r\n      neutralBorder: '$gray7',\r\n      neutralBorderHover: '$gray8',\r\n      neutralSolid: '$gray9',\r\n      neutralSolidHover: '$gray10',\r\n      neutralText: '$gray11',\r\n      neutralTextContrast: '$gray12',\r\n\r\n      // secondary colors\r\n      secondaryBase: '$indigoA1',\r\n      secondaryBgSubtle: '$indigoA2',\r\n      secondaryBg: '$indigoA3',\r\n      secondaryBgHover: '$indigoA4',\r\n      secondaryBgActive: '$indigoA5',\r\n      secondaryLine: '$indigoA6',\r\n      secondaryBorder: '$indigoA7',\r\n      secondaryBorderHover: '$indigoA8',\r\n      secondarySolid: '$indigoA9',\r\n      secondarySolidHover: '$indigoA10',\r\n      secondaryText: '$indigoA11',\r\n      secondaryTextContrast: '$indigoA12',\r\n\r\n      // general colors\r\n      borderColor: overrides?.borderColor || '$neutralBorder',\r\n      textColor: overrides?.textColor || '$neutralTextContrast',\r\n      focusColor: '$neutralTextContrast',\r\n      errorText: '$red12',\r\n      errorAccent: '$red10',\r\n      successAccent: '$green10',\r\n\r\n      // component colors\r\n      reservoirLogoColor: '#11181C',\r\n      buttonTextColor: overrides?.buttonTextColor || 'white',\r\n      buttonTextHoverColor: overrides?.buttonTextHoverColor || 'white',\r\n      inputBackground: '$neutralBgHover',\r\n      overlayBackground: overrides?.overlayBackground || '$blackA10',\r\n      headerBackground: overrides?.headerBackground || '$neutralBgHover',\r\n      footerBackground: overrides?.footerBackground || '$neutralBgHover',\r\n      contentBackground: overrides?.contentBackground || '$neutralBgSubtle',\r\n      wellBackground: overrides?.wellBackground || '$gray3',\r\n      popoverBackground: overrides?.popoverBackground || '$neutralBase',\r\n    },\r\n    assets: {\r\n      ethIcon: overrides?.ethIcon || 'gray',\r\n      chainIcon: overrides?.chainIcon || 'light',\r\n    },\r\n    ...sharedTheme,\r\n  }\r\n}\r\n","import React, {\r\n  ComponentPropsWithoutRef,\r\n  Dispatch,\r\n  ReactElement,\r\n  SetStateAction,\r\n  useContext,\r\n  useEffect,\r\n} from 'react'\r\nimport { useFallbackState, useReservoirClient } from '../../hooks'\r\nimport {\r\n  Flex,\r\n  Box,\r\n  Text,\r\n  Anchor,\r\n  Button,\r\n  FormatCryptoCurrency,\r\n  Loader,\r\n  ErrorWell,\r\n} from '../../primitives'\r\nimport Progress from '../Progress'\r\nimport { Modal } from '../Modal'\r\nimport faCircleExclamation from '@fortawesome/free-solid-svg-icons/faCircleExclamation'\r\nimport faCheckCircle from '@fortawesome/free-solid-svg-icons/faCheckCircle'\r\n// import faChevronLeft from '@fortawesome/free-solid-svg-icons/faChevronLeft'\r\n// import faChevronRight from '@fortawesome/free-solid-svg-icons/faChevronRight'\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { BuyModalRenderer, BuyStep, BuyModalStepData } from './BuyModalRenderer'\r\nimport {\r\n  BuyTokenBodyParameters,\r\n  Execute,\r\n  ReservoirWallet,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport ProgressBar from '../ProgressBar'\r\nimport QuantitySelector from '../QuantitySelector'\r\nimport { formatNumber } from '../../lib/numbers'\r\nimport { ProviderOptionsContext } from '../../ReservoirKitProvider'\r\nimport { truncateAddress } from '../../lib/truncate'\r\n// import { SelectPaymentToken } from '../SelectPaymentToken'\r\nimport { WalletClient } from 'viem'\r\nimport getChainBlockExplorerUrl from '../../lib/getChainBlockExplorerUrl'\r\nimport { Dialog } from '../../primitives/Dialog'\r\nimport { TokenInfo, PaymentDetails } from '../../common'\r\n\r\ntype PurchaseData = {\r\n  token?: string\r\n  maker?: string\r\n  steps?: Execute['steps']\r\n}\r\n\r\nconst ModalCopy = {\r\n  titleInsufficientFunds: 'Get AURA',\r\n  titleDefault: 'Buy',\r\n  ctaClose: 'Close',\r\n  ctaCheckout: 'Checkout',\r\n  ctaConnect: 'Connect',\r\n  ctaInsufficientFunds: 'Get AURA',\r\n  ctaGoToToken: '',\r\n  ctaAwaitingValidation: 'Waiting for transaction to be validated',\r\n  ctaAwaitingApproval: 'Waiting for approval...',\r\n  ctaCopyAddress: 'Copy Wallet Address',\r\n}\r\n\r\ntype Props = Pick<Parameters<typeof Modal>['0'], 'trigger'> & {\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  token?: string\r\n  orderId?: string\r\n  creditCardCheckoutButton?: JSX.Element\r\n  chainId?: number\r\n  defaultQuantity?: number\r\n  feesOnTopBps?: string[] | null\r\n  feesOnTopUsd?: string[] | null\r\n  normalizeRoyalties?: boolean\r\n  copyOverrides?: Partial<typeof ModalCopy>\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  executeBuyOptions?: Omit<\r\n    NonNullable<BuyTokenBodyParameters>,\r\n    'items' | 'feesOnTop' | 'taker'\r\n  >\r\n  onConnectWallet: () => void\r\n  onGoToToken?: () => any\r\n  onPurchaseComplete?: (data: PurchaseData) => void\r\n  onPurchaseError?: (error: Error, data: PurchaseData) => void\r\n  onClose?: (\r\n    data: PurchaseData,\r\n    stepData: BuyModalStepData | null,\r\n    currentStep: BuyStep\r\n  ) => void\r\n  onPointerDownOutside?: ComponentPropsWithoutRef<\r\n    typeof Dialog\r\n  >['onPointerDownOutside']\r\n}\r\n\r\nexport function BuyModal({\r\n  openState,\r\n  trigger,\r\n  token,\r\n  orderId,\r\n  chainId,\r\n  feesOnTopBps,\r\n  feesOnTopUsd,\r\n  normalizeRoyalties,\r\n  defaultQuantity,\r\n  copyOverrides,\r\n  walletClient,\r\n  executeBuyOptions,\r\n  onConnectWallet,\r\n  onPurchaseComplete,\r\n  onPurchaseError,\r\n  onClose,\r\n  onGoToToken,\r\n  onPointerDownOutside,\r\n  creditCardCheckoutButton,\r\n}: Props): ReactElement {\r\n  const copy: typeof ModalCopy = { ...ModalCopy, ...copyOverrides }\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const modalChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const providerOptions = useContext(ProviderOptionsContext)\r\n\r\n  return (\r\n    <BuyModalRenderer\r\n      chainId={modalChain?.id}\r\n      open={open}\r\n      defaultQuantity={defaultQuantity}\r\n      token={token}\r\n      orderId={orderId}\r\n      feesOnTopBps={feesOnTopBps}\r\n      feesOnTopUsd={feesOnTopUsd}\r\n      normalizeRoyalties={normalizeRoyalties}\r\n      walletClient={walletClient}\r\n      executeBuyOptions={executeBuyOptions}\r\n      onConnectWallet={onConnectWallet}\r\n    >\r\n      {({\r\n        loading,\r\n        isFetchingPath,\r\n        tokenData,\r\n        collection,\r\n        quantityAvailable,\r\n        quantity,\r\n        averageUnitPrice,\r\n        totalIncludingFees,\r\n        buyResponseFees,\r\n        feeOnTop,\r\n        paymentCurrency,\r\n        paymentTokens,\r\n        buyStep,\r\n        transactionError,\r\n        hasEnoughCurrency,\r\n        addFundsLink,\r\n        steps,\r\n        stepData,\r\n        feeUsd,\r\n        totalUsd,\r\n        usdPrice,\r\n        balance,\r\n        address,\r\n        blockExplorerBaseName,\r\n        isConnected,\r\n        isOwner,\r\n        setPaymentCurrency,\r\n        setQuantity,\r\n        setBuyStep,\r\n        buyToken,\r\n      }) => {\r\n        useEffect(() => {\r\n          if (buyStep === BuyStep.Complete && onPurchaseComplete) {\r\n            const data: PurchaseData = {\r\n              token,\r\n              maker: address,\r\n            }\r\n            if (steps) {\r\n              data.steps = steps\r\n            }\r\n            onPurchaseComplete(data)\r\n          }\r\n        }, [buyStep])\r\n\r\n        useEffect(() => {\r\n          if (transactionError && onPurchaseError) {\r\n            const data: PurchaseData = {\r\n              token,\r\n              maker: address,\r\n            }\r\n            onPurchaseError(transactionError, data)\r\n          }\r\n        }, [transactionError])\r\n\r\n        const executableSteps =\r\n          steps?.filter((step) => step.items && step.items.length > 0) || []\r\n        const lastStepItems =\r\n          executableSteps[executableSteps.length - 1]?.items || []\r\n\r\n        const totalPurchases =\r\n          stepData?.currentStep?.items?.reduce((total, item) => {\r\n            item.transfersData?.forEach((transferData) => {\r\n              total += Number(transferData.amount || 1)\r\n            })\r\n            return total\r\n          }, 0) || 0\r\n\r\n        const failedPurchases = quantity - totalPurchases\r\n        const successfulPurchases = quantity - failedPurchases\r\n        const finalTxHashes = lastStepItems[lastStepItems.length - 1]?.txHashes\r\n\r\n        return (\r\n          <Modal\r\n            trigger={trigger}\r\n            title={copy.titleDefault}\r\n            open={open}\r\n            onPointerDownOutside={(e) => {\r\n              const dismissableLayers = Array.from(\r\n                document.querySelectorAll('div[data-radix-dismissable]')\r\n              )\r\n              const clickedDismissableLayer = dismissableLayers.some((el) =>\r\n                e.target ? el.contains(e.target as Node) : false\r\n              )\r\n\r\n              if (!clickedDismissableLayer && dismissableLayers.length > 0) {\r\n                e.preventDefault()\r\n              }\r\n              if (onPointerDownOutside) {\r\n                onPointerDownOutside(e)\r\n              }\r\n            }}\r\n            onOpenChange={(open) => {\r\n              if (!open && onClose) {\r\n                const data: PurchaseData = {\r\n                  token,\r\n                  maker: address,\r\n                }\r\n                onClose(data, stepData, buyStep)\r\n              }\r\n              setOpen(open)\r\n            }}\r\n            loading={loading}\r\n          >\r\n            {buyStep === BuyStep.Unavailable && !loading && (\r\n              <Flex direction=\"column\">\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ py: '$6', px: '$4', gap: '$3' }}\r\n                >\r\n                  <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                    {isOwner\r\n                      ? 'You already own this token.'\r\n                      : 'The listing is no longer available.'}\r\n                  </Text>\r\n                </Flex>\r\n                <Button\r\n                  onClick={() => {\r\n                    setOpen(false)\r\n                  }}\r\n                  css={{ m: '$4' }}\r\n                >\r\n                  {copy.ctaClose}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n\r\n            {/* {buyStep === BuyStep.SelectPayment && (\r\n              <Flex direction=\"column\" css={{ pb: 20 }}>\r\n                <Flex align=\"center\" css={{ gap: '$2' }}>\r\n                  <Button\r\n                    onClick={() => setBuyStep(BuyStep.Checkout)}\r\n                    color=\"ghost\"\r\n                    size=\"xs\"\r\n                    css={{ color: '$neutralSolidHover' }}\r\n                  >\r\n                    <FontAwesomeIcon icon={faChevronLeft} width={10} />\r\n                  </Button>\r\n                  <Text style=\"subtitle2\">Select Payment Method</Text>\r\n                </Flex>\r\n                <SelectPaymentToken\r\n                  paymentTokens={paymentTokens}\r\n                  currency={paymentCurrency}\r\n                  setCurrency={setPaymentCurrency}\r\n                  goBack={() => setBuyStep(BuyStep.Checkout)}\r\n                  itemAmount={quantity}\r\n                  chainId={modalChain?.id || 1}\r\n                />\r\n              </Flex>\r\n            )} */}\r\n\r\n            {buyStep === BuyStep.Checkout && !loading && (\r\n              <Flex direction=\"column\">\r\n                {transactionError && <ErrorWell error={transactionError} />}\r\n                <TokenInfo\r\n                  token={tokenData}\r\n                  chain={modalChain}\r\n                  collection={collection}\r\n                  css={{ p: '$4' }}\r\n                />\r\n                {quantityAvailable > 1 && (\r\n                  <Flex css={{ p: '$4' }} justify=\"between\">\r\n                    <Flex direction=\"column\" css={{ gap: '$1' }}>\r\n                      <Text style=\"body3\">Quantity</Text>\r\n                      <Text style=\"body3\" color=\"subtle\">\r\n                        {formatNumber(quantityAvailable)} items available\r\n                      </Text>\r\n                    </Flex>\r\n                    <QuantitySelector\r\n                      min={1}\r\n                      max={quantityAvailable}\r\n                      quantity={quantity}\r\n                      setQuantity={(quantity) => {\r\n                        setQuantity(quantity)\r\n                      }}\r\n                    />\r\n                  </Flex>\r\n                )}\r\n                <Flex\r\n                  direction=\"column\"\r\n                  css={{\r\n                    pb: '$2',\r\n                    borderTop: '1px solid $neutralBorder',\r\n                  }}\r\n                >\r\n                  {/* {paymentTokens.length > 1 ? (\r\n                    <Flex\r\n                      direction=\"column\"\r\n                      css={{\r\n                        gap: '$2',\r\n                        py: '$3',\r\n                        px: '$4',\r\n                        borderRadius: '$3',\r\n                        borderBottom: '1px solid $neutralBorder',\r\n                        '&:hover': {\r\n                          backgroundColor: '$neutralBgHover',\r\n                        },\r\n                      }}\r\n                      onClick={() => setBuyStep(BuyStep.SelectPayment)}\r\n                    >\r\n                      <Flex\r\n                        justify=\"between\"\r\n                        align=\"center\"\r\n                        css={{\r\n                          gap: '$1',\r\n                        }}\r\n                      >\r\n                        <Text style=\"subtitle2\">Payment Method</Text>\r\n                        <Flex\r\n                          align=\"center\"\r\n                          css={{ gap: '$2', cursor: 'pointer' }}\r\n                        >\r\n                          <Flex align=\"center\">\r\n                            <Text style=\"subtitle2\">\r\n                              {paymentCurrency?.name}\r\n                            </Text>\r\n                          </Flex>\r\n                          <Box css={{ color: '$neutralSolidHover' }}>\r\n                            <FontAwesomeIcon icon={faChevronRight} width={10} />\r\n                          </Box>\r\n                        </Flex>\r\n                      </Flex>\r\n                    </Flex>\r\n                  ) : null} */}\r\n                  <PaymentDetails\r\n                    feeOnTop={feeOnTop}\r\n                    feeUsd={feeUsd}\r\n                    crosschainFees={buyResponseFees}\r\n                    chainId={modalChain?.id}\r\n                    paymentCurrency={paymentCurrency}\r\n                    loading={isFetchingPath}\r\n                    css={{ pt: '$4' }}\r\n                  />\r\n                </Flex>\r\n\r\n                <Box css={{ p: '$4', width: '100%' }}>\r\n                  {hasEnoughCurrency || !isConnected ? (\r\n                    <>\r\n                      <Button\r\n                        disabled={!hasEnoughCurrency && isConnected}\r\n                        onClick={buyToken}\r\n                        css={{ width: '100%' }}\r\n                        color=\"primary\"\r\n                      >\r\n                        {!isConnected ? copy.ctaConnect : copy.ctaCheckout}\r\n                      </Button>\r\n                      {creditCardCheckoutButton && creditCardCheckoutButton}\r\n                    </>\r\n                  ) : (\r\n                    <Flex direction=\"column\" align=\"center\">\r\n                      <Flex align=\"center\" css={{ mb: '$3' }}>\r\n                        <Text css={{ mr: '$3' }} color=\"error\" style=\"body3\">\r\n                          Insufficient Balance\r\n                          {paymentTokens.length > 1\r\n                            ? ', select another token or add funds'\r\n                            : null}\r\n                        </Text>\r\n\r\n                        <FormatCryptoCurrency\r\n                          chainId={modalChain?.id}\r\n                          amount={paymentCurrency?.balance}\r\n                          address={paymentCurrency?.address}\r\n                          decimals={paymentCurrency?.decimals}\r\n                          symbol={paymentCurrency?.name}\r\n                          textStyle=\"body3\"\r\n                        />\r\n                      </Flex>\r\n\r\n                      {/* {paymentCurrency?.networkFees &&\r\n                      paymentCurrency?.networkFees > 0n ? (\r\n                        <Flex align=\"center\">\r\n                          <Text css={{ mr: '$3' }} color=\"error\" style=\"body3\">\r\n                            Estimated Gas Cost\r\n                          </Text>\r\n                          <FormatCryptoCurrency\r\n                            chainId={chainId}\r\n                            amount={paymentCurrency?.networkFees}\r\n                            address={paymentCurrency?.address}\r\n                            decimals={paymentCurrency?.decimals}\r\n                            symbol={paymentCurrency?.symbol}\r\n                            textStyle=\"body3\"\r\n                          />\r\n                        </Flex>\r\n                      ) : null} */}\r\n\r\n                      <Button\r\n                        disabled={providerOptions.disableJumperLink}\r\n                        onClick={() => {\r\n                          window.open(addFundsLink, '_blank')\r\n                        }}\r\n                        css={{ width: '100%' }}\r\n                      >\r\n                        {providerOptions.disableJumperLink\r\n                          ? copy.ctaCheckout\r\n                          : copy.ctaInsufficientFunds}\r\n                      </Button>\r\n                    </Flex>\r\n                  )}\r\n                </Box>\r\n              </Flex>\r\n            )}\r\n\r\n            {buyStep === BuyStep.Approving && token && (\r\n              <Flex direction=\"column\">\r\n                <TokenInfo\r\n                  token={tokenData}\r\n                  chain={modalChain}\r\n                  collection={collection}\r\n                  css={{ p: '$4', borderBottom: '1px solid $neutralBorder' }}\r\n                />\r\n                {stepData && stepData.totalSteps > 1 && (\r\n                  <ProgressBar\r\n                    css={{ px: '$4', mt: '$3' }}\r\n                    value={stepData?.stepProgress || 0}\r\n                    max={stepData?.totalSteps || 0}\r\n                  />\r\n                )}\r\n                {!stepData && <Loader css={{ height: 206 }} />}\r\n                {stepData && (\r\n                  <Progress\r\n                    title={stepData?.currentStep.action || ''}\r\n                    txHashes={stepData?.currentStepItem.txHashes}\r\n                  />\r\n                )}\r\n                <Button disabled={true} css={{ m: '$4' }}>\r\n                  <Loader />\r\n                  {stepData?.currentStepItem?.txHashes\r\n                    ? copy.ctaAwaitingValidation\r\n                    : copy.ctaAwaitingApproval}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n\r\n            {buyStep === BuyStep.Complete && token && (\r\n              <Flex direction=\"column\">\r\n                <Flex\r\n                  css={{\r\n                    p: '$4',\r\n                    py: '$5',\r\n                    flexDirection: 'column',\r\n                    alignItems: 'center',\r\n                    textAlign: 'center',\r\n                  }}\r\n                >\r\n                  {totalPurchases === 1 ? (\r\n                    <>\r\n                      <Text\r\n                        style=\"h5\"\r\n                        css={{ textAlign: 'center', mt: 24, mb: 24 }}\r\n                      >\r\n                        Congratulations!\r\n                      </Text>\r\n                    </>\r\n                  ) : (\r\n                    <>\r\n                      <Box\r\n                        css={{\r\n                          color: failedPurchases\r\n                            ? '$errorAccent'\r\n                            : '$successAccent',\r\n                        }}\r\n                      >\r\n                        <FontAwesomeIcon\r\n                          icon={\r\n                            failedPurchases\r\n                              ? faCircleExclamation\r\n                              : faCheckCircle\r\n                          }\r\n                          fontSize={32}\r\n                        />\r\n                      </Box>\r\n                      <Text\r\n                        style=\"h5\"\r\n                        css={{ textAlign: 'center', mt: 24, mb: 24 }}\r\n                      >\r\n                        {failedPurchases\r\n                          ? `${successfulPurchases} ${\r\n                              successfulPurchases > 1 ? 'items' : 'item'\r\n                            } purchased, ${failedPurchases} ${\r\n                              failedPurchases > 1 ? 'items' : 'item'\r\n                            } failed`\r\n                          : 'Congrats! Purchase was successful.'}\r\n                      </Text>\r\n                    </>\r\n                  )}\r\n                  {totalPurchases === 1 && (\r\n                    <img\r\n                      src={tokenData?.token?.imageSmall}\r\n                      style={{ width: 100, height: 100, objectFit: 'cover' }}\r\n                    />\r\n                  )}\r\n                  {totalPurchases > 1 && (\r\n                    <Flex direction=\"column\" css={{ gap: '$2' }}>\r\n                      {stepData?.currentStep?.items?.map((item, itemIndex) => {\r\n                        if (\r\n                          Array.isArray(item?.txHashes) &&\r\n                          item?.txHashes.length > 0\r\n                        ) {\r\n                          return item.txHashes.map((hash, txHashIndex) => {\r\n                            const truncatedTxHash = truncateAddress(hash.txHash)\r\n                            const blockExplorerBaseUrl =\r\n                              getChainBlockExplorerUrl(hash.chainId)\r\n                            return (\r\n                              <Anchor\r\n                                key={`${itemIndex}-${txHashIndex}`}\r\n                                href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                                color=\"primary\"\r\n                                weight=\"medium\"\r\n                                target=\"_blank\"\r\n                                css={{ fontSize: 12 }}\r\n                              >\r\n                                View transaction: {truncatedTxHash}\r\n                              </Anchor>\r\n                            )\r\n                          })\r\n                        } else {\r\n                          return null\r\n                        }\r\n                      })}\r\n                    </Flex>\r\n                  )}\r\n\r\n                  {totalPurchases === 1 && (\r\n                    <>\r\n                      <Flex\r\n                        css={{ mb: 24, mt: 24, maxWidth: '100%' }}\r\n                        align=\"center\"\r\n                        justify=\"center\"\r\n                      >\r\n                        {/* {!!tokenData?.token?.collection?.image && (\r\n                          <Box css={{ mr: '$1' }}>\r\n                            <img\r\n                              src={tokenData?.token?.collection?.image}\r\n                              style={{\r\n                                width: 24,\r\n                                height: 24,\r\n                                borderRadius: '50%',\r\n                              }}\r\n                            />\r\n                          </Box>\r\n                        )} */}\r\n                        <Text\r\n                          style=\"subtitle3\"\r\n                          css={{ maxWidth: '100%' }}\r\n                          ellipsify\r\n                        >\r\n                          {tokenData?.token?.name\r\n                            ? tokenData?.token?.name\r\n                            : `#${tokenData?.token?.tokenId}`}\r\n                        </Text>\r\n                      </Flex>\r\n                      <Flex css={{ mb: '$2' }} align=\"center\">\r\n                        <Box css={{ color: '$successAccent', mr: '$2' }}>\r\n                          <FontAwesomeIcon icon={faCheckCircle} />\r\n                        </Box>\r\n                        <Text style=\"body1\">\r\n                          Your transaction went through successfully\r\n                        </Text>\r\n                      </Flex>\r\n\r\n                      <Flex\r\n                        direction=\"column\"\r\n                        align=\"center\"\r\n                        css={{ gap: '$2' }}\r\n                      >\r\n                        {finalTxHashes?.map((hash, index) => {\r\n                          const truncatedTxHash = truncateAddress(hash.txHash)\r\n                          const blockExplorerBaseUrl = getChainBlockExplorerUrl(\r\n                            hash.chainId\r\n                          )\r\n                          return (\r\n                            <Anchor\r\n                              key={index}\r\n                              href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                              color=\"primary\"\r\n                              weight=\"medium\"\r\n                              target=\"_blank\"\r\n                              css={{ fontSize: 12 }}\r\n                            >\r\n                              View transaction: {truncatedTxHash}\r\n                            </Anchor>\r\n                          )\r\n                        })}\r\n                      </Flex>\r\n                    </>\r\n                  )}\r\n                </Flex>\r\n                <Flex\r\n                  css={{\r\n                    p: '$4',\r\n                    flexDirection: 'column',\r\n                    gap: '$3',\r\n                    '@bp1': {\r\n                      flexDirection: 'row',\r\n                    },\r\n                  }}\r\n                >\r\n                  {!!onGoToToken ? (\r\n                    <>\r\n                      <Button\r\n                        onClick={() => {\r\n                          setOpen(false)\r\n                        }}\r\n                        css={{ flex: 1 }}\r\n                        color=\"ghost\"\r\n                      >\r\n                        {copy.ctaClose}\r\n                      </Button>\r\n                      <Button\r\n                        style={{ flex: 1 }}\r\n                        color=\"primary\"\r\n                        onClick={() => {\r\n                          onGoToToken()\r\n                        }}\r\n                      >\r\n                        {copy.ctaGoToToken.length > 0\r\n                          ? copy.ctaGoToToken\r\n                          : `Go to ${\r\n                              successfulPurchases > 1 ? 'Tokens' : 'Token'\r\n                            }`}\r\n                      </Button>\r\n                    </>\r\n                  ) : (\r\n                    <Button\r\n                      onClick={() => {\r\n                        setOpen(false)\r\n                      }}\r\n                      style={{ flex: 1 }}\r\n                      color=\"primary\"\r\n                    >\r\n                      {copy.ctaClose}\r\n                    </Button>\r\n                  )}\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n          </Modal>\r\n        )\r\n      }}\r\n    </BuyModalRenderer>\r\n  )\r\n}\r\n\r\nBuyModal.Custom = BuyModalRenderer\r\n","import { Dispatch, SetStateAction, useState } from 'react'\r\n\r\ntype useStateType<S> = [S, Dispatch<SetStateAction<S>>]\r\n\r\nconst useFallbackState = <T>(defaultValue: T, state?: useStateType<T>) => {\r\n  const _state = useState<T>(defaultValue)\r\n\r\n  if (state) {\r\n    return state\r\n  }\r\n\r\n  return _state\r\n}\r\n\r\nexport default useFallbackState\r\n","import React, { ElementRef, forwardRef, ComponentPropsWithoutRef } from 'react'\r\nimport { styled } from '../../stitches.config'\r\n\r\nexport const StyledAnchor = styled('a', {\r\n  backgroundColor: 'transparent',\r\n  cursor: 'pointer',\r\n  fontFamily: '$body',\r\n  fontSize: 16,\r\n  color: 'inherit',\r\n  textDecoration: 'inherit',\r\n  $$focusColor: '$colors$neutralTextContrast',\r\n  '&:focus-visible': {\r\n    color: '$neutralTextContrast',\r\n    outline: 'none',\r\n    borderRadius: 4,\r\n    boxShadow: '0 0 0 2px $$focusColor',\r\n  },\r\n  variants: {\r\n    color: {\r\n      primary: {\r\n        color: '$accentText',\r\n        '&:hover': {\r\n          color: '$accentSolidHover',\r\n        },\r\n      },\r\n      gray: {\r\n        color: '$neutralText',\r\n        '&:hover': {\r\n          color: '$accentText',\r\n        },\r\n      },\r\n      error: {\r\n        color: '$errorAccent',\r\n      },\r\n    },\r\n    weight: {\r\n      heavy: {\r\n        fontWeight: 700,\r\n      },\r\n      medium: {\r\n        fontWeight: 500,\r\n      },\r\n    },\r\n  },\r\n  defaultVariants: {\r\n    color: 'gray',\r\n    weight: 'heavy',\r\n  },\r\n})\r\n\r\nexport default forwardRef<\r\n  ElementRef<typeof StyledAnchor>,\r\n  ComponentPropsWithoutRef<typeof StyledAnchor>\r\n>(({ children, ...props }, forwardedRef) => (\r\n  <StyledAnchor ref={forwardedRef} {...props} tabIndex={0}>\r\n    {children}\r\n  </StyledAnchor>\r\n))\r\n","import { styled } from '../../stitches.config'\r\n\r\nexport default styled('div', {\r\n  boxSizing: 'border-box',\r\n  borderStyle: 'solid',\r\n  borderWidth: 0,\r\n})\r\n","import { styled } from '../../stitches.config'\r\n\r\nconst Button = styled('button', {\r\n  backgroundColor: 'transparent',\r\n  backgroundImage: 'none',\r\n  outline: 'none',\r\n  fontWeight: 700,\r\n  fontSize: 16,\r\n  fontFamily: '$button',\r\n  transition: 'background-color 250ms linear',\r\n  gap: '$space$2',\r\n  display: 'inline-flex',\r\n  justifyContent: 'center',\r\n  color: '$buttonTextColor',\r\n  alignItems: 'center',\r\n  lineHeight: '20px',\r\n  $$focusColor: '$colors$focusColor',\r\n  cursor: 'pointer',\r\n  border: 0,\r\n  borderWidth: 0,\r\n  '&:focus-visible': {\r\n    boxShadow: '0 0 0 2px $$focusColor',\r\n  },\r\n  '&:disabled': {\r\n    backgroundColor: '$neutralBorder',\r\n    color: '$neutralText',\r\n  },\r\n  '&:disabled:hover': {\r\n    backgroundColor: '$neutralBorderHover',\r\n    color: '$neutralText',\r\n  },\r\n  variants: {\r\n    color: {\r\n      primary: {\r\n        backgroundColor: '$accentSolid',\r\n        color: '$buttonTextColor',\r\n        '&:hover': {\r\n          backgroundColor: '$accentSolidHover',\r\n          color: '$buttonTextHoverColor',\r\n        },\r\n      },\r\n      secondary: {\r\n        backgroundColor: '$neutralBgHover',\r\n        color: '$textColor',\r\n        '&:hover': {\r\n          backgroundColor: '$neutralBgActive',\r\n        },\r\n      },\r\n      ghost: {\r\n        backgroundColor: 'transparent',\r\n        p: 0,\r\n      },\r\n    },\r\n    corners: {\r\n      rounded: {\r\n        borderRadius: '$borderRadius',\r\n      },\r\n      pill: {\r\n        borderRadius: 99999,\r\n      },\r\n      circle: {\r\n        borderRadius: '99999px',\r\n        alignItems: 'center',\r\n        justifyContent: 'center',\r\n      },\r\n    },\r\n    size: {\r\n      none: {},\r\n      xs: {\r\n        p: '$space$3',\r\n        lineHeight: '16px',\r\n        minHeight: 40,\r\n      },\r\n      small: {\r\n        px: '$space$3',\r\n        py: '$space$4',\r\n        lineHeight: '12px',\r\n        minHeight: 44,\r\n      },\r\n      medium: {\r\n        px: '$space$5',\r\n        py: '$space$3',\r\n        minHeight: 44,\r\n      },\r\n      large: {\r\n        px: '$space$5',\r\n        py: '$space$4',\r\n        minHeight: 52,\r\n      },\r\n    },\r\n  },\r\n  compoundVariants: [\r\n    {\r\n      size: 'xs',\r\n      corners: 'circle',\r\n      css: {\r\n        height: 40,\r\n        width: 40,\r\n        p: 0,\r\n      },\r\n    },\r\n    {\r\n      size: 'small',\r\n      corners: 'circle',\r\n      css: {\r\n        height: 44,\r\n        width: 44,\r\n        p: 0,\r\n      },\r\n    },\r\n    {\r\n      size: 'medium',\r\n      corners: 'circle',\r\n      css: {\r\n        height: 44,\r\n        width: 44,\r\n        p: 0,\r\n      },\r\n    },\r\n    {\r\n      size: 'large',\r\n      corners: 'circle',\r\n      css: {\r\n        height: 52,\r\n        width: 52,\r\n        p: 0,\r\n      },\r\n    },\r\n  ],\r\n  defaultVariants: {\r\n    color: 'primary',\r\n    corners: 'rounded',\r\n    size: 'medium',\r\n  },\r\n})\r\n\r\nexport default Button\r\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport Flex from './Flex'\r\nimport Text from './Text'\r\nimport {faCircleExclamation} from '@fortawesome/free-solid-svg-icons'\r\nimport Anchor from './Anchor'\r\nimport { TransactionTimeoutError } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { truncateAddress } from '../lib/truncate'\r\n\r\ntype Props = {\r\n  error?: Error\r\n} & Pick<ComponentPropsWithoutRef<typeof Flex>, 'css'>\r\n\r\nexport default function ErrorWell({ error, css }: Props) {\r\n  let message = 'Oops, something went wrong. Please try again.'\r\n  let messageWithContent: ReactNode = null\r\n\r\n  const errorType = (error as any)?.type\r\n  const errorStatus = (error as any)?.statusCode\r\n  if (error) {\r\n    if (error?.message?.includes('rejected')) {\r\n      message = 'User rejected the request.'\r\n    } else if (errorType && errorType === 'price mismatch') {\r\n      message = error.message\r\n    } else if (\r\n      error.name === 'TransactionTimeoutError' &&\r\n      (error as TransactionTimeoutError).txHash &&\r\n      (error as TransactionTimeoutError).blockExplorerBaseUrl\r\n    ) {\r\n      let transactionError = error as TransactionTimeoutError\r\n      messageWithContent = (\r\n        <>\r\n          Your transaction was sent, but is taking longer to process.\r\n          <br />\r\n          <Anchor\r\n            href={`${transactionError.blockExplorerBaseUrl}/tx/${transactionError.txHash}`}\r\n            color=\"primary\"\r\n            weight=\"medium\"\r\n            target=\"_blank\"\r\n            css={{ fontSize: 12 }}\r\n          >\r\n            View on block explorer: {truncateAddress(transactionError.txHash)}\r\n          </Anchor>\r\n        </>\r\n      )\r\n    } else if (error.name === 'CrossChainTransactionError') {\r\n      messageWithContent = (\r\n        <>\r\n          Cross-chain purchase failed, please try again. Your balance can be\r\n          used for another purchase. For assistance or withdrawal help, please\r\n          contact{' '}\r\n          <Anchor\r\n            href={`https://reservoir.tools/#contact-us`}\r\n            color=\"primary\"\r\n            weight=\"medium\"\r\n            target=\"_blank\"\r\n            css={{ fontSize: 12 }}\r\n          >\r\n            Reservoir\r\n          </Anchor>\r\n          .\r\n        </>\r\n      )\r\n    } else if (errorStatus >= 400 && errorStatus < 500) {\r\n      message = error.message\r\n    }\r\n  }\r\n\r\n  return (\r\n    <Flex\r\n      css={{\r\n        color: '$errorAccent',\r\n        p: '$4',\r\n        gap: '$2',\r\n        background: '$wellBackground',\r\n        ...css,\r\n      }}\r\n      align=\"center\"\r\n    >\r\n      <FontAwesomeIcon icon={faCircleExclamation} width={16} height={16} />\r\n      <Text style=\"body3\" color=\"errorLight\">\r\n        {messageWithContent ? messageWithContent : message}\r\n      </Text>\r\n    </Flex>\r\n  )\r\n}\r\n","import { motion } from 'framer-motion'\r\nimport { styled } from '../../stitches.config'\r\n\r\nconst flexCss = {\r\n  display: 'flex',\r\n  boxSizing: 'border-box',\r\n  borderStyle: 'solid',\r\n  borderWidth: 0,\r\n  variants: {\r\n    align: {\r\n      start: {\r\n        alignItems: 'flex-start',\r\n      },\r\n      center: {\r\n        alignItems: 'center',\r\n      },\r\n      end: {\r\n        alignItems: 'flex-end',\r\n      },\r\n      stretch: {\r\n        alignItems: 'stretch',\r\n      },\r\n      baseline: {\r\n        alignItems: 'baseline',\r\n      },\r\n    },\r\n    justify: {\r\n      start: {\r\n        justifyContent: 'flex-start',\r\n      },\r\n      center: {\r\n        justifyContent: 'center',\r\n      },\r\n      end: {\r\n        justifyContent: 'flex-end',\r\n      },\r\n      between: {\r\n        justifyContent: 'space-between',\r\n      },\r\n    },\r\n    direction: {\r\n      row: {\r\n        flexDirection: 'row',\r\n      },\r\n      column: {\r\n        flexDirection: 'column',\r\n      },\r\n      rowReverse: {\r\n        flexDirection: 'row-reverse',\r\n      },\r\n      columnReverse: {\r\n        flexDirection: 'column-reverse',\r\n      },\r\n    },\r\n    wrap: {\r\n      noWrap: {\r\n        flexWrap: 'nowrap',\r\n      },\r\n      wrap: {\r\n        flexWrap: 'wrap',\r\n      },\r\n      wrapReverse: {\r\n        flexWrap: 'wrap-reverse',\r\n      },\r\n    },\r\n  },\r\n}\r\n\r\nexport default styled('div', flexCss)\r\nexport const AnimatedFlex = styled(motion.div, flexCss)\r\n","import { styled } from '../../stitches.config'\r\n\r\nexport default styled('span', {\r\n  color: '$textColor',\r\n  fontFamily: '$body',\r\n  letterSpacing: 0,\r\n  margin: 0,\r\n\r\n  variants: {\r\n    color: {\r\n      base: {\r\n        color: '$textColor',\r\n      },\r\n      subtle: {\r\n        color: '$neutralText',\r\n      },\r\n      error: {\r\n        color: '$errorAccent',\r\n      },\r\n      errorLight: {\r\n        color: '$errorText',\r\n      },\r\n      accent: {\r\n        color: '$accentText',\r\n      },\r\n      success: {\r\n        color: '$successAccent',\r\n      },\r\n      button: {\r\n        color: '$buttonTextColor',\r\n      },\r\n    },\r\n    style: {\r\n      h2: {\r\n        fontWeight: 700,\r\n        fontSize: 48,\r\n        fontFamily: '$headline',\r\n      },\r\n      h3: {\r\n        fontWeight: 700,\r\n        fontSize: 32,\r\n        fontFamily: '$headline',\r\n      },\r\n      h4: {\r\n        fontWeight: 700,\r\n        fontSize: 24,\r\n        fontFamily: '$headline',\r\n      },\r\n      h5: {\r\n        fontWeight: 700,\r\n        fontSize: 20,\r\n        fontFamily: '$headline',\r\n      },\r\n      h6: {\r\n        fontWeight: 700,\r\n        fontSize: 16,\r\n        fontFamily: '$headline',\r\n      },\r\n      subtitle1: {\r\n        fontWeight: 500,\r\n        fontSize: 16,\r\n      },\r\n      subtitle2: {\r\n        fontWeight: 500,\r\n        fontSize: 14,\r\n      },\r\n      subtitle3: {\r\n        fontWeight: 500,\r\n        fontSize: 12,\r\n      },\r\n      body1: {\r\n        fontWeight: 400,\r\n        fontSize: 16,\r\n      },\r\n      body2: {\r\n        fontWeight: 400,\r\n        fontSize: 14,\r\n      },\r\n      body3: {\r\n        fontWeight: 400,\r\n        fontSize: 12,\r\n      },\r\n      tiny: {\r\n        fontWeight: 500,\r\n        fontSize: 10,\r\n        color: '$neutralSolidHover',\r\n      },\r\n    },\r\n    italic: {\r\n      true: {\r\n        fontStyle: 'italic',\r\n      },\r\n    },\r\n    ellipsify: {\r\n      true: {\r\n        textOverflow: 'ellipsis',\r\n        overflow: 'hidden',\r\n        whiteSpace: 'nowrap',\r\n      },\r\n    },\r\n  },\r\n  compoundVariants: [\r\n    {\r\n      style: 'tiny',\r\n      color: 'base',\r\n      css: {\r\n        color: '$textColor',\r\n      },\r\n    },\r\n  ],\r\n  defaultVariants: {\r\n    style: 'body1',\r\n    color: 'base',\r\n  },\r\n})\r\n","/**\r\n * Ensure that an Ethereum address does not overflow\r\n * by removing the middle characters\r\n * @param address An Ethereum address\r\n * @param shrinkInidicator Visual indicator to show address is only\r\n * partially displayed\r\n * @returns A shrinked version of the Ethereum address\r\n * with the middle characters removed.\r\n */\r\nexport function truncateAddress(address: string, shrinkInidicator?: string) {\r\n  return address.slice(0, 4) + (shrinkInidicator || '…') + address.slice(-4)\r\n}\r\n","import FormatCrypto from './FormatCrypto'\r\nimport React, { FC, ComponentProps } from 'react'\r\nimport CryptoCurrencyIcon from './CryptoCurrencyIcon'\r\nimport { useAccount } from 'wagmi'\r\nimport Tooltip from './Tooltip'\r\nimport Anchor from './Anchor'\r\nimport { zeroAddress } from 'viem'\r\n\r\ntype FormatCryptoCurrencyProps = {\r\n  logoWidth?: number\r\n  address?: string\r\n  chainId?: number\r\n  symbol?: string\r\n}\r\n\r\ntype Props = ComponentProps<typeof FormatCrypto> & FormatCryptoCurrencyProps\r\n\r\nconst FormatCryptoCurrency: FC<Props> = ({\r\n  amount,\r\n  address = zeroAddress,\r\n  maximumFractionDigits,\r\n  logoWidth = 14,\r\n  textStyle,\r\n  css,\r\n  textColor,\r\n  decimals,\r\n  chainId,\r\n  symbol,\r\n}) => {\r\n  const { chain: activeChain } = useAccount()\r\n  const blockExplorerBaseUrl =\r\n    activeChain?.blockExplorers?.default?.url || 'https://etherscan.io'\r\n\r\n  return (\r\n    <FormatCrypto\r\n      css={css}\r\n      textColor={textColor}\r\n      textStyle={textStyle}\r\n      amount={amount}\r\n      maximumFractionDigits={maximumFractionDigits}\r\n      decimals={decimals}\r\n    >\r\n      {symbol ? (\r\n        <Tooltip\r\n          side=\"top\"\r\n          content={\r\n            <Anchor\r\n              href={`${blockExplorerBaseUrl}/address/${address}`}\r\n              target=\"_blank\"\r\n              weight=\"medium\"\r\n              css={{ fontSize: 14 }}\r\n              onClick={(event) => event.stopPropagation()}\r\n            >\r\n              {symbol}\r\n            </Anchor>\r\n          }\r\n        >\r\n          <CryptoCurrencyIcon\r\n            css={{ height: logoWidth }}\r\n            address={address}\r\n            chainId={chainId}\r\n          />\r\n        </Tooltip>\r\n      ) : (\r\n        <CryptoCurrencyIcon\r\n          css={{ height: logoWidth }}\r\n          address={address}\r\n          chainId={chainId}\r\n        />\r\n      )}\r\n    </FormatCrypto>\r\n  )\r\n}\r\n\r\nexport default FormatCryptoCurrency\r\n","import { formatBN } from '../lib/numbers'\r\nimport React, { FC } from 'react'\r\nimport { Flex, Text } from './index'\r\n\r\ntype Props = {\r\n  amount: string | number | bigint | null | undefined\r\n  maximumFractionDigits?: number\r\n  decimals?: number\r\n  css?: Parameters<typeof Text>['0']['css']\r\n  textStyle?: Parameters<typeof Text>['0']['style']\r\n  textColor?: Parameters<typeof Text>['0']['color']\r\n  children?: React.ReactNode\r\n}\r\n\r\nconst FormatCrypto: FC<Props> = ({\r\n  amount,\r\n  maximumFractionDigits = 4,\r\n  decimals = 18,\r\n  css,\r\n  textStyle = 'subtitle3',\r\n  textColor = 'base',\r\n  children,\r\n}) => {\r\n  const value = formatBN(amount, maximumFractionDigits, decimals)\r\n  return (\r\n    <Flex align=\"center\" css={{ gap: '$1' }}>\r\n      {value !== '-' ? children : null}\r\n      <Text style={textStyle} color={textColor} css={css} as=\"p\">\r\n        {value}\r\n      </Text>\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default FormatCrypto\r\n","import { formatUnits } from 'viem'\r\n\r\nconst isSafariBrowser = () =>\r\n  typeof window !== 'undefined' &&\r\n  navigator.userAgent.indexOf('Safari') > -1 &&\r\n  navigator.userAgent.indexOf('Chrome') <= -1\r\n\r\nfunction toFixed(num: number, fixed: number) {\r\n  const re = new RegExp('^-?\\\\d+(?:.\\\\d{0,' + (fixed || -1) + '})?')\r\n  const fixedNum = num.toString().match(re)\r\n  return fixedNum ? fixedNum[0] : num\r\n}\r\n\r\nfunction formatNumber(\r\n  amount: number | null | undefined,\r\n  maximumFractionDigits: number = 2\r\n) {\r\n  const { format } = new Intl.NumberFormat('en-US', {\r\n    maximumFractionDigits: maximumFractionDigits,\r\n  })\r\n  if (amount === null || amount === undefined) {\r\n    return '-'\r\n  }\r\n  return format(amount)\r\n}\r\n\r\nconst truncateFractionAndFormat = (\r\n  parts: Intl.NumberFormatPart[],\r\n  digits: number\r\n) => {\r\n  return parts\r\n    .map(({ type, value }) => {\r\n      if (type !== 'fraction' || !value || value.length < digits) {\r\n        return value\r\n      }\r\n\r\n      let formattedValue = ''\r\n      for (let idx = 0; idx < value.length && idx < digits; idx++) {\r\n        formattedValue += value[idx]\r\n      }\r\n      return formattedValue\r\n    })\r\n    .reduce((string, part) => string + part)\r\n}\r\n\r\n/**\r\n *  Convert ETH values to human readable formats\r\n * @param amount An ETH amount\r\n * @param maximumFractionDigits Number of decimal digits\r\n * @returns returns the ETH value as a `string` or `-` if the amount is `null` or `undefined`\r\n */\r\nfunction formatBN(\r\n  amount: string | number | bigint | null | undefined,\r\n  maximumFractionDigits: number,\r\n  decimals: number = 18\r\n) {\r\n  if (typeof amount === 'undefined' || amount === null) return '-'\r\n\r\n  const amountToFormat =\r\n    typeof amount === 'number'\r\n      ? amount\r\n      : +formatUnits(BigInt(amount), decimals || 18)\r\n\r\n  const amountFraction = `${amount}`.split('.')[1]\r\n  const isSafari = isSafariBrowser()\r\n  const formatOptions: Intl.NumberFormatOptions = {\r\n    minimumFractionDigits: 0,\r\n    maximumFractionDigits: 20,\r\n    useGrouping: true,\r\n    notation: 'compact',\r\n    compactDisplay: 'short',\r\n  }\r\n\r\n  // New issue introduced in Safari v16 causes a regression and now need lessPrecision flagged in format options\r\n  if (isSafari) {\r\n    //@ts-ignore\r\n    formatOptions.roundingPriority = 'lessPrecision'\r\n  }\r\n\r\n  const parts = new Intl.NumberFormat('en-US', formatOptions).formatToParts(\r\n    amountToFormat\r\n  )\r\n\r\n  // Safari has a few bugs with the fraction part of formatToParts, sometimes rounding when unnecessary and\r\n  // when amount is in the thousands not properly representing the value in compact display. Until the bug is fixed\r\n  // this workaround should help. bugzilla bug report: https://bugs.webkit.org/show_bug.cgi?id=249231\r\n  // Update: this has been fixed, but still applied for >v15.3 and <v16\r\n\r\n  if (isSafari) {\r\n    const partTypes = parts.map((part) => part.type)\r\n    const partsIncludesFraction = partTypes.includes('fraction')\r\n    const partsIncludeCompactIdentifier = partTypes.includes('compact')\r\n    if (amountFraction) {\r\n      if (!partsIncludesFraction && !partsIncludeCompactIdentifier) {\r\n        const integerIndex = parts.findIndex((part) => part.type === 'integer')\r\n        parts.splice(\r\n          integerIndex + 1,\r\n          0,\r\n          {\r\n            type: 'decimal',\r\n            value: '.',\r\n          },\r\n          {\r\n            type: 'fraction',\r\n            value: amountFraction,\r\n          }\r\n        )\r\n      }\r\n    } else if (!partsIncludesFraction && partsIncludeCompactIdentifier) {\r\n      const compactIdentifier = parts.find((part) => part.type === 'compact')\r\n      const integerIndex = parts.findIndex((part) => part.type === 'integer')\r\n      const integer = parts[integerIndex]\r\n      if (compactIdentifier?.value === 'K' && integer) {\r\n        const fraction = `${amount}`.replace(integer.value, '')[0]\r\n        if (fraction && Number(fraction) > 0) {\r\n          parts.splice(\r\n            integerIndex + 1,\r\n            0,\r\n            {\r\n              type: 'decimal',\r\n              value: '.',\r\n            },\r\n            {\r\n              type: 'fraction',\r\n              value: fraction,\r\n            }\r\n          )\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  if (parts && parts.length > 0) {\r\n    const lowestValue = Number(\r\n      `0.${new Array(maximumFractionDigits).join('0')}1`\r\n    )\r\n\r\n    if (amountToFormat > 1000) {\r\n      return truncateFractionAndFormat(parts, 1)\r\n    } else if (\r\n      amountToFormat < 1 &&\r\n      amountToFormat < lowestValue &&\r\n      amountToFormat !== 0\r\n    ) {\r\n      return `< ${lowestValue}`\r\n    } else {\r\n      return truncateFractionAndFormat(parts, maximumFractionDigits)\r\n    }\r\n  } else {\r\n    return typeof amount === 'string' || typeof amount === 'number'\r\n      ? `${amount}`\r\n      : ''\r\n  }\r\n}\r\n\r\nexport { formatBN, formatNumber, toFixed }\r\n","import EthLogo from './EthLogo'\r\nimport React, { FC } from 'react'\r\nimport { useReservoirClient, useChainCurrency } from '../hooks/index'\r\nimport { zeroAddress } from 'viem'\r\nimport { styled } from '../../stitches.config'\r\nimport { StyledComponent } from '@stitches/react/types/styled-component'\r\nimport Box from './Box'\r\nimport wrappedContracts from '../constants/wrappedContracts'\r\nimport WEthIcon from '../img/WEthIcon'\r\n\r\ntype Props = {\r\n  address: string\r\n  chainId?: number\r\n} & Parameters<StyledComponent>['0']\r\n\r\nconst StyledImg = styled('img', {})\r\n\r\nconst CryptoCurrencyIcon: FC<Props> = ({\r\n  address = zeroAddress,\r\n  chainId,\r\n  css,\r\n}) => {\r\n  const client = useReservoirClient()\r\n  const chainCurrency = useChainCurrency(chainId)\r\n  const chain = client?.chains.find(\r\n    (chain) => chain.id === chainCurrency.chainId\r\n  )\r\n\r\n  if (chainCurrency.symbol === 'ETH') {\r\n    if (zeroAddress === address) {\r\n      return (\r\n        <Box css={{ display: 'flex', ...css }}>\r\n          <EthLogo />\r\n        </Box>\r\n      )\r\n    }\r\n    if (wrappedContracts[chainCurrency.chainId] === address) {\r\n      return (\r\n        <Box css={{ display: 'flex', ...css }}>\r\n          <WEthIcon />\r\n        </Box>\r\n      )\r\n    }\r\n  }\r\n\r\n  return (\r\n    <StyledImg\r\n      src={`https://aurascan.io/assets/images/logo/title-logo.png`}\r\n      // src={`${chain?.baseApiUrl}/redirect/currency/${address}/icon/v1`}\r\n      css={{\r\n        borderRadius: '100%',\r\n        ...css,\r\n      }}\r\n    />\r\n  )\r\n}\r\n\r\nexport default CryptoCurrencyIcon\r\n","import React, { useContext } from 'react'\r\nimport { ThemeContext } from '../ReservoirKitProvider'\r\nimport { ReservoirKitThemeContext } from '../../stitches.config'\r\nimport EthIconGlyph from '../img/EthIconGlyph'\r\nimport EthIconGray from '../img/EthIconGray'\r\nimport EthIconPurple from '../img/EthIconPurple'\r\n\r\nconst EthLogo = () => {\r\n  const themeContext = useContext(ThemeContext)\r\n  const ethIcon: ReservoirKitThemeContext['assets']['ethIcon']['value'] =\r\n    themeContext && (themeContext as any)\r\n      ? themeContext['assets']['ethIcon']['value']\r\n      : 'glyph'\r\n\r\n  switch (ethIcon) {\r\n    case 'glyph':\r\n      return <EthIconGlyph />\r\n    case 'gray':\r\n      return <EthIconGray />\r\n    case 'purple':\r\n      return <EthIconPurple />\r\n  }\r\n}\r\n\r\nexport default EthLogo\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"5 0 15 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M11.9441 17.97L4.58008 13.62L11.9431 24L19.3131 13.62L11.9411 17.97H11.9441V17.97ZM12.0561 0L4.69008 12.223L12.0551 16.577L19.4201 12.227L12.0561 0Z\"\r\n      fill=\"black\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"5 0 15 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clipPath=\"url(#clip0_2127_56739)\">\r\n      <path\r\n        d=\"M11.9979 0L11.8369 0.546928V16.4161L11.9979 16.5767L19.3641 12.2225L11.9979 0Z\"\r\n        fill=\"#343434\"\r\n      />\r\n      <path\r\n        d=\"M11.9979 0L4.63159 12.2225L11.9979 16.5767V8.87428V0Z\"\r\n        fill=\"#8C8C8C\"\r\n      />\r\n      <path\r\n        d=\"M11.998 17.9714L11.9072 18.0821V23.7349L11.998 23.9999L19.3686 13.6195L11.998 17.9714Z\"\r\n        fill=\"#3C3C3B\"\r\n      />\r\n      <path\r\n        d=\"M11.9979 23.9999V17.9714L4.63159 13.6195L11.9979 23.9999Z\"\r\n        fill=\"#8C8C8C\"\r\n      />\r\n      <path\r\n        d=\"M11.998 16.5767L19.3642 12.2225L11.998 8.87427V16.5767Z\"\r\n        fill=\"#141414\"\r\n      />\r\n      <path\r\n        d=\"M4.63159 12.2225L11.9979 16.5767V8.87427L4.63159 12.2225Z\"\r\n        fill=\"#393939\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_2127_56739\">\r\n        <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"5 0 15 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path d=\"M12.3654 8.87477V0L5 12.2224L12.3654 8.87477Z\" fill=\"#8A92B2\" />\r\n    <path\r\n      d=\"M12.3654 16.5772V8.87477L5 12.2224L12.3654 16.5772ZM12.3654 8.87477L19.7322 12.2224L12.3654 0V8.87477Z\"\r\n      fill=\"#62688F\"\r\n    />\r\n    <path\r\n      d=\"M12.3655 8.87476V16.5772L19.7322 12.2224L12.3655 8.87476Z\"\r\n      fill=\"#454A75\"\r\n    />\r\n    <path\r\n      d=\"M12.3654 17.972L5 13.6199L12.3654 23.9999V17.972Z\"\r\n      fill=\"#8A92B2\"\r\n    />\r\n    <path\r\n      d=\"M19.7363 13.6199L12.3655 17.972V23.9999L19.7363 13.6199Z\"\r\n      fill=\"#62688F\"\r\n    />\r\n  </svg>\r\n)\r\n","const wrappedContracts: Record<number, string> = {\r\n  1: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', //mainnet\r\n  5: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', //goerli\r\n  10: '0x4200000000000000000000000000000000000006', //optimism\r\n  56: '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c', //bnb\r\n  204: '0x4200000000000000000000000000000000000006', //opbnb\r\n  137: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', //polygon\r\n  324: '0x5aea5775959fbc2557cc8789bc1bf90a239d9a91', //zksync\r\n  1101: '0x4f9a0e7fd2bf6067db6994cf12e4495df938e6e9', // zkEVM\r\n  42161: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', //arbitrum\r\n  42170: '0x722e8bdd2ce80a4422e880164f2079488e115365', //arbitrum nova\r\n  43114: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', //avalance\r\n  59144: '0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f',\r\n  999: '0x8a5027ea12f45a13deb6CB96A07913c6e192BE84', //zoratestnet\r\n  80001: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', //mumbai\r\n  8453: '0x4200000000000000000000000000000000000006', //base\r\n  84531: '0x4200000000000000000000000000000000000006', //base goerli\r\n  84532: '0x4200000000000000000000000000000000000006', //base sepolia\r\n  534353: '0xa1EA0B2354F5A344110af2b6AD68e75545009a03', //scrolltestnet\r\n  534352: '0x5300000000000000000000000000000000000004', //scroll\r\n  7777777: '0x4200000000000000000000000000000000000006', //zora\r\n  11155111: '0x7b79995e5f793a07bc00c21412e50ecae098e7f9', //sepolia\r\n  888888888: '0x4200000000000000000000000000000000000006', //ancient8\r\n  28122024: '0x4200000000000000000000000000000000000006', //ancient8testnet\r\n  68840142: '0x822b4c4713433c6b88547845850a39343bf0957e', //frametestnet\r\n  168587773: '0x4200000000000000000000000000000000000006', //blast sepolia\r\n  70700: '0x77684A04145a5924eFCE0D92A7c4a2A2E8C359de', //apex pop\r\n  81457: '0x4200000000000000000000000000000000000023', //blast\r\n  1235: '0x7C258D32e0C5ADda30d18194870b56A38E2EBBbC', //aura evm dev\r\n  1236: '0xE974cC14c93FC6077B0d65F98832B846C5454A0B', //aura evm serenity\r\n  6321: '0x7f4f375454B34895DAE95e0cCEDc0743B3850893', //aura evm euphoria\r\n  6322: '0xDE47A655a5d9904BD3F7e1A536D8323fBD99993A', //aura evm main\r\n}\r\n\r\nexport default wrappedContracts\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 15 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path d=\"M7.49721 0L0 12.4432L7.49721 9.03511V0Z\" fill=\"#AE1955\" />\r\n    <path\r\n      d=\"M7.49721 9.03506L0 12.4432L7.49721 16.8767V9.03506Z\"\r\n      fill=\"#801D45\"\r\n    />\r\n    <path\r\n      d=\"M14.9959 12.4433L7.49731 0V9.03511L14.9959 12.4433Z\"\r\n      fill=\"#801D45\"\r\n    />\r\n    <path\r\n      d=\"M7.49731 16.8767L14.9959 12.4432L11.2466 10.7391L7.49731 9.03506V16.8767Z\"\r\n      fill=\"#641D3B\"\r\n    />\r\n    <path d=\"M0 13.8661L7.49721 24.4337V18.2968L0 13.8661Z\" fill=\"#AE1955\" />\r\n    <path\r\n      d=\"M7.49731 18.2968V24.4337L15.0001 13.8661L7.49731 18.2968Z\"\r\n      fill=\"#801D45\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\r\nimport * as Popover from '@radix-ui/react-popover'\r\nimport Box from './Box'\r\nimport { styled } from '../../stitches.config'\r\nimport { useMediaQuery } from '@react-hookz/web'\r\n\r\nexport const TooltipArrow = styled(TooltipPrimitive.Arrow, {\r\n  fill: '$neutralBgHover',\r\n})\r\n\r\nconst PopoverArrow = styled(Popover.Arrow, {\r\n  fill: '$neutralBgHover',\r\n})\r\n\r\nconst Tooltip = ({\r\n  children,\r\n  content,\r\n  open,\r\n  defaultOpen,\r\n  onOpenChange,\r\n  delayDuration = 0,\r\n  ...props\r\n}: any) => {\r\n  const isSmallDevice = useMediaQuery('only screen and (max-width : 768px)')\r\n\r\n  if (isSmallDevice) {\r\n    return (\r\n      <Popover.Root\r\n        open={open}\r\n        defaultOpen={defaultOpen}\r\n        onOpenChange={onOpenChange}\r\n      >\r\n        <Popover.Trigger\r\n          style={{\r\n            backgroundColor: 'transparent',\r\n            borderWidth: 0,\r\n            padding: 0,\r\n            display: 'flex',\r\n          }}\r\n        >\r\n          {children}\r\n        </Popover.Trigger>\r\n        <Popover.Content\r\n          sideOffset={2}\r\n          side=\"bottom\"\r\n          align=\"center\"\r\n          style={{ zIndex: 100, outline: 'none' }}\r\n          {...props}\r\n        >\r\n          <PopoverArrow />\r\n          <Box\r\n            css={{\r\n              zIndex: 9999,\r\n              $$shadowColor: '$colors$gray7',\r\n              boxShadow: '0px 1px 5px rgba(0,0,0,0.2)',\r\n              borderRadius: 8,\r\n              overflow: 'hidden',\r\n            }}\r\n          >\r\n            <Box\r\n              css={{\r\n                background: '$neutralBgHover',\r\n                p: '$2',\r\n              }}\r\n            >\r\n              {content}\r\n            </Box>\r\n          </Box>\r\n        </Popover.Content>\r\n      </Popover.Root>\r\n    )\r\n  }\r\n  return (\r\n    <TooltipPrimitive.Root\r\n      open={open}\r\n      defaultOpen={defaultOpen}\r\n      onOpenChange={onOpenChange}\r\n      delayDuration={delayDuration}\r\n    >\r\n      <TooltipPrimitive.Trigger\r\n        style={{\r\n          backgroundColor: 'transparent',\r\n          borderWidth: 0,\r\n          padding: 0,\r\n          display: 'flex',\r\n        }}\r\n      >\r\n        {children}\r\n      </TooltipPrimitive.Trigger>\r\n      <TooltipPrimitive.Content\r\n        sideOffset={2}\r\n        side=\"bottom\"\r\n        align=\"center\"\r\n        style={{ zIndex: 100 }}\r\n        {...props}\r\n      >\r\n        <TooltipArrow />\r\n        <Box\r\n          css={{\r\n            zIndex: 9999,\r\n            $$shadowColor: '$colors$gray7',\r\n            boxShadow: '0px 1px 5px rgba(0,0,0,0.2)',\r\n            borderRadius: 8,\r\n            overflow: 'hidden',\r\n          }}\r\n        >\r\n          <Box\r\n            css={{\r\n              background: '$neutralBgHover',\r\n              p: '$2',\r\n            }}\r\n          >\r\n            {content}\r\n          </Box>\r\n        </Box>\r\n      </TooltipPrimitive.Content>\r\n    </TooltipPrimitive.Root>\r\n  )\r\n}\r\n\r\nexport default Tooltip\r\n","import { faSpinner } from '@fortawesome/free-solid-svg-icons'\r\nimport { styled } from '../../stitches.config'\r\nimport React, { ComponentPropsWithoutRef, ReactNode } from 'react'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { motion } from 'framer-motion'\r\n\r\nconst LoaderContainer = styled('div', {\r\n  display: 'flex',\r\n  justifyContent: 'center',\r\n  alignItems: 'center',\r\n  color: '$neutralText',\r\n})\r\n\r\ntype Props = ComponentPropsWithoutRef<typeof LoaderContainer> & {\r\n  icon?: ReactNode\r\n}\r\n\r\nexport default function Loader(props: Props) {\r\n  const { icon, ...containerProps } = props\r\n  return (\r\n    <LoaderContainer {...containerProps}>\r\n      <motion.div\r\n        initial={{ rotate: 0 }}\r\n        transition={{ repeat: Infinity, duration: 1, ease: 'linear' }}\r\n        animate={{ rotate: 360 }}\r\n      >\r\n        {icon ? (\r\n          icon\r\n        ) : (\r\n          <FontAwesomeIcon icon={faSpinner} width={20} height={20} />\r\n        )}\r\n      </motion.div>\r\n    </LoaderContainer>\r\n  )\r\n}\r\n","import { Anchor, Box, Flex, Text } from '../primitives'\r\nimport React, { FC, useMemo } from 'react'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faWallet, faCube } from '@fortawesome/free-solid-svg-icons'\r\nimport { truncateAddress } from '../lib/truncate'\r\nimport { Execute } from '@sh-reservoir0x/reservoir-sdk'\r\nimport getChainBlockExplorerUrl from '../lib/getChainBlockExplorerUrl'\r\n\r\ntype Props = {\r\n  title: string\r\n  txHashes?: NonNullable<Execute['steps'][0]['items']>[0]['txHashes']\r\n}\r\n\r\nconst Progress: FC<Props> = ({ title, txHashes }) => {\r\n  const hasTxHashes = txHashes && txHashes.length > 0\r\n\r\n  const enhancedTxHashes = useMemo(() => {\r\n    return txHashes?.map((hash) => {\r\n      const truncatedTxHash = truncateAddress(hash.txHash)\r\n      const blockExplorerUrl = getChainBlockExplorerUrl(hash.chainId)\r\n      return {\r\n        txHash: hash.txHash,\r\n        chainId: hash.chainId,\r\n        truncatedTxHash: truncatedTxHash,\r\n        blockExplorerUrl: blockExplorerUrl,\r\n      }\r\n    })\r\n  }, [txHashes])\r\n\r\n  return (\r\n    <Flex\r\n      direction=\"column\"\r\n      css={{\r\n        alignItems: 'center',\r\n        gap: '$4',\r\n        mt: '$5',\r\n        mb: '$3',\r\n      }}\r\n    >\r\n      <Text style=\"h6\">{title}</Text>\r\n      <Box css={{ color: '$neutralText' }}>\r\n        <FontAwesomeIcon\r\n          icon={hasTxHashes ? faCube : faWallet}\r\n          style={{\r\n            width: '32px',\r\n            height: '32px',\r\n            marginTop: '12px 0px',\r\n          }}\r\n        />\r\n      </Box>\r\n      {hasTxHashes ? (\r\n        <Flex direction=\"column\" align=\"center\" css={{ gap: '$2' }}>\r\n          {enhancedTxHashes?.map((enhancedTxHash, index) => (\r\n            <Anchor\r\n              key={index}\r\n              href={`${enhancedTxHash.blockExplorerUrl}/tx/${enhancedTxHash.txHash}`}\r\n              color=\"primary\"\r\n              weight=\"medium\"\r\n              target=\"_blank\"\r\n              css={{ fontSize: 12 }}\r\n            >\r\n              View transaction: {enhancedTxHash.truncatedTxHash}\r\n            </Anchor>\r\n          ))}\r\n        </Flex>\r\n      ) : null}\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default Progress\r\n","import * as allChains from 'viem/chains'\r\nimport { customChains } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { ChainConfig } from '../constants/common'\r\n\r\nconst getChainBlockExplorerUrl = (chainId: number) => {\r\n  const wagmiChain: allChains.Chain | undefined = Object.values({\r\n    ...allChains,\r\n    ...customChains,\r\n  }).find(({ id }) => id === chainId)\r\n\r\n  return (\r\n    wagmiChain?.blockExplorers?.default?.url ||\r\n    ChainConfig[chainId]?.blockExplorers?.default?.url\r\n  )\r\n}\r\n\r\nexport default getChainBlockExplorerUrl\r\n","import React, {\r\n  ComponentPropsWithoutRef,\r\n  ElementRef,\r\n  forwardRef,\r\n  ReactNode,\r\n  useContext,\r\n} from 'react'\r\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport {\r\n  faChevronLeft,\r\n  faLock,\r\n  faClose,\r\n} from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport { Anchor, Button, Flex, Text, Loader, Box } from '../primitives'\r\nimport { styled } from '../../stitches.config'\r\nimport { Dialog } from '../primitives/Dialog'\r\nimport { ProviderOptionsContext } from '../ReservoirKitProvider'\r\nimport ReservoirText from '../img/ReservoirText'\r\n\r\nconst Title = styled(DialogPrimitive.Title, {\r\n  margin: 0,\r\n})\r\n\r\nexport enum ModalSize {\r\n  MD,\r\n  LG,\r\n}\r\n\r\ntype Props = {\r\n  title: string\r\n  children: ReactNode\r\n  size?: ModalSize\r\n  onBack?: (() => void) | null\r\n  loading?: boolean\r\n} & Pick<\r\n  ComponentPropsWithoutRef<typeof Dialog>,\r\n  | 'onPointerDownOutside'\r\n  | 'onOpenChange'\r\n  | 'open'\r\n  | 'trigger'\r\n  | 'onFocusCapture'\r\n>\r\n\r\nexport const Logo = styled(ReservoirText, {\r\n  fill: '$neutralText',\r\n  '&:hover': {\r\n    fill: '$neutralSolid',\r\n  },\r\n})\r\n\r\nexport const Modal = forwardRef<ElementRef<typeof Dialog>, Props>(\r\n  (\r\n    {\r\n      title,\r\n      children,\r\n      trigger,\r\n      onBack,\r\n      open,\r\n      size = ModalSize.MD,\r\n      onOpenChange,\r\n      loading,\r\n      onPointerDownOutside,\r\n      onFocusCapture,\r\n    },\r\n    forwardedRef\r\n  ) => {\r\n    const providerOptionsContext = useContext(ProviderOptionsContext)\r\n\r\n    return (\r\n      <Dialog\r\n        ref={forwardedRef}\r\n        trigger={trigger}\r\n        open={open}\r\n        onOpenChange={onOpenChange}\r\n        size={size}\r\n        onPointerDownOutside={onPointerDownOutside}\r\n        onFocusCapture={onFocusCapture}\r\n      >\r\n        <Flex\r\n          css={{\r\n            p: 16,\r\n            backgroundColor: '$headerBackground',\r\n            alignItems: 'center',\r\n            justifyContent: 'space-between',\r\n            borderTopRightRadius: '$borderRadius',\r\n            borderTopLeftRadius: '$borderRadius',\r\n          }}\r\n        >\r\n          <Title css={{ alignItems: 'center', display: 'flex' }}>\r\n            {onBack && (\r\n              <Button\r\n                color=\"ghost\"\r\n                size=\"none\"\r\n                css={{ mr: '$2', color: '$neutralText' }}\r\n                onClick={onBack}\r\n              >\r\n                <FontAwesomeIcon icon={faChevronLeft} width={16} height={16} />\r\n              </Button>\r\n            )}\r\n            <Text style=\"h6\">{title}</Text>\r\n          </Title>\r\n          <DialogPrimitive.Close asChild>\r\n            <Button color=\"ghost\" size=\"none\" css={{ color: '$neutralText' }}>\r\n              <FontAwesomeIcon icon={faClose} width={16} height={16} />\r\n            </Button>\r\n          </DialogPrimitive.Close>\r\n        </Flex>\r\n        {loading && (\r\n          <Loader\r\n            css={{\r\n              minHeight: 242,\r\n              backgroundColor: '$contentBackground',\r\n            }}\r\n          />\r\n        )}\r\n        <Box css={{ maxHeight: '85vh', overflowY: 'auto' }}>{children}</Box>\r\n        {!providerOptionsContext.disablePoweredByReservoir && (\r\n          <Flex\r\n            align=\"center\"\r\n            css={{\r\n              mx: 'auto',\r\n              alignItems: 'center',\r\n              justifyContent: 'center',\r\n              pb: 12,\r\n              gap: '$1',\r\n              visibility: '$poweredByReservoirVisibility',\r\n              borderBottomRightRadius: '$borderRadius',\r\n              borderBottomLeftRadius: '$borderRadius',\r\n            }}\r\n          >\r\n            <Box css={{ color: '$neutralBorderHover' }}>\r\n              <FontAwesomeIcon icon={faLock} width={9} height={10} />\r\n            </Box>\r\n            <Text\r\n              style=\"tiny\"\r\n              color=\"subtle\"\r\n              css={{\r\n                display: 'inline-flex',\r\n                alignItems: 'center',\r\n                gap: 4,\r\n                fontWeight: 400,\r\n                lineHeight: '12px',\r\n                color: '$neutralText',\r\n              }}\r\n            >\r\n              Powered by{' '}\r\n              <Anchor\r\n                href=\"https://reservoir.tools/\"\r\n                target=\"_blank\"\r\n                weight=\"heavy\"\r\n                color=\"gray\"\r\n                css={{\r\n                  height: 12,\r\n                  fontSize: 12,\r\n                  '&:hover': {\r\n                    color: '$neutralSolid',\r\n                    fill: '$neutralSolid',\r\n                  },\r\n                }}\r\n              >\r\n                <Logo />\r\n              </Anchor>\r\n            </Text>\r\n          </Flex>\r\n        )}\r\n      </Dialog>\r\n    )\r\n  }\r\n)\r\n","import { styled } from '../../stitches.config'\r\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\r\nimport React, {\r\n  ComponentPropsWithoutRef,\r\n  ElementRef,\r\n  forwardRef,\r\n  ReactNode,\r\n  useState,\r\n  useEffect,\r\n} from 'react'\r\nimport { AnimatePresence, motion } from 'framer-motion'\r\nimport { ModalSize } from '../modal/Modal'\r\nimport { useMediaQuery } from '../hooks'\r\n\r\nconst Overlay = styled(DialogPrimitive.Overlay, {\r\n  backgroundColor: '$overlayBackground',\r\n  position: 'fixed',\r\n  inset: 0,\r\n  zIndex: 1000,\r\n})\r\n\r\nconst AnimatedOverlay = forwardRef<\r\n  ElementRef<typeof DialogPrimitive.Overlay>,\r\n  ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\r\n>(({ ...props }, forwardedRef) => (\r\n  <Overlay {...props} forceMount asChild>\r\n    <motion.div\r\n      ref={forwardedRef}\r\n      transition={{ duration: 0.5 }}\r\n      initial={{\r\n        opacity: 0,\r\n      }}\r\n      animate={{ opacity: 1 }}\r\n      exit={{ opacity: 0 }}\r\n    />\r\n  </Overlay>\r\n))\r\n\r\nconst Content = styled(DialogPrimitive.Content, {\r\n  backgroundColor: '$contentBackground',\r\n  borderRadius: '$borderRadius',\r\n  $$shadowColor: '$colors$gray7',\r\n  boxShadow: 'box-shadow: 0px 2px 16px $$shadowColor',\r\n  border: '1px solid $borderColor',\r\n  position: 'fixed',\r\n  left: '50%',\r\n  maxWidth: 516,\r\n  top: '100%',\r\n  width: '100%',\r\n  zIndex: 1000,\r\n  '&:focus': { outline: 'none' },\r\n  '@media(max-width: 520px)': {\r\n    borderBottomRightRadius: 0,\r\n    borderBottomLeftRadius: 0,\r\n    border: 0,\r\n  },\r\n})\r\n\r\nconst AnimatedContent = forwardRef<\r\n  ElementRef<typeof DialogPrimitive.DialogContent>,\r\n  ComponentPropsWithoutRef<typeof DialogPrimitive.DialogContent>\r\n>(({ children, ...props }, forwardedRef) => {\r\n  const isMobile = useMediaQuery('(max-width: 520px)')\r\n\r\n  const animation = isMobile\r\n    ? {\r\n        initial: {\r\n          opacity: 0,\r\n          bottom: '-100%',\r\n          top: 'auto',\r\n          left: 0,\r\n        },\r\n        animate: {\r\n          opacity: 1,\r\n          bottom: 0,\r\n          top: 'auto',\r\n          left: 0,\r\n        },\r\n\r\n        exit: {\r\n          opacity: 0,\r\n          bottom: '-100%',\r\n          top: 'auto',\r\n          left: 0,\r\n        },\r\n      }\r\n    : {\r\n        initial: {\r\n          opacity: 0,\r\n          top: '14%',\r\n          transform: 'translateX(-50%)',\r\n        },\r\n        animate: {\r\n          opacity: 1,\r\n          top: '9%',\r\n          transform: 'translateX(-50%)',\r\n        },\r\n\r\n        exit: {\r\n          opacity: 0,\r\n          top: '14%',\r\n          transform: 'translateX(-50%)',\r\n        },\r\n      }\r\n\r\n  return (\r\n    <Content forceMount asChild {...props}>\r\n      <motion.div\r\n        key={isMobile + 'modal'}\r\n        ref={forwardedRef}\r\n        transition={{ type: isMobile ? 'tween' : 'spring', duration: 0.5 }}\r\n        {...animation}\r\n      >\r\n        {children}\r\n      </motion.div>\r\n    </Content>\r\n  )\r\n})\r\n\r\nconst StyledAnimatedContent = styled(AnimatedContent, {})\r\n\r\ntype Props = {\r\n  trigger: ReactNode\r\n  portalProps?: DialogPrimitive.PortalProps\r\n  onOpenChange?: (open: boolean) => void\r\n  open?: boolean\r\n  size?: ModalSize\r\n}\r\n\r\nconst Dialog = forwardRef<\r\n  ElementRef<typeof DialogPrimitive.Content>,\r\n  ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & Props\r\n>(\r\n  (\r\n    { children, trigger, portalProps, onOpenChange, open, size, ...props },\r\n    forwardedRef\r\n  ) => {\r\n    const [dialogOpen, setDialogOpen] = useState(false)\r\n\r\n    useEffect(() => {\r\n      if (open !== undefined && open !== dialogOpen) {\r\n        setDialogOpen(open)\r\n        if (onOpenChange) {\r\n          onOpenChange(open)\r\n        }\r\n      }\r\n    }, [open])\r\n\r\n    return (\r\n      <DialogPrimitive.Root\r\n        onOpenChange={(open) => {\r\n          setDialogOpen(open)\r\n          if (onOpenChange) {\r\n            onOpenChange(open)\r\n          }\r\n        }}\r\n        open={dialogOpen}\r\n      >\r\n        <DialogPrimitive.DialogTrigger asChild>\r\n          {trigger}\r\n        </DialogPrimitive.DialogTrigger>\r\n        <AnimatePresence>\r\n          {dialogOpen && (\r\n            <DialogPrimitive.DialogPortal forceMount {...portalProps}>\r\n              <AnimatedOverlay data-radix-dismissable />\r\n              <StyledAnimatedContent\r\n                ref={forwardedRef}\r\n                {...props}\r\n                forceMount\r\n                css={{\r\n                  maxWidth: size === ModalSize.MD ? 516 : 750,\r\n                }}\r\n              >\r\n                {children}\r\n              </StyledAnimatedContent>\r\n            </DialogPrimitive.DialogPortal>\r\n          )}\r\n        </AnimatePresence>\r\n      </DialogPrimitive.Root>\r\n    )\r\n  }\r\n)\r\n\r\nexport {\r\n  Dialog,\r\n  Content,\r\n  AnimatedContent,\r\n  Overlay,\r\n  AnimatedOverlay,\r\n  StyledAnimatedContent,\r\n}\r\n","import { useEffect, useState } from 'react'\r\n\r\nconst useMediaQuery = (query: string) => {\r\n  const [matches, setMatches] = useState(false)\r\n\r\n  useEffect(() => {\r\n    const media = window.matchMedia(query)\r\n    if (media.matches !== matches) {\r\n      setMatches(media.matches)\r\n    }\r\n    const listener = () => {\r\n      setMatches(media.matches)\r\n    }\r\n    media.addEventListener('change', listener)\r\n    return () => media.removeEventListener('change', listener)\r\n  }, [matches, query])\r\n\r\n  return matches\r\n}\r\n\r\nexport default useMediaQuery\r\n","import React from 'react'\r\n\r\nconst ReservoirText = (props: any) => {\r\n  return (\r\n    <svg\r\n      width=\"50\"\r\n      height=\"10\"\r\n      viewBox=\"0 0 50 10\"\r\n      fill=\"none\"\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      {...props}\r\n    >\r\n      <path d=\"M0.104492 8.99985V2.75985C0.608492 2.72385 1.11249 2.72385 1.62849 2.75985L1.73649 3.77985H1.80849C2.00049 2.97585 2.78049 2.63985 3.87249 2.63985C3.92049 3.04785 3.92049 3.71985 3.87249 4.12785C2.51649 4.12785 2.14449 4.40385 1.82049 5.26785V8.99985C1.40049 9.05985 0.512492 9.05985 0.104492 8.99985Z\" />\r\n      <path d=\"M10.2115 5.02785V6.40785C9.40749 6.46785 7.55949 6.47985 6.52749 6.41985V6.71985C6.52749 7.57185 7.01949 7.72785 8.05149 7.72785C8.75949 7.72785 9.26349 7.66785 9.93549 7.53585C9.98349 7.94385 9.98349 8.51985 9.93549 8.92785C9.09549 9.07185 8.42349 9.14385 7.63149 9.14385C5.90349 9.14385 4.81149 8.62785 4.81149 7.10385V4.70385C4.81149 3.10785 5.96349 2.63985 7.55949 2.63985C9.14349 2.63985 10.2115 3.31185 10.2115 5.02785ZM8.53149 5.36385V4.95585C8.53149 4.13985 8.06349 4.04385 7.53549 4.04385C7.00749 4.04385 6.52749 4.13985 6.52749 4.95585V5.42385L7.45149 5.36385H8.53149Z\" />\r\n      <path d=\"M15.9181 6.94785V7.53585C15.9181 8.69985 15.0061 9.14385 13.5181 9.14385C12.8821 9.14385 12.1501 9.09585 11.4661 8.97585C11.4061 8.54385 11.4061 8.05185 11.4661 7.63185C12.1141 7.73985 12.7621 7.77585 13.2661 7.77585C13.7461 7.77585 14.2021 7.73985 14.2021 7.33185V7.10385C14.2021 6.75585 13.9621 6.69585 13.5541 6.58785L12.4741 6.27585C11.7901 6.08385 11.4181 5.65185 11.4181 4.85985V4.19985C11.4181 3.08385 12.3781 2.63985 13.9021 2.63985C14.5021 2.63985 15.1261 2.68785 15.8221 2.83185C15.8821 3.26385 15.8821 3.74385 15.8221 4.16385C15.0901 4.03185 14.6221 3.99585 14.0941 3.99585C13.5781 3.99585 13.1341 4.03185 13.1341 4.43985V4.66785C13.1341 4.96785 13.4101 5.07585 13.7821 5.18385L14.7901 5.45985C15.5341 5.66385 15.9181 6.03585 15.9181 6.94785Z\" />\r\n      <path d=\"M22.5865 5.02785V6.40785C21.7825 6.46785 19.9345 6.47985 18.9025 6.41985V6.71985C18.9025 7.57185 19.3945 7.72785 20.4265 7.72785C21.1345 7.72785 21.6385 7.66785 22.3105 7.53585C22.3585 7.94385 22.3585 8.51985 22.3105 8.92785C21.4705 9.07185 20.7985 9.14385 20.0065 9.14385C18.2785 9.14385 17.1865 8.62785 17.1865 7.10385V4.70385C17.1865 3.10785 18.3385 2.63985 19.9345 2.63985C21.5185 2.63985 22.5865 3.31185 22.5865 5.02785ZM20.9065 5.36385V4.95585C20.9065 4.13985 20.4385 4.04385 19.9105 4.04385C19.3825 4.04385 18.9025 4.13985 18.9025 4.95585V5.42385L19.8265 5.36385H20.9065Z\" />\r\n      <path d=\"M24.0811 8.99985V2.75985C24.5851 2.72385 25.0891 2.72385 25.6051 2.75985L25.7131 3.77985H25.7851C25.9771 2.97585 26.7571 2.63985 27.8491 2.63985C27.8971 3.04785 27.8971 3.71985 27.8491 4.12785C26.4931 4.12785 26.1211 4.40385 25.7971 5.26785V8.99985C25.3771 9.05985 24.4891 9.05985 24.0811 8.99985Z\" />\r\n      <path d=\"M30.1801 8.99985L28.2601 2.80785C28.6801 2.74785 29.5681 2.74785 29.9761 2.80785L31.2841 7.42785L32.5801 2.80785C32.9881 2.74785 33.8401 2.74785 34.2481 2.80785L32.3401 8.99985C31.8121 9.05985 30.7081 9.05985 30.1801 8.99985Z\" />\r\n      <path d=\"M40.7087 4.66785V7.13985C40.7087 8.62785 39.5807 9.14385 37.9007 9.14385C36.2207 9.14385 35.0927 8.62785 35.0927 7.13985V4.66785C35.0927 3.11985 36.2207 2.63985 37.9007 2.63985C39.5807 2.63985 40.7087 3.11985 40.7087 4.66785ZM38.9927 6.76785V5.01585C38.9927 4.18785 38.4887 4.09185 37.9007 4.09185C37.3007 4.09185 36.8087 4.18785 36.8087 5.01585V6.76785C36.8087 7.58385 37.3007 7.67985 37.9007 7.67985C38.4887 7.67985 38.9927 7.58385 38.9927 6.76785Z\" />\r\n      <path d=\"M42.3037 8.99985V2.80785C42.7117 2.74785 43.5997 2.74785 44.0197 2.80785V8.99985C43.5997 9.05985 42.7117 9.05985 42.3037 8.99985ZM44.0917 0.467852L44.0557 1.83585C43.6357 1.89585 42.6877 1.89585 42.2557 1.83585L42.2317 0.467852C42.6637 0.407852 43.6597 0.407852 44.0917 0.467852Z\" />\r\n      <path d=\"M45.7725 8.99985V2.75985C46.2765 2.72385 46.7805 2.72385 47.2965 2.75985L47.4045 3.77985H47.4765C47.6685 2.97585 48.4485 2.63985 49.5405 2.63985C49.5885 3.04785 49.5885 3.71985 49.5405 4.12785C48.1845 4.12785 47.8125 4.40385 47.4885 5.26785V8.99985C47.0685 9.05985 46.1805 9.05985 45.7725 8.99985Z\" />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport default ReservoirText\r\n","import React, {\r\n  FC,\r\n  useEffect,\r\n  useState,\r\n  useCallback,\r\n  ReactNode,\r\n  useMemo,\r\n  useContext,\r\n} from 'react'\r\nimport {\r\n  useTokens,\r\n  useReservoirClient,\r\n  useCollections,\r\n  useListings,\r\n} from '../../hooks'\r\nimport { useAccount, useConfig, useWalletClient } from 'wagmi'\r\nimport { getAccount, switchChain } from 'wagmi/actions'\r\nimport {\r\n  APIError,\r\n  BuyPath,\r\n  BuyResponses,\r\n  Execute,\r\n  LogLevel,\r\n  ReservoirClientActions,\r\n  ReservoirWallet,\r\n  axios,\r\n  BuyTokenBodyParameters,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport {\r\n  Address,\r\n  WalletClient,\r\n  createPublicClient,\r\n  formatUnits,\r\n  http,\r\n  zeroAddress,\r\n} from 'viem'\r\nimport { customChains } from '@sh-reservoir0x/reservoir-sdk'\r\nimport * as allChains from 'viem/chains'\r\nimport usePaymentTokens, {\r\n  EnhancedCurrency,\r\n} from '../../hooks/usePaymentTokens'\r\nimport { ProviderOptionsContext } from '../../ReservoirKitProvider'\r\nimport { ChainConfig, ContractConfig, HALO_TRADE } from '../../constants/common'\r\nimport { auraEVMTestnet } from '../../constants/evmosChain'\r\n\r\ntype Item = Parameters<ReservoirClientActions['buyToken']>['0']['items'][0]\r\n\r\nexport enum BuyStep {\r\n  Checkout,\r\n  Approving,\r\n  Complete,\r\n  Unavailable,\r\n  SelectPayment,\r\n}\r\n\r\nexport type BuyModalStepData = {\r\n  totalSteps: number\r\n  stepProgress: number\r\n  currentStep: Execute['steps'][0]\r\n  currentStepItem: NonNullable<Execute['steps'][0]['items']>[0]\r\n}\r\n\r\ntype Token = NonNullable<NonNullable<ReturnType<typeof useTokens>>['data']>[0]\r\ntype BuyTokenOptions = NonNullable<\r\n  Parameters<ReservoirClientActions['buyToken']>['0']['options']\r\n>\r\n\r\ntype ChildrenProps = {\r\n  loading: boolean\r\n  isFetchingPath: boolean\r\n  tokenData?: Token\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  listing?: NonNullable<ReturnType<typeof useListings>['data']>[0]\r\n  quantityAvailable: number\r\n  averageUnitPrice: bigint\r\n  paymentCurrency?: EnhancedCurrency\r\n  paymentTokens: EnhancedCurrency[]\r\n  totalIncludingFees: bigint\r\n  feeOnTop: bigint\r\n  buyResponseFees?: BuyResponses['fees']\r\n  buyStep: BuyStep\r\n  transactionError?: Error | null\r\n  hasEnoughCurrency: boolean\r\n  addFundsLink: string\r\n  feeUsd: string\r\n  totalUsd: bigint\r\n  usdPrice: number\r\n  balance?: bigint\r\n  address?: string\r\n  blockExplorerBaseUrl: string\r\n  blockExplorerBaseName: string\r\n  steps: Execute['steps'] | null\r\n  stepData: BuyModalStepData | null\r\n  path: BuyPath\r\n  quantity: number\r\n  isConnected: boolean\r\n  isOwner: boolean\r\n  setPaymentCurrency: React.Dispatch<\r\n    React.SetStateAction<EnhancedCurrency | undefined>\r\n  >\r\n  setBuyStep: React.Dispatch<React.SetStateAction<BuyStep>>\r\n  setQuantity: React.Dispatch<React.SetStateAction<number>>\r\n  buyToken: () => void\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  token?: string\r\n  orderId?: string\r\n  chainId?: number\r\n  defaultQuantity?: number\r\n  feesOnTopBps?: string[] | null\r\n  feesOnTopUsd?: string[] | null\r\n  normalizeRoyalties?: boolean\r\n  onConnectWallet: () => void\r\n  children: (props: ChildrenProps) => ReactNode\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  executeBuyOptions?: Omit<\r\n    NonNullable<BuyTokenBodyParameters>,\r\n    'items' | 'feesOnTop' | 'taker'\r\n  >\r\n}\r\n\r\nexport const BuyModalRenderer: FC<Props> = ({\r\n  open,\r\n  token,\r\n  orderId,\r\n  chainId,\r\n  feesOnTopBps,\r\n  defaultQuantity,\r\n  feesOnTopUsd,\r\n  normalizeRoyalties,\r\n  onConnectWallet,\r\n  children,\r\n  walletClient,\r\n  executeBuyOptions,\r\n}) => {\r\n  const [totalIncludingFees, setTotalIncludingFees] = useState(0n)\r\n  const [averageUnitPrice, setAverageUnitPrice] = useState(0n)\r\n  const [path, setPath] = useState<BuyPath>(undefined)\r\n  const [isFetchingPath, setIsFetchingPath] = useState(false)\r\n  const [feeOnTop, setFeeOnTop] = useState(0n)\r\n  const [buyStep, setBuyStep] = useState<BuyStep>(BuyStep.Checkout)\r\n  const [transactionError, setTransactionError] = useState<Error | null>()\r\n  const [hasEnoughCurrency, setHasEnoughCurrency] = useState(true)\r\n  const [stepData, setStepData] = useState<BuyModalStepData | null>(null)\r\n  const [steps, setSteps] = useState<Execute['steps'] | null>(null)\r\n  const [quantity, setQuantity] = useState(1)\r\n  const providerOptions = useContext(ProviderOptionsContext)\r\n  const includeListingCurrency =\r\n    providerOptions.alwaysIncludeListingCurrency !== false\r\n\r\n  const [buyResponseFees, setBuyResponseFees] = useState<\r\n    BuyResponses['fees'] | undefined\r\n  >(undefined)\r\n\r\n  const client = useReservoirClient()\r\n  const currentChain = client?.currentChain()\r\n  const config = useConfig()\r\n\r\n  const rendererChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const auraEVMTestnet = ChainConfig[chainId ? chainId : 1235]\r\n  const publicClient = createPublicClient({\r\n    chain: auraEVMTestnet,\r\n    transport: http(),\r\n  })\r\n\r\n  const wagmiChain: allChains.Chain | undefined = Object.values({\r\n    ...allChains,\r\n    ...customChains,\r\n  }).find(({ id }) => rendererChain?.id === id)\r\n\r\n  const { data: wagmiWalletClient } = useWalletClient({\r\n    chainId: rendererChain?.id,\r\n  })\r\n\r\n  const wallet = walletClient || wagmiWalletClient\r\n\r\n  const blockExplorerBaseUrl =\r\n    wagmiChain?.blockExplorers?.default?.url || 'https://etherscan.io'\r\n  const blockExplorerBaseName =\r\n    wagmiChain?.blockExplorers?.default?.name || 'Etherscan'\r\n\r\n  const { address } = useAccount()\r\n\r\n  const [_paymentCurrency, _setPaymentCurrency] = useState<\r\n    EnhancedCurrency | undefined\r\n  >(undefined)\r\n\r\n  const paymentTokens = usePaymentTokens({\r\n    open,\r\n    address: address as Address,\r\n    quantityToken: {\r\n      [`${token}`]: quantity,\r\n    },\r\n    path,\r\n    chainId: rendererChain?.id,\r\n    nativeOnly:\r\n      executeBuyOptions && executeBuyOptions.executionMethod !== undefined,\r\n  })\r\n\r\n  const paymentCurrency = paymentTokens?.find(\r\n    (paymentToken) =>\r\n      paymentToken?.address === _paymentCurrency?.address &&\r\n      paymentToken?.chainId === _paymentCurrency?.chainId\r\n  )\r\n\r\n  const { data: tokens, mutate: mutateTokens } = useTokens(\r\n    open && token\r\n      ? {\r\n          tokens: [token],\r\n          normalizeRoyalties,\r\n        }\r\n      : false,\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    rendererChain?.id\r\n  )\r\n\r\n  const tokenData = tokens && tokens[0] ? tokens[0] : undefined\r\n\r\n  const collectionId = tokenData?.token?.collection?.id\r\n\r\n  const is1155 = tokenData?.token?.kind === 'erc1155'\r\n  const isOwner =\r\n    tokenData?.token?.owner?.toLowerCase() === address?.toLowerCase()\r\n\r\n  const { data: collections, mutate: mutateCollection } = useCollections(\r\n    open && collectionId\r\n      ? {\r\n          id: collectionId,\r\n          normalizeRoyalties,\r\n        }\r\n      : false,\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n\r\n  const collection = collections && collections[0] ? collections[0] : undefined\r\n\r\n  const quantityRemaining = useMemo(() => {\r\n    return path\r\n      ? path.reduce((total, pathItem) => total + (pathItem.quantity || 0), 0)\r\n      : 0\r\n  }, [path, orderId])\r\n\r\n  const usdPrice = paymentCurrency?.usdPrice || 0\r\n  const usdPriceRaw = paymentCurrency?.usdPriceRaw || 0n\r\n  const feeUsd = formatUnits(\r\n    feeOnTop * usdPriceRaw,\r\n    (paymentCurrency?.decimals || 18) + 6\r\n  )\r\n  const totalUsd = totalIncludingFees * usdPriceRaw\r\n\r\n  // const addFundsLink = paymentCurrency?.address\r\n  //   ? `https://jumper.exchange/?toChain=${rendererChain?.id}&toToken=${paymentCurrency?.address}`\r\n  //   : `https://jumper.exchange/?toChain=${rendererChain?.id}`\r\n  const addFundsLink = HALO_TRADE[chainId ? chainId : 1235]\r\n\r\n  const fetchPath = useCallback(\r\n    async (\r\n      paymentCurrency: EnhancedCurrency | undefined,\r\n      paymentTokens: EnhancedCurrency[]\r\n    ) => {\r\n      if (\r\n        !open ||\r\n        !client ||\r\n        !tokenData ||\r\n        !token ||\r\n        paymentTokens.length === 0\r\n      ) {\r\n        setPath(undefined)\r\n        return\r\n      }\r\n\r\n      setTransactionError(null)\r\n      setIsFetchingPath(true)\r\n\r\n      const options: BuyTokenOptions = {\r\n        ...executeBuyOptions,\r\n        onlyPath: true,\r\n        partial: true,\r\n      }\r\n\r\n      if (feesOnTopBps && feesOnTopBps?.length > 0) {\r\n        const fixedFees = feesOnTopBps.map((fullFee) => {\r\n          const [referrer] = fullFee.split(':')\r\n          return `${referrer}:1`\r\n        })\r\n        options.feesOnTop = fixedFees\r\n      } else if (feesOnTopUsd && feesOnTopUsd.length > 0) {\r\n        const feesOnTopFixed = feesOnTopUsd.map((feeOnTop) => {\r\n          const [recipient] = feeOnTop.split(':')\r\n          return `${recipient}:1`\r\n        })\r\n        options.feesOnTop = feesOnTopFixed\r\n      } else if (!feesOnTopUsd && !feesOnTopBps) {\r\n        delete options.feesOnTop\r\n      }\r\n\r\n      if (normalizeRoyalties !== undefined) {\r\n        options.normalizeRoyalties = normalizeRoyalties\r\n      }\r\n\r\n      if (paymentCurrency) {\r\n        options.currency = paymentCurrency.address\r\n        if (paymentCurrency.chainId) {\r\n          options.currencyChainId = paymentCurrency.chainId\r\n        }\r\n      } else if (!includeListingCurrency) {\r\n        options.currency = paymentTokens[0].address\r\n        if (paymentTokens[0].chainId) {\r\n          options.currencyChainId = paymentTokens[0].chainId\r\n        }\r\n        _setPaymentCurrency(paymentTokens[0])\r\n      }\r\n\r\n      let items: Parameters<\r\n        ReservoirClientActions['buyToken']\r\n      >['0']['items'][0] = {\r\n        fillType: 'trade',\r\n      }\r\n\r\n      if (orderId) {\r\n        items.orderId = orderId\r\n      } else {\r\n        items.token = token\r\n      }\r\n\r\n      return client.actions\r\n        .buyToken({\r\n          options,\r\n          chainId: rendererChain?.id,\r\n          items: [items],\r\n          wallet: {\r\n            address: async () => {\r\n              return address || zeroAddress\r\n            },\r\n          } as any,\r\n          onProgress: () => {},\r\n          precheck: true,\r\n        })\r\n        .then((data) => {\r\n          if (data && (data as BuyResponses).path) {\r\n            const response = data as BuyResponses\r\n            const path: BuyPath = response.path\r\n            if (!paymentCurrency && path?.[0]) {\r\n              const listingToken = {\r\n                address: (path[0].buyInCurrency || path[0].currency) as Address,\r\n                decimals:\r\n                  path[0].buyInCurrencyDecimals ||\r\n                  path[0].currencyDecimals ||\r\n                  18,\r\n                symbol:\r\n                  path[0].buyInCurrencySymbol || path[0].currencySymbol || '',\r\n                name:\r\n                  path[0].buyInCurrencySymbol || path[0].currencySymbol || '',\r\n                chainId: rendererChain?.id || 1,\r\n              }\r\n              _setPaymentCurrency(listingToken)\r\n            }\r\n            setPath(path)\r\n            if (response.fees) {\r\n              setBuyResponseFees(response.fees)\r\n            }\r\n          } else {\r\n            setPath([])\r\n          }\r\n        })\r\n        .catch((err) => {\r\n          if (!err?.response?.data?.message?.includes('Price too high')) {\r\n            setPath([])\r\n          } else {\r\n            err = new APIError(\r\n              err?.response?.data?.message,\r\n              err?.response?.status,\r\n              err?.response?.data\r\n            )\r\n            setTransactionError(err)\r\n          }\r\n          throw err\r\n        })\r\n        .finally(() => {\r\n          setIsFetchingPath(false)\r\n        })\r\n    },\r\n    [\r\n      open,\r\n      client,\r\n      address,\r\n      tokenData,\r\n      token,\r\n      orderId,\r\n      normalizeRoyalties,\r\n      rendererChain,\r\n      rendererChain?.paymentTokens,\r\n      includeListingCurrency,\r\n      feesOnTopBps,\r\n      feesOnTopUsd,\r\n      executeBuyOptions,\r\n      _setPaymentCurrency,\r\n    ]\r\n  )\r\n\r\n  const setPaymentCurrency: typeof _setPaymentCurrency = useCallback(\r\n    (\r\n      value:\r\n        | EnhancedCurrency\r\n        | ((\r\n            prevState: EnhancedCurrency | undefined\r\n          ) => EnhancedCurrency | undefined)\r\n        | undefined\r\n    ) => {\r\n      if (typeof value === 'function') {\r\n        _setPaymentCurrency((prevState) => {\r\n          const newValue = value(prevState)\r\n          if (\r\n            newValue?.address !== paymentCurrency?.address ||\r\n            newValue?.chainId !== paymentCurrency?.chainId\r\n          ) {\r\n            fetchPath(newValue, paymentTokens)?.catch((err) => {\r\n              if (\r\n                err?.statusCode === 400 &&\r\n                err?.message?.includes('Price too high')\r\n              ) {\r\n                _setPaymentCurrency(prevState)\r\n              }\r\n            })\r\n          }\r\n          return newValue\r\n        })\r\n      } else {\r\n        if (\r\n          value?.address !== paymentCurrency?.address ||\r\n          value?.chainId !== paymentCurrency?.chainId\r\n        ) {\r\n          _setPaymentCurrency(value)\r\n          fetchPath(value, paymentTokens)?.catch((err) => {\r\n            if (\r\n              err?.statusCode === 400 &&\r\n              err?.message?.includes('Price too high')\r\n            ) {\r\n              _setPaymentCurrency(paymentCurrency)\r\n            }\r\n          })\r\n        }\r\n      }\r\n    },\r\n    [fetchPath, _setPaymentCurrency, paymentCurrency]\r\n  )\r\n\r\n  useEffect(() => {\r\n    if (token || orderId) {\r\n      fetchPath(paymentCurrency, paymentTokens)\r\n    }\r\n  }, [fetchPath, token, orderId])\r\n\r\n  const buyToken = useCallback(async () => {\r\n    if (!wallet) {\r\n      onConnectWallet()\r\n      if (document.body.style) {\r\n        document.body.style.pointerEvents = 'auto'\r\n      }\r\n      client?.log(['Missing wallet, prompting connection'], LogLevel.Verbose)\r\n      return\r\n    }\r\n\r\n    let activeWalletChain = getAccount(config).chain\r\n    if (paymentCurrency?.chainId !== activeWalletChain?.id) {\r\n      activeWalletChain = await switchChain(config, {\r\n        chainId: paymentCurrency?.chainId as number,\r\n      })\r\n    }\r\n\r\n    if (paymentCurrency?.chainId !== activeWalletChain?.id) {\r\n      const error = new Error(`Mismatching chainIds`)\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!token && !orderId) {\r\n      const error = new Error('Missing token or order')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!client) {\r\n      const error = new Error('ReservoirClient was not initialized')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    let options: BuyTokenOptions = {\r\n      ...executeBuyOptions,\r\n      currency: paymentCurrency?.address,\r\n      currencyChainId: paymentCurrency?.chainId,\r\n    }\r\n\r\n    const relayerFee = BigInt(buyResponseFees?.relayer?.amount?.raw ?? 0)\r\n\r\n    if (feesOnTopBps && feesOnTopBps?.length > 0) {\r\n      const fixedFees = feesOnTopBps.map((fullFee) => {\r\n        const [referrer, feeBps] = fullFee.split(':')\r\n        let totalFeeTruncated = totalIncludingFees - feeOnTop\r\n\r\n        // if relayer fee, subtract from total\r\n        if (relayerFee) {\r\n          totalFeeTruncated -= relayerFee\r\n        }\r\n\r\n        const fee = Math.floor(\r\n          Number(totalFeeTruncated * BigInt(feeBps)) / 10000\r\n        )\r\n        const atomicUnitsFee = formatUnits(BigInt(fee), 0)\r\n        return `${referrer}:${atomicUnitsFee}`\r\n      })\r\n      options.feesOnTop = fixedFees\r\n    } else if (feesOnTopUsd && feesOnTopUsd.length > 0 && usdPriceRaw) {\r\n      const feesOnTopFixed = feesOnTopUsd.map((feeOnTop) => {\r\n        const [recipient, fee] = feeOnTop.split(':')\r\n        const atomicFee = BigInt(fee)\r\n        const convertedAtomicFee =\r\n          atomicFee * BigInt(10 ** paymentCurrency?.decimals!)\r\n        const currencyFee = convertedAtomicFee / usdPriceRaw\r\n        const parsedFee = formatUnits(currencyFee, 0)\r\n        return `${recipient}:${parsedFee}`\r\n      })\r\n      options.feesOnTop = feesOnTopFixed\r\n    } else if (!feesOnTopUsd && !feesOnTopBps) {\r\n      delete options.feesOnTop\r\n    }\r\n\r\n    if (normalizeRoyalties !== undefined) {\r\n      options.normalizeRoyalties = normalizeRoyalties\r\n    }\r\n\r\n    setBuyStep(BuyStep.Approving)\r\n    const items: Item[] = []\r\n    const item: Item = {\r\n      fillType: 'trade',\r\n      quantity,\r\n    }\r\n\r\n    if (is1155) {\r\n      options.partial = true\r\n    }\r\n\r\n    if (orderId) {\r\n      item.orderId = orderId\r\n    } else {\r\n      item.token = token\r\n    }\r\n    items.push(item)\r\n\r\n    if (rendererChain?.name === auraEVMTestnet?.name) {\r\n      setBuyStep(BuyStep.Approving)\r\n      setStepData({\r\n        totalSteps: 1,\r\n        stepProgress: 1,\r\n        currentStep: {\r\n          kind: 'transaction',\r\n          action: 'Confirm transaction in your wallet',\r\n          description: '',\r\n          id: '1',\r\n        },\r\n        currentStepItem: {\r\n          status: 'incomplete',\r\n        },\r\n      })\r\n      await wagmiWalletClient\r\n        ?.writeContract({\r\n          abi: [\r\n            {\r\n              inputs: [\r\n                {\r\n                  internalType: 'address',\r\n                  name: '_tokenContract',\r\n                  type: 'address',\r\n                },\r\n                {\r\n                  internalType: 'uint256',\r\n                  name: '_tokenId',\r\n                  type: 'uint256',\r\n                },\r\n                {\r\n                  internalType: 'address',\r\n                  name: '_fillCurrency',\r\n                  type: 'address',\r\n                },\r\n                {\r\n                  internalType: 'uint256',\r\n                  name: '_fillAmount',\r\n                  type: 'uint256',\r\n                },\r\n                { internalType: 'address', name: '_finder', type: 'address' },\r\n              ],\r\n              name: 'fillAsk',\r\n              outputs: [],\r\n              stateMutability: 'payable',\r\n              type: 'function',\r\n            },\r\n          ],\r\n          address: ContractConfig[chainId ? chainId : 1235]\r\n            ?.ASK1_1_MODULE_ADDRESS as `0x${string}`,\r\n          functionName: 'fillAsk',\r\n          args: [\r\n            tokenData?.token?.contract as `0x${string}`,\r\n            BigInt(Number(tokenData?.token?.tokenId)),\r\n            zeroAddress,\r\n            (paymentCurrency?.currencyTotalRaw ?? 0n) + feeOnTop,\r\n            address as `0x${string}`,\r\n          ],\r\n          gas: 500000n,\r\n          value: (paymentCurrency?.currencyTotalRaw ?? 0n) + feeOnTop,\r\n        })\r\n        .then((hash) => {\r\n          publicClient\r\n            .waitForTransactionReceipt({ hash })\r\n            .then((res) => {\r\n              if (res?.status === 'success') {\r\n                setTimeout(() => {\r\n                  const steps: Execute['steps'] = [\r\n                    {\r\n                      error: '',\r\n                      errorData: [],\r\n                      action: '',\r\n                      description: '',\r\n                      kind: 'transaction',\r\n                      id: '',\r\n                      items: [\r\n                        {\r\n                          status: 'complete',\r\n                          transfersData: [\r\n                            {\r\n                              amount: '1',\r\n                            },\r\n                          ],\r\n                          txHashes: [\r\n                            {\r\n                              txHash: hash,\r\n                              chainId: chainId ? chainId : 1235,\r\n                            },\r\n                          ],\r\n                        },\r\n                      ],\r\n                    },\r\n                  ]\r\n\r\n                  if (\r\n                    steps &&\r\n                    steps?.length > 0 &&\r\n                    steps[0]?.items &&\r\n                    steps[0]?.items?.length > 0\r\n                  ) {\r\n                    setSteps(steps)\r\n                    setStepData({\r\n                      totalSteps: 1,\r\n                      stepProgress: 1,\r\n                      currentStep: steps[0],\r\n                      currentStepItem: steps[0]?.items[0],\r\n                    })\r\n                  }\r\n                  setBuyStep(BuyStep.Complete)\r\n                }, 5000)\r\n              }\r\n            })\r\n            .catch((error) => {\r\n              setBuyStep(BuyStep.Checkout)\r\n              setTransactionError(error)\r\n            })\r\n        })\r\n        .catch((err) => {\r\n          setBuyStep(BuyStep.Checkout)\r\n          setTransactionError(err)\r\n        })\r\n    } else {\r\n      client.actions\r\n        .buyToken({\r\n          chainId: rendererChain?.id,\r\n          items: items,\r\n          expectedPrice: {\r\n            [paymentCurrency?.address || zeroAddress]: {\r\n              raw: totalIncludingFees - relayerFee,\r\n              currencyAddress: paymentCurrency?.address,\r\n              currencyDecimals: paymentCurrency?.decimals || 18,\r\n            },\r\n          },\r\n          wallet,\r\n          onProgress: (steps: Execute['steps']) => {\r\n            if (!steps) {\r\n              return\r\n            }\r\n            setSteps(steps)\r\n\r\n            const executableSteps = steps.filter(\r\n              (step) => step.items && step.items.length > 0\r\n            )\r\n\r\n            let stepCount = executableSteps.length\r\n\r\n            let currentStepItem:\r\n              | NonNullable<Execute['steps'][0]['items']>[0]\r\n              | undefined\r\n\r\n            const currentStepIndex = executableSteps.findIndex((step) => {\r\n              currentStepItem = step.items?.find(\r\n                (item) => item.status === 'incomplete'\r\n              )\r\n              return currentStepItem\r\n            })\r\n\r\n            const currentStep =\r\n              currentStepIndex > -1\r\n                ? executableSteps[currentStepIndex]\r\n                : executableSteps[stepCount - 1]\r\n\r\n            if (currentStepItem) {\r\n              setStepData({\r\n                totalSteps: stepCount,\r\n                stepProgress: currentStepIndex,\r\n                currentStep,\r\n                currentStepItem,\r\n              })\r\n            } else if (\r\n              steps.every(\r\n                (step) =>\r\n                  !step.items ||\r\n                  step.items.length == 0 ||\r\n                  step.items?.every((item) => item.status === 'complete')\r\n              )\r\n            ) {\r\n              setBuyStep(BuyStep.Complete)\r\n            }\r\n          },\r\n          options,\r\n        })\r\n        .catch((error: Error) => {\r\n          if (\r\n            error &&\r\n            error?.message &&\r\n            error?.message.includes('ETH balance')\r\n          ) {\r\n            setHasEnoughCurrency(false)\r\n          } else {\r\n            setTransactionError(error)\r\n            mutateCollection()\r\n            mutateTokens()\r\n            fetchPath(paymentCurrency, paymentTokens)\r\n          }\r\n          setBuyStep(BuyStep.Checkout)\r\n          setStepData(null)\r\n          setSteps(null)\r\n        })\r\n    }\r\n  }, [\r\n    token,\r\n    orderId,\r\n    feesOnTopBps,\r\n    feesOnTopUsd,\r\n    quantity,\r\n    normalizeRoyalties,\r\n    is1155,\r\n    client,\r\n    config,\r\n    rendererChain,\r\n    rendererChain,\r\n    totalIncludingFees,\r\n    wallet,\r\n    paymentCurrency,\r\n    buyResponseFees,\r\n    executeBuyOptions,\r\n    mutateTokens,\r\n    mutateCollection,\r\n    onConnectWallet,\r\n  ])\r\n\r\n  useEffect(() => {\r\n    if ((!path || (path && path.length === 0)) && !isFetchingPath) {\r\n      setBuyStep(BuyStep.Unavailable)\r\n    } else {\r\n      setBuyStep(BuyStep.Checkout)\r\n    }\r\n  }, [path, isFetchingPath])\r\n\r\n  useEffect(() => {\r\n    let totalFees = 0n\r\n\r\n    if (\r\n      paymentCurrency?.currencyTotalRaw &&\r\n      paymentCurrency.currencyTotalRaw > 0n\r\n    ) {\r\n      let currencyTotalRawMinusRelayerFees = paymentCurrency?.currencyTotalRaw\r\n\r\n      // if relayer fees, subtract from currencyTotalRaw\r\n      if (buyResponseFees?.relayer?.amount?.raw) {\r\n        const relayerFees = BigInt(buyResponseFees?.relayer?.amount?.raw ?? 0)\r\n\r\n        currencyTotalRawMinusRelayerFees -= relayerFees\r\n      }\r\n\r\n      if (feesOnTopBps && feesOnTopBps.length > 0) {\r\n        const fees = feesOnTopBps.reduce((totalFees, feeOnTop) => {\r\n          const [_, fee] = feeOnTop.split(':')\r\n          return (\r\n            totalFees +\r\n            (BigInt(fee) * currencyTotalRawMinusRelayerFees) / 10000n\r\n          )\r\n        }, 0n)\r\n        totalFees += fees\r\n        setFeeOnTop(fees)\r\n      } else if (feesOnTopUsd && feesOnTopUsd.length > 0 && usdPriceRaw) {\r\n        const fees = feesOnTopUsd.reduce((totalFees, feeOnTop) => {\r\n          const [_, fee] = feeOnTop.split(':')\r\n          const atomicFee = BigInt(fee)\r\n          const convertedAtomicFee =\r\n            atomicFee * BigInt(10 ** paymentCurrency?.decimals!)\r\n          const currencyFee = convertedAtomicFee / usdPriceRaw\r\n          return totalFees + currencyFee\r\n        }, 0n)\r\n        totalFees += fees\r\n        setFeeOnTop(fees)\r\n      } else {\r\n        setFeeOnTop(0n)\r\n      }\r\n\r\n      setTotalIncludingFees(paymentCurrency?.currencyTotalRaw + totalFees)\r\n      setAverageUnitPrice(paymentCurrency?.currencyTotalRaw / BigInt(quantity))\r\n    } else {\r\n      setTotalIncludingFees(0n)\r\n      setAverageUnitPrice(0n)\r\n    }\r\n  }, [\r\n    feesOnTopBps,\r\n    feesOnTopUsd,\r\n    usdPriceRaw,\r\n    feeOnTop,\r\n    quantity,\r\n    paymentCurrency,\r\n    buyResponseFees,\r\n  ])\r\n\r\n  useEffect(() => {\r\n    if (\r\n      paymentCurrency?.balance != undefined &&\r\n      totalIncludingFees != undefined &&\r\n      BigInt(paymentCurrency?.balance) < totalIncludingFees\r\n    ) {\r\n      setHasEnoughCurrency(false)\r\n    } else {\r\n      setHasEnoughCurrency(true)\r\n    }\r\n  }, [totalIncludingFees, paymentCurrency])\r\n\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setBuyStep(BuyStep.Checkout)\r\n      setTransactionError(null)\r\n      setStepData(null)\r\n      setSteps(null)\r\n      setQuantity(1)\r\n      setPath(undefined)\r\n      _setPaymentCurrency(undefined)\r\n      setBuyResponseFees(undefined)\r\n    } else {\r\n      setQuantity(defaultQuantity || 1)\r\n    }\r\n  }, [open])\r\n\r\n  open\r\n    ? (axios.defaults.headers.common['x-rkui-context'] = 'buyModalRenderer')\r\n    : delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  useEffect(() => {\r\n    if (quantityRemaining > 0 && quantity > quantityRemaining) {\r\n      setQuantity(quantityRemaining)\r\n    }\r\n  }, [quantityRemaining, quantity])\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        loading:\r\n          !token || !path || (!(paymentTokens.length > 0) && path.length > 0),\r\n        isFetchingPath,\r\n        tokenData,\r\n        collection,\r\n        quantityAvailable: quantityRemaining || 1,\r\n        paymentCurrency,\r\n        paymentTokens,\r\n        totalIncludingFees,\r\n        averageUnitPrice,\r\n        feeOnTop,\r\n        buyResponseFees,\r\n        buyStep,\r\n        transactionError,\r\n        hasEnoughCurrency,\r\n        addFundsLink,\r\n        feeUsd,\r\n        totalUsd,\r\n        usdPrice,\r\n        balance: paymentCurrency?.balance\r\n          ? BigInt(paymentCurrency.balance)\r\n          : undefined,\r\n        address: address,\r\n        blockExplorerBaseUrl,\r\n        blockExplorerBaseName,\r\n        steps,\r\n        stepData,\r\n        path,\r\n        quantity,\r\n        isConnected: wallet !== undefined,\r\n        isOwner,\r\n        setPaymentCurrency,\r\n        setQuantity,\r\n        setBuyStep,\r\n        buyToken,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n","import { Config, useConfig, useReadContracts } from 'wagmi'\r\nimport { getBalance } from 'wagmi/actions'\r\nimport { Address, formatUnits, parseUnits, zeroAddress, erc20Abi } from 'viem'\r\nimport { useContext, useMemo } from 'react'\r\nimport {\r\n  useCurrencyConversions,\r\n  useReservoirClient,\r\n  useSolverCapacity,\r\n} from '.'\r\nimport { BuyPath, ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { PaymentToken } from '@sh-reservoir0x/reservoir-sdk'\r\nimport useSWR from 'swr'\r\nimport { ProviderOptionsContext } from '../ReservoirKitProvider'\r\nimport { Currency } from '../types/Currency'\r\n\r\nexport type EnhancedCurrency =\r\n  | NonNullable<ReservoirChain['paymentTokens']>[0] & {\r\n      usdPrice?: number\r\n      usdPriceRaw?: bigint\r\n      usdTotalPriceRaw?: bigint\r\n      usdTotalFormatted?: string\r\n      usdBalanceRaw?: bigint\r\n      balance?: string | number | bigint\r\n      currencyTotalRaw?: bigint\r\n      totalPriceWithoutFee?: bigint\r\n      currencyTotalFormatted?: string\r\n      maxItems?: number\r\n      capacityPerRequest?: bigint\r\n      maxPricePerItem?: number\r\n    }\r\n\r\nconst fetchNativeBalances = async (\r\n  address: Address,\r\n  config: Config,\r\n  tokens?: PaymentToken[]\r\n) => {\r\n  const balancePromises = tokens?.map((currency) =>\r\n    getBalance(config, {\r\n      address: address,\r\n      chainId: currency?.chainId,\r\n    })\r\n  )\r\n\r\n  const settledResults = balancePromises\r\n    ? await Promise.allSettled(balancePromises)\r\n    : []\r\n\r\n  return settledResults.map((result) => {\r\n    return result.status === 'fulfilled' ? result.value : null\r\n  })\r\n}\r\n\r\nexport default function (options: {\r\n  open: boolean\r\n  address: Address\r\n  quantityToken: Record<string, number>\r\n  path?: BuyPath\r\n  nativeOnly?: boolean\r\n  chainId?: number\r\n  crossChainDisabled?: boolean\r\n}) {\r\n  const {\r\n    open,\r\n    address,\r\n    quantityToken,\r\n    path,\r\n    nativeOnly,\r\n    chainId,\r\n    crossChainDisabled,\r\n  } = options\r\n\r\n  const client = useReservoirClient()\r\n  const config = useConfig()\r\n  const providerOptions = useContext(ProviderOptionsContext)\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const includeListingCurrency =\r\n    providerOptions.alwaysIncludeListingCurrency !== false\r\n\r\n  const listingCurrency: Currency | undefined =\r\n    path && path[0] && path[0].currency\r\n      ? {\r\n          contract: path[0].currency,\r\n          decimals: path[0].currencyDecimals || 18,\r\n          symbol: path[0].currencySymbol || '',\r\n        }\r\n      : undefined\r\n  const listingCurrencyChainId =\r\n    path && path[0] && path[0].fromChainId ? path[0].fromChainId : chainId\r\n\r\n  const allPaymentTokens = useMemo(() => {\r\n    let paymentTokens = chain?.paymentTokens\r\n\r\n    if (includeListingCurrency) {\r\n      const listingCurrencyAlreadyExists = paymentTokens?.some(\r\n        (token) =>\r\n          token?.address?.toLowerCase() ===\r\n            listingCurrency?.contract?.toLowerCase() &&\r\n          token.chainId === listingCurrencyChainId\r\n      )\r\n      if (!listingCurrencyAlreadyExists && listingCurrency) {\r\n        paymentTokens?.push({\r\n          ...listingCurrency,\r\n          decimals: listingCurrency.decimals || 18,\r\n          address: listingCurrency.contract as Address,\r\n          chainId: listingCurrencyChainId || 1,\r\n          name: listingCurrency.symbol,\r\n        })\r\n      }\r\n    }\r\n\r\n    if (crossChainDisabled) {\r\n      paymentTokens = paymentTokens?.filter(\r\n        (token) => token.chainId === chain?.id\r\n      )\r\n    }\r\n\r\n    if (nativeOnly) {\r\n      paymentTokens = paymentTokens?.filter(\r\n        (token) => token.address === zeroAddress\r\n      )\r\n    }\r\n\r\n    return paymentTokens\r\n  }, [\r\n    chain?.paymentTokens,\r\n    crossChainDisabled,\r\n    nativeOnly,\r\n    includeListingCurrency,\r\n    listingCurrency,\r\n    listingCurrencyChainId,\r\n  ])\r\n\r\n  const nonNativeCurrencies = useMemo(() => {\r\n    return allPaymentTokens?.filter(\r\n      (currency) => currency.address !== zeroAddress\r\n    )\r\n  }, [\r\n    allPaymentTokens,\r\n    chain?.paymentTokens,\r\n    crossChainDisabled,\r\n    nativeOnly,\r\n    includeListingCurrency,\r\n  ])\r\n\r\n  const nativeCurrencies = useMemo(() => {\r\n    return allPaymentTokens?.filter(\r\n      (currency) => currency.address === zeroAddress\r\n    )\r\n  }, [\r\n    allPaymentTokens,\r\n    chain?.paymentTokens,\r\n    crossChainDisabled,\r\n    nativeOnly,\r\n    includeListingCurrency,\r\n  ])\r\n\r\n  const { data: nonNativeBalances } = useReadContracts({\r\n    contracts: open\r\n      ? nonNativeCurrencies?.map((currency) => ({\r\n          abi: erc20Abi,\r\n          address: currency.address as `0x${string}`,\r\n          chainId: chainId,\r\n          functionName: 'balanceOf',\r\n          args: [address],\r\n        }))\r\n      : [],\r\n    query: {\r\n      enabled: open,\r\n    },\r\n    allowFailure: false,\r\n  })\r\n\r\n  const { data: nativeBalances } = useSWR(\r\n    open ? address : undefined,\r\n    () => fetchNativeBalances(address, config, nativeCurrencies),\r\n    {\r\n      revalidateOnFocus: false,\r\n    }\r\n  )\r\n\r\n  const crosschainChainIds = useMemo(() => {\r\n    if (crossChainDisabled) {\r\n      return []\r\n    } else {\r\n      return (\r\n        allPaymentTokens\r\n          ?.filter((token) => token?.chainId !== chain?.id)\r\n          ?.map((token) => token?.chainId) ?? []\r\n      )\r\n    }\r\n  }, [allPaymentTokens, crossChainDisabled])\r\n\r\n  const { data: solverCapacity } = useSolverCapacity(chain?.id, open)\r\n\r\n  const preferredCurrencyConversions = useCurrencyConversions(\r\n    path && path[0]\r\n      ? path[0].currency ?? path[0].buyInCurrency ?? undefined\r\n      : undefined,\r\n    chain,\r\n    open ? allPaymentTokens : undefined\r\n  )\r\n\r\n  return useMemo(() => {\r\n    if (!open) {\r\n      return []\r\n    }\r\n\r\n    const paymentTokens = allPaymentTokens?.reduce(\r\n      (tokens, token, i) => {\r\n        const conversionData = preferredCurrencyConversions?.data?.[i]\r\n        tokens[`${token.address.toLowerCase()}:${token.chainId}`] = {\r\n          total: 0n,\r\n          usdTotal: 0,\r\n          currency: {\r\n            ...token,\r\n            contract: token.address.toLowerCase(),\r\n          },\r\n          chainId: token.chainId,\r\n          conversionData,\r\n        }\r\n        return tokens\r\n      },\r\n      {} as Record<\r\n        string,\r\n        {\r\n          total: bigint\r\n          usdTotal: number\r\n          currency: Currency\r\n          chainId: number\r\n          conversionData?: { conversion?: string; usd?: string }\r\n        }\r\n      >\r\n    )\r\n\r\n    if (!paymentTokens) {\r\n      return []\r\n    }\r\n\r\n    let totalQuantities: Record<string, number> = {}\r\n    let orders: Record<string, number> = {}\r\n\r\n    const normalizedQuantities: Record<string, number> = {}\r\n    for (const key in quantityToken) {\r\n      normalizedQuantities[key.toLowerCase()] = quantityToken[key]\r\n    }\r\n\r\n    path?.forEach((pathItem: any, i) => {\r\n      const tokenKey = `${pathItem.contract?.toLowerCase()}:${pathItem.tokenId}`\r\n      const contractKey = `${pathItem.contract?.toLowerCase()}` //todo: test with sweeping\r\n\r\n      let assetKey = tokenKey\r\n      let totalQuantity = 0\r\n      let requiredQuantity = 0\r\n      //Determine correct key to use\r\n      if (normalizedQuantities[tokenKey] !== undefined) {\r\n        assetKey = tokenKey\r\n      } else if (normalizedQuantities[contractKey] !== undefined) {\r\n        assetKey = contractKey\r\n      }\r\n\r\n      totalQuantity = totalQuantities[assetKey] || 0\r\n      requiredQuantity = normalizedQuantities[assetKey] || 0\r\n\r\n      //quantity check\r\n      // const pathQuantity = pathItem.quantity || 0\r\n      const pathQuantity = pathItem.mintableQuantity\r\n        ? Number(pathItem.mintableQuantity) || 0\r\n        : pathItem.quantity || 0\r\n      const quantityLeft = requiredQuantity - totalQuantity\r\n      if (totalQuantity === requiredQuantity) {\r\n        return\r\n      }\r\n\r\n      let quantityToTake = 0\r\n\r\n      if (quantityLeft >= pathQuantity) {\r\n        quantityToTake = pathQuantity\r\n      } else {\r\n        quantityToTake = quantityLeft\r\n      }\r\n\r\n      orders[pathItem.orderId as string] = quantityToTake\r\n      totalQuantities[assetKey] = totalQuantity + quantityToTake\r\n\r\n      //Total for BuyIn or listing currency\r\n      const currency = pathItem.buyInCurrency\r\n        ? pathItem.buyInCurrency\r\n        : pathItem.currency\r\n      const totalRaw = BigInt(\r\n        pathItem.buyInRawQuote\r\n          ? pathItem.buyInRawQuote\r\n          : pathItem.totalRawPrice ?? 0\r\n      )\r\n\r\n      const currencyChainId = pathItem.fromChainId || chainId\r\n      const currencyKey = `${currency?.toLowerCase()}:${currencyChainId}`\r\n      if (paymentTokens[currencyKey]) {\r\n        paymentTokens[currencyKey].total += totalRaw * BigInt(quantityToTake)\r\n      }\r\n    })\r\n\r\n    const preferredToken = Object.values(paymentTokens).find(\r\n      (token) => token.total > 0n\r\n    )\r\n\r\n    return Object.values(paymentTokens)\r\n      .map((token) => {\r\n        const currency = token.currency\r\n\r\n        let maxItems: EnhancedCurrency['maxItems'] = undefined\r\n        let capacityPerRequest: EnhancedCurrency['capacityPerRequest'] =\r\n          undefined\r\n\r\n        if (\r\n          !crossChainDisabled &&\r\n          crosschainChainIds?.length > 0 &&\r\n          solverCapacity &&\r\n          token.chainId !== chain?.id &&\r\n          path\r\n        ) {\r\n          maxItems = 0\r\n          for (\r\n            let i = 0;\r\n            i < Math.min(path.length, solverCapacity.maxItems);\r\n            i++\r\n          ) {\r\n            maxItems += path[i].quantity || 0\r\n          }\r\n\r\n          capacityPerRequest = BigInt(solverCapacity.capacityPerRequest)\r\n        }\r\n\r\n        let balance: string | number | bigint = 0n\r\n        if (currency.contract === zeroAddress) {\r\n          const index =\r\n            nativeCurrencies?.findIndex(\r\n              (nativeCurrency) =>\r\n                nativeCurrency.symbol === currency.symbol &&\r\n                nativeCurrency.chainId === token.chainId\r\n            ) || 0\r\n\r\n          balance = nativeBalances?.[index]?.value ?? 0n\r\n        } else {\r\n          const index =\r\n            nonNativeCurrencies?.findIndex(\r\n              (nonNativeCurrency) =>\r\n                nonNativeCurrency.symbol === currency.symbol &&\r\n                nonNativeCurrency?.address?.toLowerCase() ===\r\n                  currency?.contract?.toLowerCase()\r\n            ) || 0\r\n          balance =\r\n            nonNativeBalances &&\r\n            nonNativeBalances[index] &&\r\n            (typeof nonNativeBalances[index] === 'string' ||\r\n              typeof nonNativeBalances[index] === 'number' ||\r\n              typeof nonNativeBalances[index] === 'bigint')\r\n              ? (nonNativeBalances[index] as string | number | bigint)\r\n              : 0n\r\n        }\r\n        const conversionData = token.conversionData\r\n        let currencyTotalRaw = token.total\r\n        if (\r\n          !currencyTotalRaw &&\r\n          (token.currency.contract !== preferredToken?.currency.contract ||\r\n            token.chainId !== preferredToken?.chainId)\r\n        ) {\r\n          currencyTotalRaw =\r\n            conversionData?.conversion &&\r\n            conversionData?.conversion !== '0' &&\r\n            preferredToken?.total\r\n              ? (preferredToken.total *\r\n                  parseUnits('1', currency.decimals ?? 18)) /\r\n                parseUnits(\r\n                  conversionData?.conversion?.toString(),\r\n                  preferredToken.currency.decimals ?? 18\r\n                )\r\n              : 0n\r\n        }\r\n\r\n        const currencyTotalFormatted =\r\n          currencyTotalRaw > 0n\r\n            ? formatUnits(currencyTotalRaw, currency?.decimals || 18)\r\n            : undefined\r\n\r\n        const usdPrice = Number(conversionData?.usd ?? 0)\r\n        const usdPriceRaw = parseUnits(usdPrice.toString(), 6)\r\n        const usdTotalPriceRaw = conversionData?.usd\r\n          ? ((preferredToken?.total || 0n) * usdPriceRaw) /\r\n            parseUnits('1', preferredToken?.currency?.decimals ?? 18)\r\n          : undefined\r\n\r\n        const usdTotalFormatted = usdTotalPriceRaw\r\n          ? formatUnits(usdTotalPriceRaw, 6)\r\n          : undefined\r\n        const usdBalanceRaw =\r\n          conversionData?.usd && typeof balance === 'bigint'\r\n            ? ((balance || 0n) * usdPriceRaw) /\r\n              parseUnits('1', preferredToken?.currency?.decimals ?? 18)\r\n            : undefined\r\n\r\n        return {\r\n          ...currency,\r\n          address: token?.currency?.contract?.toLowerCase(),\r\n          usdPrice: token.usdTotal,\r\n          usdPriceRaw,\r\n          usdTotalPriceRaw,\r\n          balance,\r\n          currencyTotalRaw,\r\n          currencyTotalFormatted,\r\n          usdTotalFormatted: usdTotalFormatted,\r\n          usdBalanceRaw: usdBalanceRaw,\r\n          maxItems,\r\n          capacityPerRequest,\r\n          chainId: token.chainId,\r\n          totalPriceWithoutFee:\r\n            path && path?.length > 0\r\n              ? BigInt(Number((path[0] as any).totalPriceWithoutFee || 0))\r\n              : 0n,\r\n        }\r\n      })\r\n      .sort((a, b) => {\r\n        return Number(b.usdBalanceRaw) - Number(a.usdBalanceRaw)\r\n      })\r\n  }, [\r\n    address,\r\n    chainId,\r\n    allPaymentTokens,\r\n    path,\r\n    nonNativeBalances,\r\n    nativeBalances,\r\n    quantityToken,\r\n    listingCurrency,\r\n    listingCurrencyChainId,\r\n    preferredCurrencyConversions,\r\n  ]) as EnhancedCurrency[]\r\n}\r\n","import { ReservoirChain, axios, paths } from '@sh-reservoir0x/reservoir-sdk'\r\nimport useSWR from 'swr/immutable'\r\nimport { PaymentToken } from '@sh-reservoir0x/reservoir-sdk'\r\n\r\ntype CurrencyConversionResponse =\r\n  paths['/currencies/conversion/v1']['get']['responses']['200']['schema']\r\n\r\nconst fetcher = async (urls: string[]) => {\r\n  const fetches = urls.map(\r\n    (url) =>\r\n      axios(url)\r\n        .then((r) => r.data)\r\n        .catch(() => undefined) // If a fetch fails, return undefined\r\n  )\r\n  const results = await Promise.allSettled(fetches)\r\n  return results.map((result) =>\r\n    result.status === 'fulfilled' ? result.value : undefined\r\n  )\r\n}\r\n\r\nexport default function (\r\n  prefferedCurrencyAddress?: string,\r\n  chain?: ReservoirChain | null | undefined,\r\n  currencies?: PaymentToken[]\r\n) {\r\n  const urls = prefferedCurrencyAddress\r\n    ? currencies?.map(\r\n        (currency) =>\r\n          `${chain?.baseApiUrl}/currencies/conversion/v1?from=${currency.address}&to=${prefferedCurrencyAddress}`\r\n      )\r\n    : undefined\r\n\r\n  const { data, error } = useSWR<CurrencyConversionResponse[]>(urls, fetcher, {\r\n    refreshInterval: 300000, //5m\r\n  })\r\n  return {\r\n    data: data,\r\n    isError: !!error,\r\n    isLoading: !data && !error,\r\n  }\r\n}\r\n","import { Flex } from '../primitives'\r\nimport React, { ComponentPropsWithoutRef, FC } from 'react'\r\n\r\ntype Props = {\r\n  value: number\r\n  max: number\r\n} & ComponentPropsWithoutRef<typeof Flex>\r\n\r\nconst ProgressBar: FC<Props> = ({ value, max, ...props }) => {\r\n  return (\r\n    <Flex {...props} css={{ width: '100%', gap: '$2', ...props.css }}>\r\n      {[...Array(max)].map((_item, i) => (\r\n        <Flex\r\n          key={i}\r\n          css={{\r\n            height: 4,\r\n            borderRadius: 99999,\r\n            flex: 1,\r\n            background:\r\n              'linear-gradient(to left, $neutralBorderHover 50%, $accentSolid 50%) right',\r\n            backgroundSize: '200% 100%',\r\n            backgroundPosition: i + 1 <= value ? 'left' : 'right',\r\n            transition: 'all 0.5s ease',\r\n          }}\r\n        ></Flex>\r\n      ))}\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default ProgressBar\r\n","import React, { CSSProperties, FC } from 'react'\r\nimport { Button } from '../primitives'\r\nimport PseudoInput from '../primitives/PseudoInput'\r\nimport { styled } from '../../stitches.config'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faMinus, faPlus } from '@fortawesome/free-solid-svg-icons'\r\n\r\ntype Props = {\r\n  max: number\r\n  min: number\r\n  quantity: number\r\n  setQuantity: (quantity: number) => void\r\n  css?: CSSProperties\r\n}\r\n\r\nconst QuantityButton = styled(Button, {\r\n  color: '$neutralSolid',\r\n  backgroundColor: 'transparent',\r\n  '&:disabled': {\r\n    backgroundColor: '$transparent',\r\n    color: '$neutralBorderHover',\r\n  },\r\n  '&:disabled:hover': {\r\n    backgroundColor: '$transparent',\r\n    color: '$neutralBorderHover',\r\n  },\r\n  defaultVariants: {\r\n    color: 'ghost',\r\n  },\r\n})\r\n\r\nconst QuantityInput = styled('input', {\r\n  border: 0,\r\n  background: 'none',\r\n  fontSize: 16,\r\n  maxWidth: 53,\r\n  textAlign: 'center',\r\n  color: '$neutralTextContrast',\r\n})\r\n\r\nconst QuantitySelector: FC<Props> = ({\r\n  max,\r\n  min,\r\n  quantity,\r\n  setQuantity,\r\n  css,\r\n}) => {\r\n  return (\r\n    <PseudoInput\r\n      css={{\r\n        gap: '$1',\r\n        direction: 'column',\r\n        display: 'flex',\r\n        alignItems: 'center',\r\n        p: 0,\r\n        ...css,\r\n      }}\r\n    >\r\n      <QuantityButton\r\n        css={{ px: 20 }}\r\n        disabled={quantity <= min}\r\n        onClick={() => {\r\n          setQuantity(quantity - 1)\r\n        }}\r\n      >\r\n        <FontAwesomeIcon\r\n          icon={faMinus}\r\n          width=\"16\"\r\n          height=\"16\"\r\n          style={{ height: 16 }}\r\n        />\r\n      </QuantityButton>\r\n      <QuantityInput\r\n        value={quantity == -1 ? 1 : quantity}\r\n        onChange={(e) => {\r\n          if (e.target.value === '') {\r\n            setQuantity(min)\r\n            return\r\n          }\r\n\r\n          const newQuantity = Number(e.target.value || 1)\r\n          if (newQuantity && newQuantity >= min && newQuantity <= max) {\r\n            setQuantity(newQuantity)\r\n          } else {\r\n            setQuantity(quantity)\r\n          }\r\n        }}\r\n        onBlur={(e) => {\r\n          if (e.target.value === '') {\r\n            setQuantity(min)\r\n          } else if (Number(e.target.value) > max) {\r\n            setQuantity(max)\r\n          }\r\n        }}\r\n      />\r\n      <QuantityButton\r\n        css={{ px: 20 }}\r\n        disabled={quantity >= max}\r\n        onClick={() => {\r\n          setQuantity(quantity + 1)\r\n        }}\r\n      >\r\n        <FontAwesomeIcon\r\n          icon={faPlus}\r\n          width=\"16\"\r\n          height=\"16\"\r\n          style={{ height: 16 }}\r\n        />\r\n      </QuantityButton>\r\n    </PseudoInput>\r\n  )\r\n}\r\n\r\nexport default QuantitySelector\r\n","import { styled } from '../../stitches.config'\r\n\r\nconst PseudoInput = styled('div', {\r\n  all: 'unset',\r\n  width: 'auto',\r\n  padding: '$4',\r\n  borderRadius: '$space$2',\r\n  fontFamily: '$body',\r\n  fontSize: 16,\r\n  fontWeight: 400,\r\n  color: '$neutralText',\r\n  backgroundColor: '$inputBackground',\r\n})\r\n\r\nexport default PseudoInput\r\n","import React, { FC, useContext } from 'react'\r\nimport { CSS } from '@stitches/react'\r\nimport {\r\n  Box,\r\n  Flex,\r\n  FormatCryptoCurrency,\r\n  FormatCurrency,\r\n  Loader,\r\n  Text,\r\n  Tooltip,\r\n} from '../primitives'\r\nimport { ProviderOptionsContext } from '../ReservoirKitProvider'\r\nimport { EnhancedCurrency } from '../hooks/usePaymentTokens'\r\nimport { formatUnits, parseUnits } from 'viem'\r\nimport { BuyResponses, MintResponses } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport faInfoCircle from '@fortawesome/free-solid-svg-icons/faInfoCircle'\r\nimport { useCoinConversion } from '../hooks'\r\n\r\ntype Props = {\r\n  css?: CSS\r\n  chainId?: number\r\n  paymentCurrency?: EnhancedCurrency\r\n  loading?: boolean\r\n  feeOnTop: bigint\r\n  feeUsd: string\r\n  crosschainFees?: BuyResponses['fees'] | MintResponses['fees']\r\n  itemAmount: number\r\n}\r\n\r\nexport const PaymentDetails: FC<Props> = ({\r\n  css,\r\n  chainId,\r\n  paymentCurrency,\r\n  loading,\r\n  feeOnTop,\r\n  feeUsd,\r\n  crosschainFees,\r\n  itemAmount: itemAmount,\r\n}) => {\r\n  const coinConversion = useCoinConversion('USD')\r\n  const usdPrice = coinConversion.length > 0 ? coinConversion[0].price : 0\r\n  const providerOptions = useContext(ProviderOptionsContext)\r\n  // const usdTotal = formatUnits(\r\n  //   ((paymentCurrency?.currencyTotalRaw || 0n) + feeOnTop) *\r\n  //     (paymentCurrency?.usdPriceRaw || 0n),\r\n  //   (paymentCurrency?.decimals || 18) + 6\r\n  const usdPriceRaw = parseUnits(usdPrice.toString(), 6)\r\n  const usdTotal = formatUnits(\r\n    ((paymentCurrency?.currencyTotalRaw ?? 0n) + feeOnTop) *\r\n      (usdPriceRaw || 0n),\r\n    (paymentCurrency?.decimals || 18) + 6\r\n  )\r\n\r\n  return (\r\n    <Flex direction=\"column\" css={{ width: '100%', ...css }}>\r\n      {feeOnTop > 0 && (\r\n        <Flex\r\n          justify=\"between\"\r\n          align=\"start\"\r\n          css={{ px: '$4', py: '$3', width: '100%' }}\r\n        >\r\n          <Text style=\"subtitle3\">Referral Fee</Text>\r\n          <Flex direction=\"column\" align=\"end\" css={{ gap: '$1' }}>\r\n            <FormatCryptoCurrency\r\n              chainId={chainId}\r\n              amount={feeOnTop}\r\n              address={paymentCurrency?.address}\r\n              decimals={paymentCurrency?.decimals}\r\n              symbol={paymentCurrency?.name}\r\n            />\r\n            <FormatCurrency amount={feeUsd} color=\"subtle\" style=\"tiny\" />\r\n          </Flex>\r\n        </Flex>\r\n      )}\r\n      {crosschainFees && crosschainFees?.relayer?.amount?.raw ? (\r\n        <Flex\r\n          justify=\"between\"\r\n          align=\"start\"\r\n          css={{ px: '$4', py: '$3', width: '100%' }}\r\n        >\r\n          <Flex align=\"center\" css={{ gap: '$2' }}>\r\n            <Text style=\"subtitle3\">Relayer Fee</Text>\r\n            <Tooltip\r\n              content={\r\n                <Text\r\n                  style=\"body3\"\r\n                  css={{ maxWidth: 200, textAlign: 'center', display: 'block' }}\r\n                >\r\n                  A fee paid to the Relayer who executes your transaction on the\r\n                  destination chain.\r\n                </Text>\r\n              }\r\n            >\r\n              <Box css={{ color: '$neutralText' }}>\r\n                <FontAwesomeIcon icon={faInfoCircle} />\r\n              </Box>\r\n            </Tooltip>\r\n          </Flex>\r\n          <Flex direction=\"column\" align=\"end\" css={{ gap: '$1' }}>\r\n            <FormatCryptoCurrency\r\n              chainId={chainId}\r\n              amount={crosschainFees?.relayer?.amount?.raw}\r\n            />\r\n\r\n            {crosschainFees?.relayer?.amount?.usd ? (\r\n              <FormatCurrency\r\n                amount={crosschainFees?.relayer?.amount?.usd}\r\n                color=\"subtle\"\r\n                style=\"tiny\"\r\n              />\r\n            ) : null}\r\n          </Flex>\r\n        </Flex>\r\n      ) : null}\r\n      <Flex justify=\"between\" align=\"start\" css={{ px: '$4' }}>\r\n        <Text style=\"h6\">You Pay</Text>\r\n        <Flex direction=\"column\" align=\"end\" css={{ gap: '$1' }}>\r\n          {loading ? (\r\n            <Loader />\r\n          ) : (\r\n            <>\r\n              {providerOptions.preferDisplayFiatTotal ? (\r\n                <>\r\n                  <FormatCurrency amount={usdTotal} style=\"h6\" color=\"base\" />\r\n                  <FormatCryptoCurrency\r\n                    chainId={chainId}\r\n                    textStyle=\"body2\"\r\n                    textColor=\"subtle\"\r\n                    amount={\r\n                      (paymentCurrency?.currencyTotalRaw ?? 0n) + feeOnTop\r\n                    }\r\n                    // amount={\r\n                    //   (paymentCurrency?.totalPriceWithoutFee\r\n                    //     ? paymentCurrency?.totalPriceWithoutFee\r\n                    //     : paymentCurrency?.currencyTotalRaw ?? 0n) *\r\n                    //     BigInt(itemAmount || 1) +\r\n                    //   feeOnTop\r\n                    // }\r\n                    address={paymentCurrency?.address}\r\n                    decimals={paymentCurrency?.decimals}\r\n                    symbol={paymentCurrency?.symbol}\r\n                    logoWidth={12}\r\n                  />\r\n                </>\r\n              ) : (\r\n                <>\r\n                  <FormatCryptoCurrency\r\n                    chainId={chainId}\r\n                    textStyle=\"h6\"\r\n                    textColor=\"base\"\r\n                    amount={\r\n                      (paymentCurrency?.currencyTotalRaw ?? 0n) + feeOnTop\r\n                    }\r\n                    // amount={\r\n                    //   (paymentCurrency?.totalPriceWithoutFee\r\n                    //     ? paymentCurrency?.totalPriceWithoutFee\r\n                    //     : paymentCurrency?.currencyTotalRaw ?? 0n) *\r\n                    //     BigInt(itemAmount || 1) +\r\n                    //   feeOnTop\r\n                    // }\r\n                    address={paymentCurrency?.address}\r\n                    decimals={paymentCurrency?.decimals}\r\n                    symbol={paymentCurrency?.symbol}\r\n                    logoWidth={18}\r\n                  />\r\n                  <FormatCurrency\r\n                    amount={usdTotal}\r\n                    style=\"body2\"\r\n                    color=\"subtle\"\r\n                  />\r\n                </>\r\n              )}\r\n            </>\r\n          )}\r\n        </Flex>\r\n      </Flex>\r\n    </Flex>\r\n  )\r\n}\r\n","import React, { ComponentPropsWithoutRef, FC, useEffect, useState } from 'react'\r\nimport { Text } from './index'\r\nimport { formatUnits } from 'viem'\r\n\r\ntype Props = {\r\n  amount: string | number | bigint | null | undefined\r\n  currency?: Intl.NumberFormatOptions['currency']\r\n  maximumFractionDigits?: number\r\n}\r\n\r\nconst FormatCurrency: FC<ComponentPropsWithoutRef<typeof Text> & Props> = ({\r\n  amount,\r\n  maximumFractionDigits = 2,\r\n  currency = 'USD',\r\n  ...props\r\n}) => {\r\n  const [formattedValue, setFormattedValue] = useState('')\r\n\r\n  useEffect(() => {\r\n    let parsedAmount\r\n    if (typeof amount === 'bigint') {\r\n      parsedAmount = formatUnits(amount, 6)\r\n    } else {\r\n      parsedAmount = amount\r\n    }\r\n    if (parsedAmount) {\r\n      const lowestValue = Number(\r\n        `0.${new Array(maximumFractionDigits).join('0')}1`\r\n      )\r\n      const tooLow = +parsedAmount < lowestValue\r\n\r\n      const formatted = new Intl.NumberFormat(undefined, {\r\n        style: 'currency',\r\n        currency: currency,\r\n      }).format(tooLow ? lowestValue : +parsedAmount)\r\n      setFormattedValue(tooLow ? `< ${formatted}` : formatted)\r\n    } else {\r\n      setFormattedValue('')\r\n    }\r\n  }, [amount, maximumFractionDigits])\r\n\r\n  return (\r\n    <Text\r\n      {...props}\r\n      style={props.style || 'subtitle3'}\r\n      color={props.color || 'base'}\r\n    >\r\n      {formattedValue}\r\n    </Text>\r\n  )\r\n}\r\n\r\nexport default FormatCurrency\r\n","import React, { FC } from 'react'\r\nimport { ChainIcon, Divider, Flex, Img, Text } from '../primitives'\r\nimport { useCollections, useTokens } from '../hooks'\r\nimport { ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { CSS } from '@stitches/react'\r\n\r\ntype Props = {\r\n  token?: NonNullable<ReturnType<typeof useTokens>['data']>[0]\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  chain?: ReservoirChain | null\r\n  css?: CSS\r\n}\r\n\r\nexport const TokenInfo: FC<Props> = ({ token, collection, chain, css }) => {\r\n  return (\r\n    <Flex justify=\"between\" align=\"center\" css={{ gap: '$4', ...css }}>\r\n      <Flex align=\"center\" css={{ gap: '$3' }}>\r\n        <Img\r\n          src={token?.token?.image || token?.token?.collection?.image}\r\n          css={{\r\n            borderRadius: 8,\r\n            objectFit: 'cover',\r\n            height: 56,\r\n            width: 56,\r\n          }}\r\n        />\r\n        <Flex direction=\"column\" css={{ gap: '$1' }}>\r\n          <Text style=\"h6\">\r\n            {token?.token?.name || `#${token?.token?.tokenId}`}\r\n          </Text>\r\n          <Flex align=\"center\" css={{ gap: '$1' }}>\r\n            <Text style=\"subtitle2\" color=\"subtle\">\r\n              {collection?.name}\r\n            </Text>\r\n            {chain ? (\r\n              <>\r\n                <Divider direction=\"vertical\" />\r\n                <ChainIcon\r\n                  chainId={chain.id}\r\n                  height={12}\r\n                  css={{ alignItems: 'center', width: '12px' }}\r\n                />\r\n                <Text style=\"subtitle2\" color=\"subtle\" ellipsify>\r\n                  {chain.name}\r\n                </Text>\r\n              </>\r\n            ) : null}\r\n          </Flex>\r\n        </Flex>\r\n      </Flex>\r\n    </Flex>\r\n  )\r\n}\r\n","import React, { FC } from 'react'\r\nimport { ThemeContext } from '../ReservoirKitProvider'\r\nimport { ReservoirKitThemeContext } from '../../stitches.config'\r\nimport { useContext } from 'react'\r\nimport { Box } from './'\r\nimport { CSS } from '@stitches/react'\r\nimport chainIcons from '../constants/chainIcons'\r\nimport GoerliIconDark from '../img/chains/GoerliIconDark'\r\n\r\ntype Props = {\r\n  chainId?: number\r\n  height?: number\r\n  css?: CSS\r\n  color?: boolean\r\n}\r\n\r\nconst ChainIcon: FC<Props> = ({ chainId, css = {}, height = 14, color }) => {\r\n  const themeContext = useContext(ThemeContext)\r\n\r\n  if (!chainId) {\r\n    return null\r\n  }\r\n\r\n  const chainIconConfig = chainIcons[chainId]\r\n  let iconTheme: ReservoirKitThemeContext['assets']['chainIcon']['value'] =\r\n    themeContext && (themeContext as any)\r\n      ? themeContext['assets']['chainIcon']['value']\r\n      : 'dark'\r\n\r\n  let icon: JSX.Element | null = chainIconConfig ? (\r\n    chainIconConfig[iconTheme]\r\n  ) : (\r\n    <GoerliIconDark />\r\n  )\r\n\r\n  if (color) {\r\n    icon = chainIconConfig.color\r\n  }\r\n\r\n  return icon ? (\r\n    <Box\r\n      css={{\r\n        display: 'flex',\r\n        height: height,\r\n        ...css,\r\n      }}\r\n    >\r\n      {icon}\r\n    </Box>\r\n  ) : null\r\n}\r\n\r\nexport default ChainIcon\r\n","import React from 'react'\r\nimport { reservoirChains } from '@sh-reservoir0x/reservoir-sdk'\r\nimport MainnetIconDark from '../img/chains/MainnetIconDark'\r\nimport MainnetIconLight from '../img/chains/MainnetIconLight'\r\nimport PolygonIconDark from '../img/chains/PolygonIconDark'\r\nimport PolygonIconLight from '../img/chains/PolygonIconLight'\r\nimport PolygonIconColor from '../img/chains/PolygonIconColor'\r\nimport BaseIconDark from '../img/chains/BaseIconDark'\r\nimport BaseIconLight from '../img/chains/BaseIconLight'\r\nimport BaseIconColor from '../img/chains/BaseIconColor'\r\nimport Ancient8IconDark from '../img/chains/Ancient8IconDark'\r\nimport Ancient8IconLight from '../img/chains/Ancient8IconLight'\r\nimport Ancient8IconColor from '../img/chains/Ancient8IconColor'\r\nimport ArbitrumIconDark from '../img/chains/ArbitrumIconDark'\r\nimport ArbitrumIconLight from '../img/chains/ArbitrumIconLight'\r\nimport ArbitrumIconColor from '../img/chains/ArbitrumIconColor'\r\nimport ArbitrumNovaIconDark from '../img/chains/ArbitrumNovaIconDark'\r\nimport ArbitrumNovaIconLight from '../img/chains/ArbitrumNovaIconLight'\r\nimport ArbitrumNovaIconColor from '../img/chains/ArbitrumNovaIconColor'\r\nimport AvalancheIconDark from '../img/chains/AvalancheIconDark'\r\nimport AvalancheIconLight from '../img/chains/AvalancheIconLight'\r\nimport AvalancheIconColor from '../img/chains/AvalancheIconColor'\r\nimport BscIconDark from '../img/chains/BscIconDark'\r\nimport BscIconLight from '../img/chains/BscIconLight'\r\nimport BscIconColor from '../img/chains/BscIconColor'\r\nimport GoerliIconDark from '../img/chains/GoerliIconDark'\r\nimport GoerliIconLight from '../img/chains/GoerliIconLight'\r\nimport LineaIconDark from '../img/chains/LineaIconDark'\r\nimport LineaIconLight from '../img/chains/LineaIconLight'\r\nimport LineaIconColor from '../img/chains/LineaIconColor'\r\nimport OptimismIconDark from '../img/chains/OptimismIconDark'\r\nimport OptimismIconLight from '../img/chains/OptimismIconLight'\r\nimport OptimismIconColor from '../img/chains/OptimismIconColor'\r\nimport ScrollIconDark from '../img/chains/ScrollIconDark'\r\nimport ScrollIconLight from '../img/chains/ScrollIconLight'\r\nimport ScrollIconColor from '../img/chains/ScrollIconColor'\r\nimport PolygonZkevmIconDark from '../img/chains/PolygonZkevmIconDark'\r\nimport PolygonZkevmIconLight from '../img/chains/PolygonZkevmIconLight'\r\nimport PolygonZkevmIconColor from '../img/chains/PolygonZkevmIconColor'\r\nimport ZksyncIconDark from '../img/chains/ZksyncIconDark'\r\nimport ZksyncIconLight from '../img/chains/ZksyncIconLight'\r\nimport ZksyncIconColor from '../img/chains/ZksyncIconColor'\r\nimport ZoraIconDark from '../img/chains/ZoraIconDark'\r\nimport ZoraIconLight from '../img/chains/ZoraIconLight'\r\nimport ZoraIconColor from '../img/chains/ZoraIconColor'\r\nimport FrameIconDark from '../img/chains/FrameIconDark'\r\nimport FrameIconLight from '../img/chains/FrameIconLight'\r\nimport FrameIconColor from '../img/chains/FrameIconColor'\r\nimport BlastSepoliaIconColor from '../img/chains/BlastSepoliaIconColor'\r\nimport BlastSepoliaIconLight from '../img/chains/BlastSepoliaIconLight'\r\nimport BlastSepoliaIconDark from '../img/chains/BlastSepoliaIconDark'\r\nimport ApexPopIconLight from '../img/chains/ApexPopIconLight'\r\nimport ApexPopIconDark from '../img/chains/ApexPopIconDark'\r\nimport ApexPopIconColor from '../img/chains/ApexPopIconColor'\r\nimport BlastIconColor from '../img/chains/BlastIconColor'\r\nimport BlastIconDark from '../img/chains/BlastIconDark'\r\nimport BlastIconLight from '../img/chains/BlastIconLight'\r\nimport AuraIconLight from '../img/chains/AuraIconLight'\r\nimport AuraIconDark from '../img/chains/AuraIconDark'\r\n\r\nconst chainIcons = {\r\n  [reservoirChains.ancient8.id]: {\r\n    light: <Ancient8IconDark />,\r\n    dark: <Ancient8IconLight />,\r\n    color: <Ancient8IconColor />,\r\n  },\r\n  [reservoirChains.ancient8Testnet.id]: {\r\n    light: <Ancient8IconDark />,\r\n    dark: <Ancient8IconLight />,\r\n    color: <Ancient8IconColor />,\r\n  },\r\n  [reservoirChains.arbitrum.id]: {\r\n    light: <ArbitrumIconDark />,\r\n    dark: <ArbitrumIconLight />,\r\n    color: <ArbitrumIconColor />,\r\n  },\r\n  [reservoirChains.arbitrumNova.id]: {\r\n    light: <ArbitrumNovaIconDark />,\r\n    dark: <ArbitrumNovaIconLight />,\r\n    color: <ArbitrumNovaIconColor />,\r\n  },\r\n  [reservoirChains.avalanche.id]: {\r\n    light: <AvalancheIconDark />,\r\n    dark: <AvalancheIconLight />,\r\n    color: <AvalancheIconColor />,\r\n  },\r\n  [reservoirChains.base.id]: {\r\n    light: <BaseIconDark />,\r\n    dark: <BaseIconLight />,\r\n    color: <BaseIconColor />,\r\n  },\r\n  [reservoirChains.baseSepolia.id]: {\r\n    light: <BaseIconDark />,\r\n    dark: <BaseIconLight />,\r\n    color: <BaseIconColor />,\r\n  },\r\n  [reservoirChains.bsc.id]: {\r\n    light: <BscIconDark />,\r\n    dark: <BscIconLight />,\r\n    color: <BscIconColor />,\r\n  },\r\n  [reservoirChains.opBnb.id]: {\r\n    light: <BscIconDark />,\r\n    dark: <BscIconLight />,\r\n    color: <BscIconColor />,\r\n  },\r\n  [reservoirChains.sepolia.id]: {\r\n    light: <GoerliIconDark />,\r\n    dark: <GoerliIconLight />,\r\n    color: null,\r\n  },\r\n  [reservoirChains.linea.id]: {\r\n    light: <LineaIconDark />,\r\n    dark: <LineaIconLight />,\r\n    color: <LineaIconColor />,\r\n  },\r\n  [reservoirChains.mainnet.id]: {\r\n    light: <MainnetIconDark />,\r\n    dark: <MainnetIconLight />,\r\n    color: null,\r\n  },\r\n  [reservoirChains.optimism.id]: {\r\n    light: <OptimismIconDark />,\r\n    dark: <OptimismIconLight />,\r\n    color: <OptimismIconColor />,\r\n  },\r\n  [reservoirChains.polygonZkEvm.id]: {\r\n    light: <PolygonZkevmIconDark />,\r\n    dark: <PolygonZkevmIconLight />,\r\n    color: <PolygonZkevmIconColor />,\r\n  },\r\n  [reservoirChains.polygon.id]: {\r\n    light: <PolygonIconDark />,\r\n    dark: <PolygonIconLight />,\r\n    color: <PolygonIconColor />,\r\n  },\r\n  [reservoirChains.scrollTestnet.id]: {\r\n    light: <ScrollIconDark />,\r\n    dark: <ScrollIconLight />,\r\n    color: <ScrollIconColor />,\r\n  },\r\n  [reservoirChains.scroll.id]: {\r\n    light: <ScrollIconDark />,\r\n    dark: <ScrollIconLight />,\r\n    color: <ScrollIconColor />,\r\n  },\r\n  [reservoirChains.zkSync.id]: {\r\n    light: <ZksyncIconDark />,\r\n    dark: <ZksyncIconLight />,\r\n    color: <ZksyncIconColor />,\r\n  },\r\n  [reservoirChains.zora.id]: {\r\n    light: <ZoraIconDark />,\r\n    dark: <ZoraIconLight />,\r\n    color: <ZoraIconColor />,\r\n  },\r\n  [reservoirChains.frameTestnet.id]: {\r\n    light: <FrameIconDark />,\r\n    dark: <FrameIconLight />,\r\n    color: <FrameIconColor />,\r\n  },\r\n  [reservoirChains.blastSepolia.id]: {\r\n    light: <BlastSepoliaIconDark />,\r\n    dark: <BlastSepoliaIconLight />,\r\n    color: <BlastSepoliaIconColor />,\r\n  },\r\n  [reservoirChains.apexPop.id]: {\r\n    light: <ApexPopIconLight />,\r\n    dark: <ApexPopIconDark />,\r\n    color: <ApexPopIconColor />,\r\n  },\r\n  [reservoirChains.blast.id]: {\r\n    light: <BlastIconLight />,\r\n    dark: <BlastIconDark />,\r\n    color: <BlastIconColor />,\r\n  },\r\n  9_000: {\r\n    // Evmos testnet\r\n    light: <GoerliIconDark />,\r\n    dark: <GoerliIconLight />,\r\n    color: null,\r\n  },\r\n  1235: {\r\n    // Aura dev\r\n    light: <AuraIconLight />,\r\n    dark: <AuraIconDark />,\r\n    color: null,\r\n  },\r\n  1236: {\r\n    // Aura serenity\r\n    light: <AuraIconLight />,\r\n    dark: <AuraIconDark />,\r\n    color: null,\r\n  },\r\n  6321: {\r\n    // Aura euphoria\r\n    light: <AuraIconLight />,\r\n    dark: <AuraIconDark />,\r\n    color: null,\r\n  },\r\n  6322: {\r\n    // Aura main\r\n    light: <AuraIconLight />,\r\n    dark: <AuraIconDark />,\r\n    color: null,\r\n  },\r\n}\r\n\r\nexport default chainIcons\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 15 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M14.2031 12.2344L7.125 0L0 12.2344L7.125 16.5938L14.2031 12.2344ZM7.125 18L0 13.6406L7.125 24L14.25 13.6406L7.125 18Z\"\r\n      fill=\"#151718\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 15 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M14.2031 12.2344L7.125 0L0 12.2344L7.125 16.5938L14.2031 12.2344ZM7.125 18L0 13.6406L7.125 24L14.25 13.6406L7.125 18Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 22 20\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M22 10.4001V15.5719C21.9982 15.8944 21.9162 16.2109 21.7619 16.4905C21.6077 16.77 21.3865 17.003 21.12 17.1668L16.8231 19.7473C16.557 19.9127 16.253 20 15.9431 20C15.6333 20 15.3293 19.9127 15.0631 19.7473L10.7663 17.1668C10.4997 17.003 10.2786 16.77 10.1243 16.4905C9.97009 16.2109 9.88804 15.8944 9.88627 15.5719V14.1203L12.0863 12.7889V15.312L15.9362 17.6417L19.7863 15.312V10.6635L15.9362 8.33391L6.91627 13.7816C6.64765 13.9394 6.34454 14.0224 6.03624 14.0224C5.72794 14.0224 5.42487 13.9394 5.15625 13.7816L0.859362 11.1904C0.59697 11.0242 0.380036 10.7903 0.229515 10.5112C0.0789936 10.2322 -4.12339e-05 9.91743 1.61387e-08 9.59729V4.42551C0.00177377 4.10301 0.08382 3.78651 0.238054 3.50695C0.392329 3.2274 0.613512 2.99434 0.879987 2.83063L5.17688 0.250114C5.44356 0.0863567 5.74741 0 6.05687 0C6.36636 0 6.67021 0.0863567 6.93689 0.250114L11.2337 2.83063C11.5003 2.99434 11.7214 3.2274 11.8757 3.50695C12.03 3.78651 12.112 4.10301 12.1138 4.42551V5.87704L9.90001 7.19956V4.69075L6.05002 2.36113L2.19999 4.69075V9.33385L6.05002 11.6635L15.07 6.21574C15.3386 6.05794 15.6417 5.97505 15.95 5.97505C16.2583 5.97505 16.5614 6.05794 16.83 6.21574L21.1269 8.80701C21.3919 8.97149 21.6115 9.20464 21.7645 9.48376C21.9175 9.76294 21.9986 10.0786 22 10.4001Z\"\r\n      fill=\"#151718\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 22 20\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M22 10.4001V15.5719C21.9982 15.8944 21.9162 16.2109 21.7619 16.4905C21.6077 16.77 21.3865 17.003 21.12 17.1668L16.8231 19.7473C16.557 19.9127 16.253 20 15.9431 20C15.6333 20 15.3293 19.9127 15.0631 19.7473L10.7663 17.1668C10.4997 17.003 10.2786 16.77 10.1243 16.4905C9.97009 16.2109 9.88804 15.8944 9.88627 15.5719V14.1203L12.0863 12.7889V15.312L15.9362 17.6417L19.7863 15.312V10.6635L15.9362 8.33391L6.91627 13.7816C6.64765 13.9394 6.34454 14.0224 6.03624 14.0224C5.72794 14.0224 5.42487 13.9394 5.15625 13.7816L0.859362 11.1904C0.59697 11.0242 0.380036 10.7903 0.229515 10.5112C0.0789936 10.2322 -4.12339e-05 9.91743 1.61387e-08 9.59729V4.42551C0.00177377 4.10301 0.08382 3.78651 0.238054 3.50695C0.392329 3.2274 0.613512 2.99434 0.879987 2.83063L5.17688 0.250114C5.44356 0.0863567 5.74741 0 6.05687 0C6.36636 0 6.67021 0.0863567 6.93689 0.250114L11.2337 2.83063C11.5003 2.99434 11.7214 3.2274 11.8757 3.50695C12.03 3.78651 12.112 4.10301 12.1138 4.42551V5.87704L9.90001 7.19956V4.69075L6.05002 2.36113L2.19999 4.69075V9.33385L6.05002 11.6635L15.07 6.21574C15.3386 6.05794 15.6417 5.97505 15.95 5.97505C16.2583 5.97505 16.5614 6.05794 16.83 6.21574L21.1269 8.80701C21.3919 8.97149 21.6115 9.20464 21.7645 9.48376C21.9175 9.76294 21.9986 10.0786 22 10.4001Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_176_1602)\">\r\n      <rect\r\n        y=\"0.5\"\r\n        width=\"18\"\r\n        height=\"18\"\r\n        rx=\"9\"\r\n        fill=\"url(#paint0_linear_176_1602)\"\r\n      />\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenodd\"\r\n        d=\"M18 9.5C18 14.4706 13.9706 18.5 9 18.5C4.02944 18.5 0 14.4706 0 9.5C0 4.52944 4.02944 0.5 9 0.5C13.9706 0.5 18 4.52944 18 9.5ZM14.1492 9.97186L11.6029 11.4422V11.4425C11.4681 11.5201 11.3009 11.5201 11.166 11.4425L10.2084 10.8895V9.50626L11.3843 10.1854L13.1699 9.15458V7.09263L11.3843 6.06185L9.63104 7.07426L9.5987 7.09263V12.3473C9.5987 12.5027 9.51528 12.6479 9.38041 12.7258L6.83413 14.1957C6.69927 14.2732 6.53169 14.2732 6.3972 14.1957L3.85091 12.7254C3.71642 12.6475 3.63263 12.5023 3.63263 12.3469V9.40667C3.63263 9.25086 3.71605 9.10607 3.85091 9.02816L6.3972 7.55787C6.46298 7.51965 6.53868 7.49944 6.61548 7.49944C6.69228 7.49944 6.76798 7.51965 6.83413 7.55787L7.79363 8.11166V9.49486L6.61585 8.81502L4.83025 9.84581V11.9078L6.61585 12.9385L8.40144 11.9078V6.65313C8.40144 6.49768 8.48486 6.35253 8.61973 6.27462L11.166 4.80432C11.3009 4.72679 11.4681 4.72642 11.6029 4.80432L14.1492 6.27462C14.2837 6.35253 14.3675 6.49768 14.3675 6.65313V9.59335C14.3675 9.74916 14.2841 9.89395 14.1492 9.97186Z\"\r\n        fill=\"#F5F0FD\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <linearGradient\r\n        id=\"paint0_linear_176_1602\"\r\n        x1=\"1.52312\"\r\n        y1=\"15.6526\"\r\n        x2=\"18.2537\"\r\n        y2=\"4.84284\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n      >\r\n        <stop stopColor=\"#A726C1\" />\r\n        <stop offset=\"0.88\" stopColor=\"#803BDF\" />\r\n        <stop offset=\"1\" stopColor=\"#7B3FE4\" />\r\n      </linearGradient>\r\n      <clipPath id=\"clip0_176_1602\">\r\n        <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 60 60\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M0 27.4501H44.626V32.4964H0C0.00804265 35.3958 0.952733 38.4999 2.02134 41.1675C7.03141 53.6749 19.9286 61.178 33.2382 59.8482C47.871 58.3862 59.9284 45.3962 59.9996 30.6484C60.0167 27.0554 59.5248 23.4575 58.3133 20.0583C54.9025 10.4882 46.777 3.13389 36.8681 0.788703C22.7699 -2.54798 7.93539 4.97004 2.2476 18.2814C1.05458 21.0734 0.0254091 24.3866 0 27.4501Z\"\r\n      fill=\"#11181C\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 60 60\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M0 27.4501H44.626V32.4964H0C0.00804265 35.3958 0.952733 38.4999 2.02134 41.1675C7.03141 53.6749 19.9286 61.178 33.2382 59.8482C47.871 58.3862 59.9284 45.3962 59.9996 30.6484C60.0167 27.0554 59.5248 23.4575 58.3133 20.0583C54.9025 10.4882 46.777 3.13389 36.8681 0.788703C22.7699 -2.54798 7.93539 4.97004 2.2476 18.2814C1.05458 21.0734 0.0254091 24.3866 0 27.4501Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"#0054FF\" />\r\n    <path\r\n      d=\"M2 8.90501H12.4127V10.0825H2C2.00188 10.759 2.2223 11.4833 2.47165 12.1058C3.64066 15.0241 6.65001 16.7749 9.75558 16.4646C13.1699 16.1235 15.9833 13.0924 15.9999 9.6513C16.0039 8.81292 15.8891 7.97342 15.6064 7.18026C14.8106 4.94725 12.9146 3.23124 10.6025 2.68403C7.31297 1.90547 3.85159 3.65968 2.52444 6.76566C2.24607 7.41713 2.00593 8.1902 2 8.90501Z\"\r\n      fill=\"white\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_5303_21434)\">\r\n      <path\r\n        d=\"M13.2908 0C13.8114 1.36458 14.3038 2.72938 14.7976 4.09367C15.1797 5.14943 15.5627 6.20485 15.9467 7.25988C16.536 8.87877 17.1288 10.4963 17.7158 12.1161C18.2039 13.4629 18.6823 14.8134 19.1794 16.1568C19.2089 16.2363 19.3662 16.3115 19.4651 16.3129C20.299 16.3253 21.1331 16.32 22 16.32C22 17.0738 22 17.8091 21.9687 18.5722C16.1574 18.6 10.3774 18.6 4.5975 18.6001C4.49921 18.6001 4.39427 18.5795 4.30466 18.6081C4.22858 18.6324 4.17019 18.7139 4.08712 18.7795C4.10586 18.827 4.13519 18.8759 4.17798 18.9015C5.36482 19.6114 5.83208 20.8912 5.34665 22.2721C5.14472 22.8465 4.95113 23.424 4.75375 24C3.84682 24 2.93989 24 2.00528 24C2.11999 23.5687 2.25092 23.1331 2.40691 22.7069C2.88271 21.4071 3.36815 20.1109 3.85879 18.7892C3.2296 18.7892 2.62595 18.7892 2 18.7892C2 17.969 2 17.1658 2 16.3353C2.07129 16.3307 2.1555 16.3208 2.23973 16.3207C2.99703 16.3195 3.75438 16.3155 4.51161 16.3233C4.68961 16.3251 4.77431 16.2815 4.84292 16.0917C5.58325 14.043 6.33886 12 7.09006 9.95534C7.84132 7.91056 8.593 5.86595 9.34208 3.82035C9.40187 3.65708 9.44285 3.48671 9.5367 3.30434C9.72638 3.27269 9.8718 3.24395 10.0175 3.24226C10.5278 3.23634 11.0382 3.24343 11.5485 3.23663C11.6547 3.23521 11.8297 3.28469 11.7762 3.05724C11.5209 2.29102 11.2644 1.52527 11.0114 0.758296C10.9334 0.521996 10.8652 0.282368 10.7856 0.0221322C11.6067 1.78814e-09 12.4349 0 13.2908 0ZM11.9118 3.45758C11.8954 3.43397 11.879 3.41037 11.8626 3.38676C11.8368 3.44012 11.811 3.49347 11.7831 3.59733C11.7637 3.7222 11.7621 3.85332 11.7219 3.97085C11.5526 4.46623 11.3679 4.95617 11.1958 5.45062C10.4153 7.69333 9.63818 9.93723 8.85786 12.18C8.51697 13.1597 8.1692 14.137 7.8289 15.117C7.69219 15.5106 7.56716 15.9085 7.43368 16.314C10.4508 16.314 13.4322 16.314 16.4249 16.314C15.91 14.8313 15.4006 13.3566 14.8859 11.8838C14.0609 9.52309 13.2344 7.16285 12.4033 4.80434C12.2464 4.35921 12.0647 3.92312 11.9118 3.45758Z\"\r\n        fill=\"#11181C\"\r\n      />\r\n      <path\r\n        d=\"M18.8939 24C18.6421 23.4415 18.4353 22.8784 18.1974 22.3256C17.6908 21.1484 18.182 19.7982 19.4119 19.1846C19.5228 19.1293 19.6264 19.0625 19.7813 19.0002C19.8779 18.9997 19.9267 19.0002 19.9754 19.0007C20.1562 19.3887 20.3462 19.7736 20.516 20.1653C20.8843 21.0146 21.2533 21.8639 21.5998 22.7201C21.7692 23.1387 21.8888 23.5729 22 24C20.9543 24 19.9396 24 18.8939 24Z\"\r\n        fill=\"#11181C\"\r\n      />\r\n      <path\r\n        d=\"M20.1245 18.91C20.0755 19.0047 20.0316 19.0026 19.9656 18.9985C19.8349 18.9184 19.7262 18.7722 19.6175 18.7719C14.4209 18.7589 9.22428 18.7586 4 18.7391C4.03918 18.4926 4.09812 18.1607 4.1749 18.0619C4.26536 17.9454 4.37128 18.0291 4.47049 18.029C10.3046 18.0287 16.1386 18.0288 22 18.0287C21.9808 18.2729 21.9339 18.7306 21.888 18.729C21.3178 18.7087 20.7478 18.6195 20.1776 18.5629C20.1621 18.5614 20.1456 18.7261 20.1245 18.91Z\"\r\n        fill=\"#11181C\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_5303_21434\">\r\n        <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_5303_21433)\">\r\n      <path\r\n        d=\"M13.2908 0C13.8114 1.36458 14.3038 2.72938 14.7976 4.09367C15.1797 5.14943 15.5627 6.20485 15.9467 7.25988C16.536 8.87877 17.1288 10.4963 17.7158 12.1161C18.2039 13.4629 18.6823 14.8134 19.1794 16.1568C19.2089 16.2363 19.3662 16.3115 19.4651 16.3129C20.299 16.3253 21.1331 16.32 22 16.32C22 17.0738 22 17.8091 21.9687 18.5722C16.1574 18.6 10.3774 18.6 4.5975 18.6001C4.49921 18.6001 4.39427 18.5795 4.30466 18.6081C4.22858 18.6324 4.17019 18.7139 4.08712 18.7795C4.10586 18.827 4.13519 18.8759 4.17798 18.9015C5.36482 19.6114 5.83208 20.8912 5.34665 22.2721C5.14472 22.8465 4.95113 23.424 4.75375 24C3.84682 24 2.93989 24 2.00528 24C2.11999 23.5687 2.25092 23.1331 2.40691 22.7069C2.88271 21.4071 3.36815 20.1109 3.85879 18.7892C3.2296 18.7892 2.62595 18.7892 2 18.7892C2 17.969 2 17.1658 2 16.3353C2.07129 16.3307 2.1555 16.3208 2.23973 16.3207C2.99703 16.3195 3.75438 16.3155 4.51161 16.3233C4.68961 16.3251 4.77431 16.2815 4.84292 16.0917C5.58325 14.043 6.33886 12 7.09006 9.95534C7.84132 7.91056 8.593 5.86595 9.34208 3.82035C9.40187 3.65708 9.44285 3.48671 9.5367 3.30434C9.72638 3.27269 9.8718 3.24395 10.0175 3.24226C10.5278 3.23634 11.0382 3.24343 11.5485 3.23663C11.6547 3.23521 11.8297 3.28469 11.7762 3.05724C11.5209 2.29102 11.2644 1.52527 11.0114 0.758296C10.9334 0.521996 10.8652 0.282368 10.7856 0.0221322C11.6067 1.78814e-09 12.4349 0 13.2908 0ZM11.9118 3.45758C11.8954 3.43397 11.879 3.41037 11.8626 3.38676C11.8368 3.44012 11.811 3.49347 11.7831 3.59733C11.7637 3.7222 11.7621 3.85332 11.7219 3.97085C11.5526 4.46623 11.3679 4.95617 11.1958 5.45062C10.4153 7.69333 9.63818 9.93723 8.85786 12.18C8.51697 13.1597 8.1692 14.137 7.8289 15.117C7.69219 15.5106 7.56716 15.9085 7.43368 16.314C10.4508 16.314 13.4322 16.314 16.4249 16.314C15.91 14.8313 15.4006 13.3566 14.8859 11.8838C14.0609 9.52309 13.2344 7.16285 12.4033 4.80434C12.2464 4.35921 12.0647 3.92312 11.9118 3.45758Z\"\r\n        fill=\"#ECEDEE\"\r\n      />\r\n      <path\r\n        d=\"M18.8939 24C18.6421 23.4415 18.4353 22.8784 18.1974 22.3256C17.6908 21.1484 18.182 19.7982 19.4119 19.1846C19.5228 19.1293 19.6264 19.0625 19.7813 19.0002C19.8779 18.9997 19.9267 19.0002 19.9754 19.0007C20.1562 19.3887 20.3462 19.7736 20.516 20.1653C20.8843 21.0146 21.2533 21.8639 21.5998 22.7201C21.7692 23.1387 21.8888 23.5729 22 24C20.9543 24 19.9396 24 18.8939 24Z\"\r\n        fill=\"#ECEDEE\"\r\n      />\r\n      <path\r\n        d=\"M20.1245 18.91C20.0755 19.0047 20.0316 19.0026 19.9656 18.9985C19.8349 18.9184 19.7262 18.7722 19.6175 18.7719C14.4209 18.7589 9.22428 18.7586 4 18.7391C4.03918 18.4926 4.09812 18.1607 4.1749 18.0619C4.26536 17.9454 4.37128 18.0291 4.47049 18.029C10.3046 18.0287 16.1386 18.0288 22 18.0287C21.9808 18.2729 21.9339 18.7306 21.888 18.729C21.3178 18.7087 20.7478 18.6195 20.1776 18.5629C20.1621 18.5614 20.1456 18.7261 20.1245 18.91Z\"\r\n        fill=\"#ECEDEE\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_5303_21433\">\r\n        <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"black\" />\r\n    <path\r\n      d=\"M9.64539 4C9.90572 4.62543 10.1519 5.25097 10.3988 5.87627C10.5898 6.36015 10.7813 6.84389 10.9734 7.32744C11.268 8.06944 11.5644 8.81083 11.8579 9.55321C12.102 10.1705 12.3412 10.7895 12.5897 11.4052C12.6044 11.4416 12.6831 11.4761 12.7326 11.4768C13.1495 11.4824 13.5665 11.48 14 11.48C14 11.8255 14 12.1625 13.9843 12.5122C11.0787 12.525 8.18872 12.525 5.29875 12.525C5.2496 12.525 5.19714 12.5156 5.15233 12.5287C5.11429 12.5398 5.0851 12.5772 5.04356 12.6073C5.05293 12.6291 5.0676 12.6514 5.08899 12.6632C5.68241 12.9886 5.91604 13.5751 5.67332 14.2081C5.57236 14.4713 5.47556 14.736 5.37687 15C4.92341 15 4.46995 15 4.00264 15C4.06 14.8023 4.12546 14.6027 4.20346 14.4073C4.44135 13.8116 4.68408 13.2175 4.9294 12.6117C4.6148 12.6117 4.31298 12.6117 4 12.6117C4 12.2358 4 11.8676 4 11.487C4.03565 11.4849 4.07775 11.4804 4.11986 11.4803C4.49852 11.4798 4.87719 11.478 5.2558 11.4815C5.3448 11.4823 5.38715 11.4624 5.42146 11.3753C5.79162 10.4364 6.16943 9.49999 6.54503 8.56286C6.92066 7.62567 7.2965 6.68856 7.67104 5.75099C7.70093 5.67616 7.72142 5.59808 7.76835 5.51449C7.86319 5.49998 7.9359 5.48681 8.00876 5.48603C8.2639 5.48332 8.51912 5.48657 8.77425 5.48345C8.82735 5.48281 8.91485 5.50549 8.88808 5.40124C8.76047 5.05005 8.63218 4.69908 8.50568 4.34755C8.4667 4.23925 8.43262 4.12942 8.39279 4.01014C8.80337 4 9.21746 4 9.64539 4ZM8.95591 5.58472C8.94771 5.5739 8.9395 5.56308 8.93129 5.55226C8.9184 5.57672 8.90552 5.60117 8.89153 5.64878C8.88185 5.70601 8.88104 5.7661 8.86095 5.81997C8.77629 6.04702 8.68394 6.27158 8.5979 6.4982C8.20767 7.52611 7.81909 8.55456 7.42893 9.5825C7.25849 10.0315 7.0846 10.4795 6.91445 10.9286C6.8461 11.109 6.78358 11.2914 6.71684 11.4773C8.22539 11.4773 9.7161 11.4773 11.2124 11.4773C10.955 10.7977 10.7003 10.1218 10.443 9.44675C10.0304 8.36475 9.61722 7.28297 9.20164 6.20199C9.1232 5.99797 9.03234 5.7981 8.95591 5.58472Z\"\r\n      fill=\"#7AA72B\"\r\n    />\r\n    <path\r\n      d=\"M12.447 15C12.321 14.744 12.2176 14.4859 12.0987 14.2325C11.8454 13.693 12.091 13.0742 12.7059 12.7929C12.7614 12.7676 12.8132 12.737 12.8907 12.7084C12.939 12.7082 12.9633 12.7084 12.9877 12.7086C13.0781 12.8865 13.1731 13.0629 13.258 13.2424C13.4422 13.6317 13.6267 14.0209 13.7999 14.4134C13.8846 14.6052 13.9444 14.8042 14 15C13.4772 15 12.9698 15 12.447 15Z\"\r\n      fill=\"#7AA72B\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 20 22\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M10.0575 14.0509L12.9541 18.5973L15.6301 17.0465L11.8257 11.0502L10.0575 14.0509Z\"\r\n      fill=\"#151718\"\r\n    />\r\n    <path\r\n      d=\"M18.0669 15.222L18.0649 13.9795L13.908 7.50496L12.3658 10.1219L16.3787 16.6119L17.8296 15.7711C17.972 15.6555 18.0581 15.4859 18.0671 15.3029L18.0669 15.222Z\"\r\n      fill=\"#151718\"\r\n    />\r\n    <path\r\n      d=\"M0.647525 16.3939L2.69645 17.5746L9.51483 6.63984L8.35764 6.6093C7.37166 6.59537 6.30954 6.8517 5.82206 7.64745L1.95014 13.6488L0.647525 15.6502V16.3939Z\"\r\n      fill=\"#151718\"\r\n    />\r\n    <path\r\n      d=\"M13.4501 6.63953L10.4002 6.6506L3.50016 18.037L5.91195 19.4256L6.56782 18.3133L13.4501 6.63953Z\"\r\n      fill=\"#151718\"\r\n    />\r\n    <path\r\n      d=\"M19.3521 6.62416C19.3266 5.98633 18.9812 5.40244 18.4403 5.0625L10.8582 0.702226C10.3231 0.432793 9.65466 0.432447 9.1186 0.702053C9.05523 0.734018 1.74522 4.97352 1.74522 4.97352C1.64405 5.02206 1.54659 5.07984 1.45494 5.14546C0.972043 5.49154 0.677696 6.02937 0.647461 6.62022L0.647525 15.6502L1.95014 13.6488L1.9387 6.68126C1.94021 6.65578 1.94341 6.63069 1.94795 6.60595C1.97741 6.44202 2.06893 6.29577 2.20674 6.19694C2.24113 6.17232 9.67602 1.86871 9.69964 1.85691C9.87439 1.76914 10.0965 1.7681 10.2715 1.85418L17.7555 6.159C17.9325 6.27177 18.0435 6.46295 18.0533 6.67196V15.3031C18.0443 15.4861 17.972 15.6555 17.8296 15.7711L16.3787 16.6119L15.6301 17.0465L12.9541 18.5973L10.2405 20.1693C10.0943 20.2221 9.92344 20.2191 9.77849 20.1602L6.56782 18.3133L5.91195 19.4256L8.79726 21.0872C8.89268 21.1415 8.97768 21.1896 9.04745 21.2287C9.15546 21.2893 9.22907 21.3298 9.25507 21.3424C9.46014 21.442 9.75522 21.5 10.0211 21.5C10.2649 21.5 10.5026 21.4552 10.7275 21.3671L18.6096 16.8024C19.062 16.4519 19.3281 15.9233 19.3521 15.3506V6.62416Z\"\r\n      fill=\"#151718\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 20 22\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M10.0575 14.0509L12.9541 18.5973L15.6301 17.0465L11.8257 11.0502L10.0575 14.0509Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n    <path\r\n      d=\"M18.0669 15.222L18.0649 13.9795L13.908 7.50496L12.3658 10.1219L16.3787 16.6119L17.8296 15.7711C17.972 15.6555 18.0581 15.4859 18.0671 15.3029L18.0669 15.222Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n    <path\r\n      d=\"M0.647525 16.3939L2.69645 17.5746L9.51483 6.63984L8.35764 6.6093C7.37166 6.59537 6.30954 6.8517 5.82206 7.64745L1.95014 13.6488L0.647525 15.6502V16.3939Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n    <path\r\n      d=\"M13.4501 6.63953L10.4002 6.6506L3.50016 18.037L5.91195 19.4256L6.56782 18.3133L13.4501 6.63953Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n    <path\r\n      d=\"M19.3521 6.62416C19.3266 5.98633 18.9812 5.40244 18.4403 5.0625L10.8582 0.702226C10.3231 0.432793 9.65466 0.432447 9.1186 0.702053C9.05523 0.734018 1.74522 4.97352 1.74522 4.97352C1.64405 5.02206 1.54659 5.07984 1.45494 5.14546C0.972043 5.49154 0.677696 6.02937 0.647461 6.62022L0.647525 15.6502L1.95014 13.6488L1.9387 6.68126C1.94021 6.65578 1.94341 6.63069 1.94795 6.60595C1.97741 6.44202 2.06893 6.29577 2.20674 6.19694C2.24113 6.17232 9.67602 1.86871 9.69964 1.85691C9.87439 1.76914 10.0965 1.7681 10.2715 1.85418L17.7555 6.159C17.9325 6.27177 18.0435 6.46295 18.0533 6.67196V15.3031C18.0443 15.4861 17.972 15.6555 17.8296 15.7711L16.3787 16.6119L15.6301 17.0465L12.9541 18.5973L10.2405 20.1693C10.0943 20.2221 9.92344 20.2191 9.77849 20.1602L6.56782 18.3133L5.91195 19.4256L8.79726 21.0872C8.89268 21.1415 8.97768 21.1896 9.04745 21.2287C9.15546 21.2893 9.22907 21.3298 9.25507 21.3424C9.46014 21.442 9.75522 21.5 10.0211 21.5C10.2649 21.5 10.5026 21.4552 10.7275 21.3671L18.6096 16.8024C19.062 16.4519 19.3281 15.9233 19.3521 15.3506V6.62416Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 18\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <rect width=\"18\" height=\"18\" rx=\"9\" fill=\"#2D374B\" />\r\n    <path\r\n      d=\"M10.4888 8.46701L11.4251 6.87843L13.9485 10.8089L13.9497 11.5631L13.9415 6.37266C13.9355 6.24578 13.8682 6.12971 13.7607 6.06127L9.21745 3.44794C9.11118 3.39572 8.9764 3.39627 8.87033 3.44956C8.85601 3.45676 8.84252 3.46456 8.82966 3.47306L8.81383 3.48303L4.40391 6.03856L4.38677 6.04631C4.36478 6.05644 4.34254 6.0693 4.32166 6.08425C4.23806 6.14423 4.18252 6.23289 4.16455 6.33235C4.16186 6.34742 4.15989 6.36277 4.15894 6.37824L4.16586 10.608L6.51637 6.96479C6.8123 6.4817 7.45709 6.3261 8.05562 6.33456L8.75813 6.35312L4.61897 12.9912L5.10689 13.2721L9.29566 6.35984L11.1471 6.35312L6.96912 13.4398L8.71018 14.4412L8.9182 14.5608C9.00619 14.5966 9.10992 14.5984 9.19866 14.5664L13.8057 11.8965L12.9249 12.4069L10.4888 8.46701ZM10.846 13.6117L9.08753 10.8517L10.161 9.03018L12.4704 12.6703L10.846 13.6117Z\"\r\n      fill=\"#2D374B\"\r\n    />\r\n    <path\r\n      d=\"M9.08752 10.8517L10.846 13.6116L12.4705 12.6702L10.161 9.03015L9.08752 10.8517Z\"\r\n      fill=\"#28A0F0\"\r\n    />\r\n    <path\r\n      d=\"M13.9497 11.5631L13.9485 10.8089L11.425 6.87842L10.4888 8.467L12.9249 12.4069L13.8057 11.8965C13.8921 11.8264 13.9443 11.7234 13.9498 11.6122L13.9497 11.5631Z\"\r\n      fill=\"#28A0F0\"\r\n    />\r\n    <path\r\n      d=\"M3.37504 12.2744L4.61888 12.9911L8.75804 6.35311L8.05554 6.33455C7.457 6.32609 6.81225 6.48169 6.51629 6.96478L4.16577 10.608L3.375 11.823V12.2744H3.37504Z\"\r\n      fill=\"white\"\r\n    />\r\n    <path\r\n      d=\"M11.1471 6.35309L9.29571 6.35981L5.10693 13.2721L6.57102 14.1151L6.96917 13.4398L11.1471 6.35309Z\"\r\n      fill=\"white\"\r\n    />\r\n    <path\r\n      d=\"M14.7298 6.34358C14.7144 5.95639 14.5047 5.60191 14.1763 5.39555L9.57358 2.74864C9.24873 2.58505 8.8429 2.58485 8.51754 2.74852C8.47909 2.7679 4.04143 5.34159 4.04143 5.34159C3.98003 5.37102 3.92088 5.40611 3.86522 5.44591C3.57206 5.65603 3.39336 5.9825 3.375 6.34121V11.823L4.16577 10.608L4.15885 6.37828C4.1598 6.36281 4.16174 6.34762 4.16447 6.33258C4.18231 6.23304 4.23789 6.14427 4.32157 6.08429C4.34246 6.06934 8.85588 3.4568 8.87024 3.4496C8.97635 3.39631 9.11114 3.39576 9.21736 3.44798L13.7606 6.06131C13.8681 6.12975 13.9354 6.24582 13.9414 6.3727V11.6123C13.9359 11.7234 13.892 11.8264 13.8056 11.8965L12.9248 12.4069L12.4703 12.6703L10.8459 13.6117L9.19853 14.5664C9.10979 14.5985 9.00606 14.5967 8.91807 14.5609L6.969 13.4398L6.57084 14.1151L8.32242 15.1236C8.38034 15.1565 8.43197 15.1857 8.4743 15.2095C8.5399 15.2463 8.58456 15.2709 8.60035 15.2785C8.72485 15.3389 8.90395 15.3741 9.06536 15.3741C9.21337 15.3741 9.35765 15.347 9.49422 15.2935L14.2791 12.5224C14.5537 12.3097 14.7153 11.9888 14.7298 11.6411V6.34358Z\"\r\n      fill=\"#96BEDC\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    version=\"1.1\"\r\n    id=\"Layer_1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    x=\"0px\"\r\n    y=\"0px\"\r\n    viewBox=\"0 0 2000 1359.88\"\r\n  >\r\n    <path\r\n      fill=\"#000000\"\r\n      d=\"M693.83,0H510.66c-12.65,0-23.94,7.91-28.28,19.79L0.92,1339.67c-3.58,9.82,3.69,20.21,14.14,20.21h183.17\r\n\tc12.65,0,23.94-7.91,28.28-19.78L707.97,20.21C711.55,10.39,704.28,0,693.83,0z M916.62,553.04c-4.81-13.19-23.46-13.19-28.28,0\r\n\tL793.38,813.4c-2.43,6.66-2.43,13.97,0,20.63l184.6,506.06c4.33,11.88,15.63,19.78,28.28,19.78h183.17\r\n\tc10.45,0,17.72-10.39,14.14-20.21L916.62,553.04z M1383.57,807.88c4.81,13.19,23.46,13.19,28.27,0l287.32-787.67\r\n\tc3.58-9.82-3.69-20.21-14.14-20.21h-183.17c-12.65,0-23.94,7.9-28.28,19.79L1288.6,526.88c-2.43,6.66-2.43,13.96,0,20.62\r\n\tL1383.57,807.88z M1022.41,19.65C1018.12,7.85,1006.9,0,994.35,0H810.56c-12.64,0-23.93,7.9-28.27,19.78L300.84,1339.67\r\n\tc-3.58,9.82,3.69,20.21,14.14,20.21h183.18c12.65,0,23.94-7.9,28.28-19.78L895.06,329.52c2.42-6.63,11.79-6.63,14.2,0\r\n\tl368.63,1010.58c4.33,11.88,15.63,19.78,28.28,19.78h183.18c10.45,0,17.72-10.39,14.14-20.2L1022.41,19.65z M1984.94,0h-183.19\r\n\tc-12.64,0-23.94,7.9-28.27,19.78l-334.93,918.2c-2.43,6.66-2.43,13.96,0,20.62l94.98,260.38c4.81,13.19,23.46,13.19,28.27,0\r\n\tl331.55-908.93L1999.08,20.2C2002.66,10.39,1995.39,0,1984.94,0z\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    version=\"1.1\"\r\n    id=\"Layer_1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    x=\"0px\"\r\n    y=\"0px\"\r\n    viewBox=\"0 0 2000 1359.88\"\r\n  >\r\n    <path\r\n      fill=\"#ffffff\"\r\n      d=\"M693.83,0H510.66c-12.65,0-23.94,7.91-28.28,19.79L0.92,1339.67c-3.58,9.82,3.69,20.21,14.14,20.21h183.17\r\n\tc12.65,0,23.94-7.91,28.28-19.78L707.97,20.21C711.55,10.39,704.28,0,693.83,0z M916.62,553.04c-4.81-13.19-23.46-13.19-28.28,0\r\n\tL793.38,813.4c-2.43,6.66-2.43,13.97,0,20.63l184.6,506.06c4.33,11.88,15.63,19.78,28.28,19.78h183.17\r\n\tc10.45,0,17.72-10.39,14.14-20.21L916.62,553.04z M1383.57,807.88c4.81,13.19,23.46,13.19,28.27,0l287.32-787.67\r\n\tc3.58-9.82-3.69-20.21-14.14-20.21h-183.17c-12.65,0-23.94,7.9-28.28,19.79L1288.6,526.88c-2.43,6.66-2.43,13.96,0,20.62\r\n\tL1383.57,807.88z M1022.41,19.65C1018.12,7.85,1006.9,0,994.35,0H810.56c-12.64,0-23.93,7.9-28.27,19.78L300.84,1339.67\r\n\tc-3.58,9.82,3.69,20.21,14.14,20.21h183.18c12.65,0,23.94-7.9,28.28-19.78L895.06,329.52c2.42-6.63,11.79-6.63,14.2,0\r\n\tl368.63,1010.58c4.33,11.88,15.63,19.78,28.28,19.78h183.18c10.45,0,17.72-10.39,14.14-20.2L1022.41,19.65z M1984.94,0h-183.19\r\n\tc-12.64,0-23.94,7.9-28.27,19.78l-334.93,918.2c-2.43,6.66-2.43,13.96,0,20.62l94.98,260.38c4.81,13.19,23.46,13.19,28.27,0\r\n\tl331.55-908.93L1999.08,20.2C2002.66,10.39,1995.39,0,1984.94,0z\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"black\" />\r\n    <path\r\n      d=\"M7.1907 5.65076H6.10825C6.03349 5.65076 5.96677 5.6975 5.94112 5.76771L3.09591 13.5676C3.07476 13.6256 3.11772 13.687 3.17947 13.687H4.26193C4.33668 13.687 4.4034 13.6403 4.42905 13.5701L7.27426 5.77019C7.29541 5.71216 7.25245 5.65076 7.1907 5.65076ZM8.50728 8.91897C8.47886 8.84103 8.36865 8.84103 8.34016 8.91897L7.77899 10.4576C7.76463 10.4969 7.76463 10.5401 7.77899 10.5795L8.86989 13.5701C8.89548 13.6403 8.96226 13.687 9.03702 13.687H10.1195C10.1812 13.687 10.2242 13.6256 10.203 13.5675L8.50728 8.91897ZM11.2667 10.425C11.2952 10.5029 11.4054 10.5029 11.4338 10.425L13.1317 5.77019C13.1529 5.71216 13.1099 5.65076 13.0482 5.65076H11.9657C11.891 5.65076 11.8243 5.69744 11.7986 5.76771L10.7055 8.76438C10.6912 8.80374 10.6912 8.84688 10.7055 8.88623L11.2667 10.425ZM9.13245 5.76688C9.1071 5.69715 9.0408 5.65076 8.96663 5.65076H7.88052C7.80582 5.65076 7.7391 5.69744 7.71345 5.76765L4.8683 13.5676C4.84715 13.6256 4.89011 13.687 4.95187 13.687H6.03438C6.10913 13.687 6.17585 13.6403 6.2015 13.5701L8.37987 7.59807C8.39418 7.55889 8.44955 7.55889 8.46379 7.59807L10.6422 13.5701C10.6678 13.6403 10.7346 13.687 10.8093 13.687H11.8919C11.9536 13.687 11.9966 13.6256 11.9754 13.5677L9.13245 5.76688ZM14.8206 5.65076H13.738C13.6633 5.65076 13.5965 5.69744 13.5709 5.76765L11.5917 11.1938C11.5773 11.2332 11.5773 11.2763 11.5917 11.3156L12.1529 12.8544C12.1814 12.9323 12.2916 12.9323 12.32 12.8544L14.2793 7.48301L14.9041 5.77013C14.9253 5.71216 14.8823 5.65076 14.8206 5.65076Z\"\r\n      fill=\"#FF7B00\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_5155_86557)\">\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenodd\"\r\n        d=\"M23.9921 12C23.9921 18.6187 18.6231 23.9841 12.0001 23.9841C5.37706 23.9841 0.00805664 18.6187 0.00805664 12C0.00805664 5.38143 5.37706 0.0159912 12.0001 0.0159912C18.6231 0.0159912 23.9921 5.38143 23.9921 12ZM8.60188 16.7691H6.27456C5.78553 16.7691 5.54396 16.7691 5.39667 16.6749C5.23758 16.5718 5.14037 16.4011 5.12858 16.2126C5.11974 16.039 5.24054 15.827 5.4821 15.403L11.2285 5.28091C11.473 4.85108 11.5968 4.63617 11.7529 4.55668C11.9208 4.47131 12.1212 4.47131 12.2891 4.55668C12.4452 4.63617 12.569 4.85108 12.8135 5.28091L13.9948 7.34172L14.0008 7.35224C14.2649 7.81336 14.3988 8.0472 14.4573 8.29262C14.5221 8.56053 14.5221 8.84316 14.4573 9.11107C14.3984 9.35836 14.2658 9.59389 13.9977 10.062L10.9793 15.3942L10.9715 15.4079C10.7056 15.8728 10.5709 16.1084 10.3842 16.2862C10.1809 16.4806 9.93641 16.6218 9.66832 16.7014C9.4238 16.7691 9.14984 16.7691 8.60188 16.7691ZM14.4791 16.7691H17.8139C18.3059 16.7691 18.5534 16.7691 18.7008 16.6721C18.8598 16.569 18.9599 16.3952 18.9689 16.2069C18.9773 16.0389 18.8592 15.8351 18.6276 15.4358C18.6196 15.4222 18.6117 15.4084 18.6035 15.3943L16.9331 12.5386L16.9141 12.5064C16.6794 12.1098 16.5609 11.9095 16.4087 11.832C16.2409 11.7466 16.0433 11.7466 15.8755 11.832C15.7223 11.9115 15.5986 12.1205 15.3541 12.5415L13.6896 15.3972L13.6839 15.4071C13.4402 15.8274 13.3185 16.0374 13.3272 16.2098C13.339 16.3982 13.4362 16.5718 13.5953 16.6749C13.7397 16.7691 13.9871 16.7691 14.4791 16.7691Z\"\r\n        fill=\"#11181C\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_5155_86557\">\r\n        <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_5155_86555)\">\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenodd\"\r\n        d=\"M23.9921 12C23.9921 18.6187 18.6231 23.9841 12.0001 23.9841C5.37706 23.9841 0.00805664 18.6187 0.00805664 12C0.00805664 5.38143 5.37706 0.0159912 12.0001 0.0159912C18.6231 0.0159912 23.9921 5.38143 23.9921 12ZM8.60188 16.7691H6.27456C5.78553 16.7691 5.54396 16.7691 5.39667 16.6749C5.23758 16.5718 5.14037 16.4011 5.12858 16.2126C5.11974 16.039 5.24054 15.827 5.4821 15.403L11.2285 5.28091C11.473 4.85108 11.5968 4.63617 11.7529 4.55668C11.9208 4.47131 12.1212 4.47131 12.2891 4.55668C12.4452 4.63617 12.569 4.85108 12.8135 5.28091L13.9948 7.34172L14.0008 7.35224C14.2649 7.81336 14.3988 8.0472 14.4573 8.29262C14.5221 8.56053 14.5221 8.84316 14.4573 9.11107C14.3984 9.35836 14.2658 9.59389 13.9977 10.062L10.9793 15.3942L10.9715 15.4079C10.7056 15.8728 10.5709 16.1084 10.3842 16.2862C10.1809 16.4806 9.93641 16.6218 9.66832 16.7014C9.4238 16.7691 9.14984 16.7691 8.60188 16.7691ZM14.4791 16.7691H17.8139C18.3059 16.7691 18.5534 16.7691 18.7008 16.6721C18.8598 16.569 18.9599 16.3952 18.9689 16.2069C18.9773 16.0389 18.8592 15.8351 18.6276 15.4358C18.6196 15.4222 18.6117 15.4084 18.6035 15.3943L16.9331 12.5386L16.9141 12.5064C16.6794 12.1098 16.5609 11.9095 16.4087 11.832C16.2409 11.7466 16.0433 11.7466 15.8755 11.832C15.7223 11.9115 15.5986 12.1205 15.3541 12.5415L13.6896 15.3972L13.6839 15.4071C13.4402 15.8274 13.3185 16.0374 13.3272 16.2098C13.339 16.3982 13.4362 16.5718 13.5953 16.6749C13.7397 16.7691 13.9871 16.7691 14.4791 16.7691Z\"\r\n        fill=\"#ECEDEE\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_5155_86555\">\r\n        <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_174_1568)\">\r\n      <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"white\" />\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenodd\"\r\n        d=\"M17.994 9.5C17.994 14.464 13.9673 18.488 8.99999 18.488C4.03274 18.488 0.00598145 14.464 0.00598145 9.5C0.00598145 4.53604 4.03274 0.511963 8.99999 0.511963C13.9673 0.511963 17.994 4.53604 17.994 9.5ZM6.45135 13.0768H4.70586C4.33908 13.0768 4.15791 13.0768 4.04744 13.0062C3.92813 12.9289 3.85521 12.8008 3.84638 12.6594C3.83974 12.5292 3.93034 12.3702 4.11151 12.0522L8.42133 4.46065C8.60472 4.13828 8.69751 3.97709 8.81462 3.91748C8.94056 3.85345 9.09081 3.85345 9.21675 3.91748C9.33385 3.97709 9.42665 4.13828 9.61003 4.46065L10.496 6.00626L10.5006 6.01415C10.6986 6.35999 10.7991 6.53537 10.8429 6.71944C10.8915 6.92037 10.8915 7.13234 10.8429 7.33327C10.7987 7.51874 10.6993 7.69539 10.4982 8.04646L8.2344 12.0456L8.22854 12.0559C8.02917 12.4046 7.92813 12.5813 7.78809 12.7146C7.63563 12.8604 7.45224 12.9663 7.25118 13.026C7.06779 13.0768 6.86232 13.0768 6.45135 13.0768ZM10.8593 13.0768H13.3604C13.7293 13.0768 13.915 13.0768 14.0255 13.004C14.1448 12.9267 14.2199 12.7964 14.2266 12.6551C14.2329 12.5291 14.1443 12.3763 13.9707 12.0768C13.9647 12.0666 13.9587 12.0562 13.9526 12.0457L12.6998 9.90392L12.6855 9.8798C12.5095 9.5823 12.4206 9.43206 12.3065 9.37399C12.1806 9.30995 12.0324 9.30995 11.9066 9.37399C11.7917 9.43361 11.6989 9.59038 11.5155 9.90612L10.2671 12.0479L10.2629 12.0553C10.0801 12.3705 9.98878 12.528 9.99537 12.6573C10.0042 12.7986 10.0771 12.9289 10.1964 13.0062C10.3047 13.0768 10.4903 13.0768 10.8593 13.0768Z\"\r\n        fill=\"#E84142\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_174_1568\">\r\n        <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 60 60\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M13.9993 9.2496L30.0001 0L46.0009 9.2496L40.0009 12.4992L30.0001 6.7488L19.7497 12.4992L13.9993 9.2496ZM45.7489 20.7504L39.9985 17.5008L30.0001 23.2512L19.7497 17.5008L13.9993 20.7504V27.5016L24.0001 33.252V45.0024L29.7505 48.5016L35.5009 45.0024V33.5016L45.5017 27.7512V20.7504H45.7489ZM45.7489 39.2496V32.5008L40.0009 36V42.4992L45.7489 39.2496ZM49.9993 41.5008L39.9985 47.2512V54L55.9993 44.7504V26.2512L49.9993 30V41.5008ZM44.2513 15L50.0017 18.4992V25.2504L55.7521 21.7512V15L50.0017 11.5008L44.2513 15ZM24.0001 49.7496V56.4984L29.7505 59.9976L35.5009 56.4984V49.7496L29.7505 53.2488L24.0001 49.7496ZM13.9993 39.2496L19.7497 42.4992V35.7504L13.9993 32.2512V39.2496ZM24.0001 15L29.7505 18.4992L35.7505 15L30.0001 11.5008L24.0001 15ZM9.74894 18.4992L15.7489 15L9.74894 11.5008L4.00093 15V21.7488L9.75133 25.248V18.4992H9.74894ZM9.74894 30L3.99854 26.5008V45L19.9993 54.2496V47.5008L9.99854 41.7504V30H9.74894Z\"\r\n      fill=\"#11181C\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 60 60\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M13.9993 9.2496L30.0001 0L46.0009 9.2496L40.0009 12.4992L30.0001 6.7488L19.7497 12.4992L13.9993 9.2496ZM45.7489 20.7504L39.9985 17.5008L30.0001 23.2512L19.7497 17.5008L13.9993 20.7504V27.5016L24.0001 33.252V45.0024L29.7505 48.5016L35.5009 45.0024V33.5016L45.5017 27.7512V20.7504H45.7489ZM45.7489 39.2496V32.5008L40.0009 36V42.4992L45.7489 39.2496ZM49.9993 41.5008L39.9985 47.2512V54L55.9993 44.7504V26.2512L49.9993 30V41.5008ZM44.2513 15L50.0017 18.4992V25.2504L55.7521 21.7512V15L50.0017 11.5008L44.2513 15ZM24.0001 49.7496V56.4984L29.7505 59.9976L35.5009 56.4984V49.7496L29.7505 53.2488L24.0001 49.7496ZM13.9993 39.2496L19.7497 42.4992V35.7504L13.9993 32.2512V39.2496ZM24.0001 15L29.7505 18.4992L35.7505 15L30.0001 11.5008L24.0001 15ZM9.74894 18.4992L15.7489 15L9.74894 11.5008L4.00093 15V21.7488L9.75133 25.248V18.4992H9.74894ZM9.74894 30L3.99854 26.5008V45L19.9993 54.2496V47.5008L9.99854 41.7504V30H9.74894Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"#FAB600\" />\r\n    <path\r\n      d=\"M5.53317 5.00408L9.00001 3L12.4669 5.00408L11.1669 5.70816L9.00001 4.46224L6.77909 5.70816L5.53317 5.00408ZM12.4123 7.49592L11.1663 6.79184L9.00001 8.03776L6.77909 6.79184L5.53317 7.49592V8.95868L7.70001 10.2046V12.7505L8.94593 13.5087L10.1919 12.7505V10.2587L12.3587 9.01276V7.49592H12.4123ZM12.4123 11.5041V10.0418L11.1669 10.8V12.2082L12.4123 11.5041ZM13.3332 11.9918L11.1663 13.2378V14.7L14.6332 12.6959V8.68776L13.3332 9.5V11.9918ZM12.0878 6.25L13.3337 7.00816V8.47092L14.5796 7.71276V6.25L13.3337 5.49184L12.0878 6.25ZM7.70001 13.7791V15.2413L8.94593 15.9995L10.1919 15.2413V13.7791L8.94593 14.5372L7.70001 13.7791ZM5.53317 11.5041L6.77909 12.2082V10.7459L5.53317 9.98776V11.5041ZM7.70001 6.25L8.94593 7.00816L10.2459 6.25L9.00001 5.49184L7.70001 6.25ZM4.61225 7.00816L5.91225 6.25L4.61225 5.49184L3.36685 6.25V7.71224L4.61277 8.4704V7.00816H4.61225ZM4.61225 9.5L3.36633 8.74184V12.75L6.83317 14.7541V13.2918L4.66633 12.0459V9.5H4.61225Z\"\r\n      fill=\"white\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 15 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      fillRule=\"evenodd\"\r\n      clipRule=\"evenodd\"\r\n      d=\"M14.7031 12.2344L7.625 0L0.5 12.2344L7.625 16.5938L14.7031 12.2344ZM7.62241 14.8337L12.674 11.7224L7.62072 2.98796L2.53487 11.7209L7.62241 14.8337ZM14.75 13.6406L7.625 18L0.5 13.6406L7.625 24L14.75 13.6406ZM9.51852 18.6L7.625 19.7585L5.73148 18.6L7.625 21.353L9.51852 18.6Z\"\r\n      fill=\"#151718\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 15 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      fillRule=\"evenodd\"\r\n      clipRule=\"evenodd\"\r\n      d=\"M14.7031 12.2344L7.625 0L0.5 12.2344L7.625 16.5938L14.7031 12.2344ZM7.62241 14.8337L12.674 11.7224L7.62072 2.98796L2.53487 11.7209L7.62241 14.8337ZM14.75 13.6406L7.625 18L0.5 13.6406L7.625 24L14.75 13.6406ZM9.51852 18.6L7.625 19.7585L5.73148 18.6L7.625 21.353L9.51852 18.6Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M15.9375 24C11.9386 24 7.96601 24 4 24C1.79086 24 4.05403e-07 22.2091 3.49982e-07 20C2.16183e-07 14.6667 1.72474e-07 9.33333 8.03423e-08 4C4.21801e-08 1.79086 1.79086 1.09105e-06 4 9.78196e-07C9.33333 7.05733e-07 14.6667 5.93166e-07 20 2.79037e-07C22.2091 1.48921e-07 24 1.79086 24 4C24 9.33333 24 14.6667 24 20C24 22.2091 22.2091 24 20 24C18.6537 24 17.3015 24 15.9375 24ZM7.7979 11.9531C7.7979 9.97493 7.7979 7.99672 7.7979 6.01462C6.82839 6.01462 5.90347 6.01462 4.98743 6.01462C4.98743 10.3794 4.98743 14.7129 4.98743 19.0504C9.12763 19.0504 13.2415 19.0504 17.3637 19.0504C17.3637 18.2008 17.3637 17.3814 17.3637 16.5231C14.1715 16.5231 11.0081 16.5231 7.7979 16.5231C7.7979 15.0052 7.7979 13.5261 7.7979 11.9531ZM15.3044 4.48025C15.2591 4.54372 15.2121 4.60604 15.1688 4.67081C14.3322 5.92139 14.7297 7.55141 16.0518 8.29315C17.2939 8.98993 18.9121 8.44879 19.5301 7.13006C20.0459 6.02927 19.6905 4.71735 18.6873 4.01936C17.6165 3.27428 16.329 3.43311 15.3044 4.48025Z\"\r\n      fill=\"#11181C\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M15.9375 24C11.9386 24 7.96601 24 4 24C1.79086 24 4.05403e-07 22.2091 3.49982e-07 20C2.16183e-07 14.6667 1.72474e-07 9.33333 8.03423e-08 4C4.21801e-08 1.79086 1.79086 1.09105e-06 4 9.78196e-07C9.33333 7.05733e-07 14.6667 5.93166e-07 20 2.79037e-07C22.2091 1.48921e-07 24 1.79086 24 4C24 9.33333 24 14.6667 24 20C24 22.2091 22.2091 24 20 24C18.6537 24 17.3015 24 15.9375 24ZM7.7979 11.9531C7.7979 9.97493 7.7979 7.99672 7.7979 6.01462C6.82839 6.01462 5.90347 6.01462 4.98743 6.01462C4.98743 10.3794 4.98743 14.7129 4.98743 19.0504C9.12763 19.0504 13.2415 19.0504 17.3637 19.0504C17.3637 18.2008 17.3637 17.3814 17.3637 16.5231C14.1715 16.5231 11.0081 16.5231 7.7979 16.5231C7.7979 15.0052 7.7979 13.5261 7.7979 11.9531ZM15.3044 4.48025C15.2591 4.54372 15.2121 4.60604 15.1688 4.67081C14.3322 5.92139 14.7297 7.55141 16.0518 8.29315C17.2939 8.98993 18.9121 8.44879 19.5301 7.13006C20.0459 6.02927 19.6905 4.71735 18.6873 4.01936C17.6165 3.27428 16.329 3.43311 15.3044 4.48025Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"black\" />\r\n    <path\r\n      d=\"M6.1986 9.50002C6.1986 10.4538 6.1986 11.3783 6.1986 12.327C8.33871 12.327 10.4477 12.327 12.5758 12.327C12.5758 12.8634 12.5758 13.3755 12.5758 13.9065C9.82769 13.9065 7.08508 13.9065 4.32495 13.9065C4.32495 11.1956 4.32495 8.48714 4.32495 5.75916C4.93564 5.75916 5.55226 5.75916 6.1986 5.75916C6.1986 6.99797 6.1986 8.23435 6.1986 9.50002Z\"\r\n      fill=\"#FBFBFB\"\r\n    />\r\n    <path\r\n      d=\"M11.2182 4.78476C11.8861 4.14568 12.7444 4.04641 13.4583 4.51208C14.127 4.94833 14.364 5.76828 14.0201 6.45627C13.6082 7.28048 12.5293 7.61869 11.7013 7.1832C10.8199 6.71962 10.5549 5.70085 11.1126 4.91924C11.1415 4.87876 11.1728 4.8398 11.2182 4.78476Z\"\r\n      fill=\"#FDFDFD\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      fillRule=\"evenodd\"\r\n      clipRule=\"evenodd\"\r\n      d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37259 18.6274 0 12 0C5.37259 0 0 5.37259 0 12C0 18.6274 5.37259 24 12 24ZM7.48368 15.2962C7.812 15.3995 8.16768 15.4512 8.55072 15.4512C9.43234 15.4512 10.1346 15.2475 10.6574 14.8402C11.1803 14.4267 11.5451 13.8035 11.7518 12.9706C11.8127 12.7091 11.8704 12.4477 11.9251 12.1862C11.9859 11.9248 12.0376 11.6603 12.0802 11.3928C12.1531 10.9794 12.141 10.6176 12.0437 10.3075C11.9525 9.99744 11.7913 9.73598 11.5603 9.5232C11.3353 9.31042 11.0587 9.1523 10.7304 9.04896C10.4082 8.93952 10.0555 8.8848 9.67248 8.8848C8.78482 8.8848 8.0795 9.09758 7.55664 9.5232C7.03378 9.94882 6.672 10.572 6.47136 11.3928C6.41054 11.6603 6.34978 11.9248 6.28896 12.1862C6.23424 12.4477 6.18254 12.7091 6.13392 12.9706C6.06706 13.384 6.0792 13.7458 6.1704 14.0558C6.2677 14.3659 6.42878 14.6243 6.65376 14.831C6.87874 15.0378 7.15536 15.1928 7.48368 15.2962ZM9.53568 13.8461C9.28642 14.0406 8.9976 14.1379 8.66928 14.1379C8.33486 14.1379 8.09472 14.0406 7.9488 13.8461C7.80288 13.6515 7.7664 13.3415 7.83936 12.9158C7.88798 12.6483 7.93666 12.396 7.98528 12.1589C8.04 11.9218 8.10082 11.6755 8.16768 11.4202C8.27102 10.9945 8.4443 10.6845 8.68752 10.4899C8.93678 10.2954 9.2256 10.1981 9.55392 10.1981C9.88224 10.1981 10.1224 10.2954 10.2744 10.4899C10.4264 10.6845 10.4629 10.9945 10.3838 11.4202C10.3413 11.6755 10.2926 11.9218 10.2379 12.1589C10.1893 12.396 10.1315 12.6483 10.0646 12.9158C9.9613 13.3415 9.78494 13.6515 9.53568 13.8461ZM12.3074 15.2962C12.3439 15.3387 12.3925 15.36 12.4533 15.36H13.6936C13.7605 15.36 13.8182 15.3387 13.8669 15.2962C13.9216 15.2536 13.955 15.1989 13.9672 15.132L14.3868 13.1347H15.618C16.4023 13.1347 17.0255 12.9675 17.4876 12.6331C17.9557 12.2987 18.2658 11.7819 18.4178 11.0827C18.4908 10.7301 18.4877 10.4231 18.4087 10.1616C18.3296 9.8941 18.1898 9.67214 17.9892 9.49584C17.7885 9.31954 17.5362 9.18878 17.2322 9.10368C16.9343 9.01858 16.5998 8.976 16.229 8.976H13.8031C13.7423 8.976 13.6845 8.99726 13.6298 9.03984C13.5751 9.08242 13.5416 9.13714 13.5295 9.204L12.2709 15.132C12.2587 15.1989 12.2709 15.2536 12.3074 15.2962ZM15.6727 11.8762H14.6239L14.9796 10.2437H16.074C16.2928 10.2437 16.4539 10.2802 16.5573 10.3531C16.6668 10.4261 16.7306 10.5234 16.7488 10.645C16.7671 10.7665 16.761 10.9064 16.7306 11.0645C16.6698 11.3381 16.5391 11.5417 16.3384 11.6755C16.1438 11.8093 15.9219 11.8762 15.6727 11.8762Z\"\r\n      fill=\"#151718\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      fillRule=\"evenodd\"\r\n      clipRule=\"evenodd\"\r\n      d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37259 18.6274 0 12 0C5.37259 0 0 5.37259 0 12C0 18.6274 5.37259 24 12 24ZM7.48368 15.2962C7.812 15.3995 8.16768 15.4512 8.55072 15.4512C9.43233 15.4512 10.1346 15.2475 10.6574 14.8402C11.1803 14.4267 11.5451 13.8035 11.7518 12.9706C11.8127 12.7091 11.8704 12.4477 11.9251 12.1862C11.9859 11.9248 12.0376 11.6603 12.0802 11.3928C12.1531 10.9794 12.141 10.6176 12.0437 10.3075C11.9525 9.99744 11.7913 9.73598 11.5603 9.5232C11.3353 9.31042 11.0587 9.1523 10.7304 9.04896C10.4082 8.93952 10.0555 8.8848 9.67248 8.8848C8.78482 8.8848 8.0795 9.09758 7.55664 9.5232C7.03378 9.94882 6.672 10.572 6.47136 11.3928C6.41054 11.6603 6.34978 11.9248 6.28896 12.1862C6.23424 12.4477 6.18254 12.7091 6.13392 12.9706C6.06706 13.384 6.0792 13.7458 6.1704 14.0558C6.2677 14.3659 6.42878 14.6243 6.65376 14.831C6.87874 15.0378 7.15536 15.1928 7.48368 15.2962ZM9.53568 13.8461C9.28642 14.0406 8.9976 14.1379 8.66928 14.1379C8.33486 14.1379 8.09472 14.0406 7.9488 13.8461C7.80288 13.6515 7.7664 13.3415 7.83936 12.9158C7.88798 12.6483 7.93666 12.396 7.98528 12.1589C8.04 11.9218 8.10082 11.6755 8.16768 11.4202C8.27102 10.9945 8.4443 10.6845 8.68752 10.4899C8.93678 10.2954 9.2256 10.1981 9.55392 10.1981C9.88224 10.1981 10.1224 10.2954 10.2744 10.4899C10.4264 10.6845 10.4629 10.9945 10.3838 11.4202C10.3413 11.6755 10.2926 11.9218 10.2379 12.1589C10.1893 12.396 10.1315 12.6483 10.0646 12.9158C9.9613 13.3415 9.78494 13.6515 9.53568 13.8461ZM12.3074 15.2962C12.3439 15.3387 12.3925 15.36 12.4533 15.36H13.6936C13.7605 15.36 13.8182 15.3387 13.8669 15.2962C13.9216 15.2536 13.955 15.1989 13.9672 15.132L14.3868 13.1347H15.618C16.4023 13.1347 17.0255 12.9675 17.4876 12.6331C17.9557 12.2987 18.2658 11.7819 18.4178 11.0827C18.4908 10.7301 18.4877 10.4231 18.4087 10.1616C18.3296 9.8941 18.1898 9.67214 17.9892 9.49584C17.7885 9.31954 17.5362 9.18878 17.2322 9.10368C16.9343 9.01858 16.5998 8.976 16.229 8.976H13.8031C13.7423 8.976 13.6845 8.99726 13.6298 9.03984C13.5751 9.08242 13.5416 9.13714 13.5295 9.204L12.2709 15.132C12.2587 15.1989 12.2709 15.2536 12.3074 15.2962ZM15.6727 11.8762H14.6239L14.9796 10.2437H16.074C16.2928 10.2437 16.4539 10.2802 16.5573 10.3531C16.6668 10.4261 16.7306 10.5234 16.7488 10.645C16.7671 10.7665 16.761 10.9064 16.7306 11.0645C16.6698 11.3381 16.5391 11.5417 16.3384 11.6755C16.1438 11.8093 15.9219 11.8762 15.6727 11.8762Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_174_1547)\">\r\n      <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"white\" />\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenodd\"\r\n        d=\"M9 18.5C13.9706 18.5 18 14.4706 18 9.5C18 4.52944 13.9706 0.5 9 0.5C4.02944 0.5 0 4.52944 0 9.5C0 14.4706 4.02944 18.5 9 18.5ZM5.61276 11.9721C5.859 12.0496 6.12576 12.0884 6.41304 12.0884C7.07425 12.0884 7.60093 11.9357 7.99308 11.6301C8.38523 11.3201 8.65883 10.8526 8.81388 10.2279C8.85949 10.0318 8.9028 9.83577 8.94384 9.63968C8.98945 9.44359 9.02819 9.24523 9.06012 9.0446C9.11484 8.73453 9.10573 8.4632 9.03276 8.23064C8.96436 7.99808 8.84351 7.80199 8.67024 7.6424C8.50151 7.48281 8.29404 7.36423 8.0478 7.28672C7.80613 7.20464 7.54164 7.1636 7.25436 7.1636C6.58861 7.1636 6.05963 7.32319 5.66748 7.6424C5.27533 7.96161 5.004 8.429 4.85352 9.0446C4.80791 9.24523 4.76233 9.44359 4.71672 9.63968C4.67568 9.83577 4.63691 10.0318 4.60044 10.2279C4.55029 10.538 4.5594 10.8093 4.6278 11.0419C4.70077 11.2744 4.82159 11.4682 4.99032 11.6233C5.15905 11.7783 5.36652 11.8946 5.61276 11.9721ZM7.15176 10.8846C6.96481 11.0305 6.7482 11.1034 6.50196 11.1034C6.25115 11.1034 6.07104 11.0305 5.9616 10.8846C5.85216 10.7387 5.8248 10.5061 5.87952 10.1869C5.91599 9.98625 5.95249 9.797 5.98896 9.61916C6.03 9.44132 6.07561 9.25664 6.12576 9.06512C6.20327 8.74591 6.33323 8.51335 6.51564 8.36744C6.70259 8.22153 6.9192 8.14856 7.16544 8.14856C7.41168 8.14856 7.59179 8.22153 7.7058 8.36744C7.81981 8.51335 7.84717 8.74591 7.78788 9.06512C7.75595 9.25664 7.71948 9.44132 7.67844 9.61916C7.64197 9.797 7.59863 9.98625 7.54848 10.1869C7.47097 10.5061 7.33871 10.7387 7.15176 10.8846ZM9.23054 11.9721C9.2579 12.0041 9.29437 12.02 9.33998 12.02H10.2702C10.3204 12.02 10.3637 12.0041 10.4002 11.9721C10.4412 11.9402 10.4663 11.8991 10.4754 11.849L10.7901 10.351H11.7135C12.3017 10.351 12.7691 10.2257 13.1157 9.97484C13.4668 9.72403 13.6993 9.33645 13.8133 8.81204C13.8681 8.54755 13.8658 8.31729 13.8065 8.1212C13.7472 7.92057 13.6423 7.75411 13.4919 7.62188C13.3414 7.48965 13.1521 7.39159 12.9241 7.32776C12.7007 7.26393 12.4499 7.232 12.1717 7.232H10.3523C10.3067 7.232 10.2634 7.24795 10.2223 7.27988C10.1813 7.31181 10.1562 7.35285 10.1471 7.403L9.20318 11.849C9.19404 11.8991 9.20318 11.9402 9.23054 11.9721ZM11.7545 9.40712H10.9679L11.2347 8.18276H12.0555C12.2196 8.18276 12.3404 8.21012 12.418 8.26484C12.5001 8.31956 12.5479 8.39253 12.5616 8.48372C12.5753 8.57491 12.5707 8.67981 12.5479 8.79836C12.5023 9.00356 12.4043 9.15631 12.2538 9.25664C12.1079 9.35697 11.9415 9.40712 11.7545 9.40712Z\"\r\n        fill=\"#FF0000\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_174_1547\">\r\n        <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    id=\"Layer_2\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 408.59 401.32\"\r\n  >\r\n    <g id=\"Layer_1-2\">\r\n      <g>\r\n        <path\r\n          fill=\"#11181c\"\r\n          d=\"M72.79,191.41c-.02-14.11,.12-27.76,.15-41.42,.05-16.83,.01-33.66,.01-51.08h-13.99v-23.94c7.82,0,15.68-.7,23.35,.19,8.49,.98,14.59,9.04,15.15,18.05,.1,1.66,.04,3.33,.04,5,0,76.32,0,152.65,0,228.97,0,26.47,18.36,46.96,44.37,49.53,24.58,2.43,47.12-14.61,52.14-39.73,4.92-24.61-14.43-58.56-49.26-53.7v26.58h13.65v23.88c-5.64,0-11.31,.51-16.85-.1-12.5-1.39-21.23-11.82-21.56-25.31-.2-8.16-.21-16.34,0-24.5,.41-15.81,9.56-24.97,25.38-25.35,8.99-.22,18-.04,27-.04,53.66,0,107.32,.08,160.98-.05,16.62-.04,31.94,3.76,45.9,13.63,14.04,11.2,23.76,24.87,27.59,42.36,9.76,44.52-22.75,86.45-68.41,86.74-65.81,.42-131.63,.21-197.44-.53-27.21-.31-48.83-11.91-61.35-37.28-5.19-10.5-6.67-21.88-6.68-33.46-.05-45.99-.04-91.98-.17-138.43m141.3,164.39c-3.67,6.79-7.33,13.59-11.22,20.79,1.54,0,3,0,4.46,0,42.99,.11,85.99,.24,128.98,.33,2.49,0,5.02,0,7.47-.38,24.78-3.76,42.07-24.83,40.48-49.62-1.66-25.73-22.02-43.92-47.98-43.95-43.16-.05-86.33-.02-129.49,0-1.2,0-2.41,.19-3.9,.32,15.76,22.38,20.5,46.02,11.2,72.51Z\"\r\n        />\r\n        <path\r\n          fill=\"#11181c\"\r\n          d=\"M379.54,252.32c-7.86-2.41-15.74-5.29-24.19-8.37v-5.23c0-66.45,0-132.91,0-199.36,0-11.1-3.81-14.89-15.04-14.89-79.95,0-159.89,0-239.84,0-31.26,0-58.22,17.38-69.88,45.06-11.71,27.81-5.46,58.26,16.63,80.95,1.63,1.67,3.2,3.41,4.96,4.93,4.5,3.9,6.31,8.76,4.15,14.31-2.19,5.62-6.87,7.84-13.26,7.39-7.42-6.26-15.48-11.72-21.22-19.01C-1.55,128.39-6.23,95.07,8.17,60.43,22.58,25.82,49.55,5.9,86.98,.83,91.74,.18,96.61,.04,101.43,.04,180.93-.01,260.42,0,339.92,0c24.68,0,39.59,14.83,39.59,39.36,0,70.83,0,141.66,.03,212.96Z\"\r\n        />\r\n        <path\r\n          fill=\"#11181c\"\r\n          d=\"M187.67,135.78c40.81,0,81.12,0,121.43,0,6.78,0,10.71,2.35,12.78,7.49,2.96,7.37-1.56,15.28-9.46,16.49-1.14,.17-2.33,.12-3.49,.12-55.3,0-110.61,0-165.91,0-1.15,0-2.29-.1-3.74-.17v-23.93h48.39Z\"\r\n        />\r\n        <path\r\n          fill=\"#11181c\"\r\n          d=\"M246.67,192.41c12.66,0,24.82-.12,36.98,.04,9.39,.12,14.84,6.32,13.2,14.59-1,5.06-4.83,8.71-10.24,9.54-1.8,.28-3.65,.21-5.48,.21-45.47,0-90.94,0-136.41,0h-5.38v-24.39c35.64,0,71.23,0,107.33,0Z\"\r\n        />\r\n        <path\r\n          fill=\"#11181c\"\r\n          d=\"M278.61,78.87c2.15,0,3.82-.02,5.48,0,7.79,.11,13.02,4.92,13.06,12,.05,7.06-5.24,12.04-12.99,12.06-16.65,.04-33.29,.01-49.94,.01h-95.01v-24.07h139.39Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    id=\"Layer_2\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    viewBox=\"0 0 408.59 401.32\"\r\n  >\r\n    <g id=\"Layer_1-2\">\r\n      <g>\r\n        <path\r\n          fill=\"#ecedee\"\r\n          d=\"M72.79,191.41c-.02-14.11,.12-27.76,.15-41.42,.05-16.83,.01-33.66,.01-51.08h-13.99v-23.94c7.82,0,15.68-.7,23.35,.19,8.49,.98,14.59,9.04,15.15,18.05,.1,1.66,.04,3.33,.04,5,0,76.32,0,152.65,0,228.97,0,26.47,18.36,46.96,44.37,49.53,24.58,2.43,47.12-14.61,52.14-39.73,4.92-24.61-14.43-58.56-49.26-53.7v26.58h13.65v23.88c-5.64,0-11.31,.51-16.85-.1-12.5-1.39-21.23-11.82-21.56-25.31-.2-8.16-.21-16.34,0-24.5,.41-15.81,9.56-24.97,25.38-25.35,8.99-.22,18-.04,27-.04,53.66,0,107.32,.08,160.98-.05,16.62-.04,31.94,3.76,45.9,13.63,14.04,11.2,23.76,24.87,27.59,42.36,9.76,44.52-22.75,86.45-68.41,86.74-65.81,.42-131.63,.21-197.44-.53-27.21-.31-48.83-11.91-61.35-37.28-5.19-10.5-6.67-21.88-6.68-33.46-.05-45.99-.04-91.98-.17-138.43m141.3,164.39c-3.67,6.79-7.33,13.59-11.22,20.79,1.54,0,3,0,4.46,0,42.99,.11,85.99,.24,128.98,.33,2.49,0,5.02,0,7.47-.38,24.78-3.76,42.07-24.83,40.48-49.62-1.66-25.73-22.02-43.92-47.98-43.95-43.16-.05-86.33-.02-129.49,0-1.2,0-2.41,.19-3.9,.32,15.76,22.38,20.5,46.02,11.2,72.51Z\"\r\n        />\r\n        <path\r\n          fill=\"#ecedee\"\r\n          d=\"M379.54,252.32c-7.86-2.41-15.74-5.29-24.19-8.37v-5.23c0-66.45,0-132.91,0-199.36,0-11.1-3.81-14.89-15.04-14.89-79.95,0-159.89,0-239.84,0-31.26,0-58.22,17.38-69.88,45.06-11.71,27.81-5.46,58.26,16.63,80.95,1.63,1.67,3.2,3.41,4.96,4.93,4.5,3.9,6.31,8.76,4.15,14.31-2.19,5.62-6.87,7.84-13.26,7.39-7.42-6.26-15.48-11.72-21.22-19.01C-1.55,128.39-6.23,95.07,8.17,60.43,22.58,25.82,49.55,5.9,86.98,.83,91.74,.18,96.61,.04,101.43,.04,180.93-.01,260.42,0,339.92,0c24.68,0,39.59,14.83,39.59,39.36,0,70.83,0,141.66,.03,212.96Z\"\r\n        />\r\n        <path\r\n          fill=\"#ecedee\"\r\n          d=\"M187.67,135.78c40.81,0,81.12,0,121.43,0,6.78,0,10.71,2.35,12.78,7.49,2.96,7.37-1.56,15.28-9.46,16.49-1.14,.17-2.33,.12-3.49,.12-55.3,0-110.61,0-165.91,0-1.15,0-2.29-.1-3.74-.17v-23.93h48.39Z\"\r\n        />\r\n        <path\r\n          fill=\"#ecedee\"\r\n          d=\"M246.67,192.41c12.66,0,24.82-.12,36.98,.04,9.39,.12,14.84,6.32,13.2,14.59-1,5.06-4.83,8.71-10.24,9.54-1.8,.28-3.65,.21-5.48,.21-45.47,0-90.94,0-136.41,0h-5.38v-24.39c35.64,0,71.23,0,107.33,0Z\"\r\n        />\r\n        <path\r\n          fill=\"#ecedee\"\r\n          d=\"M278.61,78.87c2.15,0,3.82-.02,5.48,0,7.79,.11,13.02,4.92,13.06,12,.05,7.06-5.24,12.04-12.99,12.06-16.65,.04-33.29,.01-49.94,.01h-95.01v-24.07h139.39Z\"\r\n        />\r\n      </g>\r\n    </g>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"#FFEDD8\" />\r\n    <g clip-path=\"url(#clip0_179_1765)\">\r\n      <path\r\n        d=\"M5.25161 9.12536C5.25105 8.72406 5.25503 8.33584 5.25588 7.94733C5.2573 7.46867 5.25617 6.99001 5.25617 6.49457H4.85828V5.81369C5.08068 5.81369 5.30423 5.79378 5.52237 5.8191C5.76384 5.84697 5.93733 6.0762 5.95325 6.33246C5.9561 6.37967 5.95439 6.42716 5.95439 6.47466C5.95439 8.64527 5.95439 10.8162 5.95439 12.9868C5.95439 13.7396 6.47657 14.3224 7.21632 14.3955C7.91539 14.4646 8.55645 13.9799 8.69923 13.2655C8.83916 12.5656 8.28882 11.6 7.29823 11.7382V12.4942H7.68644V13.1734C7.52604 13.1734 7.36478 13.1879 7.20722 13.1705C6.8517 13.131 6.60341 12.8343 6.59403 12.4507C6.58834 12.2186 6.58806 11.9859 6.59403 11.7539C6.60569 11.3042 6.86592 11.0437 7.31586 11.0329C7.57154 11.0266 7.8278 11.0318 8.08377 11.0318C9.60991 11.0318 11.136 11.034 12.6622 11.0303C13.1349 11.0292 13.5706 11.1373 13.9676 11.418C14.3669 11.7365 14.6434 12.1253 14.7523 12.6227C15.0299 13.8889 14.1053 15.0815 12.8067 15.0897C10.935 15.1017 9.06299 15.0957 7.19129 15.0746C6.41741 15.0658 5.80252 14.7359 5.44644 14.0144C5.29883 13.7157 5.25673 13.3921 5.25645 13.0627C5.25503 11.7547 5.25531 10.4467 5.25161 9.12564M9.27032 13.8011C9.16594 13.9942 9.06185 14.1876 8.95121 14.3923C8.99501 14.3923 9.03654 14.3923 9.07806 14.3923C10.3007 14.3955 11.5237 14.3992 12.7464 14.4017C12.8172 14.4017 12.8891 14.4017 12.9588 14.3909C13.6636 14.284 14.1553 13.6847 14.1101 12.9797C14.0629 12.2479 13.4838 11.7305 12.7455 11.7297C11.518 11.7283 10.2902 11.7291 9.0627 11.7297C9.02857 11.7297 8.99416 11.7351 8.95178 11.7388C9.40001 12.3753 9.53482 13.0477 9.27032 13.8011Z\"\r\n        fill=\"#1C0500\"\r\n      />\r\n      <path\r\n        d=\"M13.9759 10.8577C13.7523 10.7891 13.5282 10.7072 13.2879 10.6196V10.4709C13.2879 8.58098 13.2879 6.6908 13.2879 4.80089C13.2879 4.4852 13.1795 4.37741 12.8602 4.37741C10.5863 4.37741 8.31273 4.37741 6.03887 4.37741C5.14981 4.37741 4.38304 4.87171 4.05142 5.65896C3.71837 6.4499 3.89613 7.31593 4.52439 7.96125C4.57075 8.00875 4.6154 8.05824 4.66546 8.10147C4.79344 8.21239 4.84492 8.35061 4.78349 8.50846C4.7212 8.6683 4.5881 8.73143 4.40636 8.71864C4.19533 8.5406 3.96609 8.38531 3.80284 8.17797C3.13732 7.33299 3.00422 6.38534 3.41377 5.40015C3.8236 4.4158 4.59066 3.84926 5.6552 3.70506C5.79058 3.68658 5.92909 3.6826 6.06617 3.6826C8.32723 3.68117 10.588 3.68146 12.8491 3.68146C13.551 3.68146 13.975 4.10324 13.975 4.80089C13.975 6.81537 13.975 8.82984 13.9759 10.8577Z\"\r\n        fill=\"#1C0500\"\r\n      />\r\n      <path\r\n        d=\"M8.51896 7.54318C9.67963 7.54318 10.8261 7.54318 11.9725 7.54318C12.1654 7.54318 12.2771 7.61002 12.336 7.75621C12.4202 7.96582 12.2917 8.19078 12.067 8.2252C12.0345 8.23003 12.0007 8.22861 11.9677 8.22861C10.3949 8.22861 8.82185 8.22861 7.24907 8.22861C7.21636 8.22861 7.18394 8.22577 7.1427 8.22377V7.54318H8.51896Z\"\r\n        fill=\"#1C0500\"\r\n      />\r\n      <path\r\n        d=\"M10.197 9.15379C10.557 9.15379 10.9029 9.15038 11.2487 9.15493C11.5158 9.15834 11.6708 9.33468 11.6241 9.56988C11.5957 9.7138 11.4868 9.81761 11.3329 9.84121C11.2817 9.84918 11.2291 9.84718 11.1771 9.84718C9.88384 9.84718 8.59063 9.84718 7.29742 9.84718H7.14441V9.15351C8.15804 9.15351 9.17026 9.15351 10.197 9.15351V9.15379Z\"\r\n        fill=\"#1C0500\"\r\n      />\r\n      <path\r\n        d=\"M11.1053 5.92461C11.1664 5.92461 11.2139 5.92405 11.2612 5.92461C11.4827 5.92774 11.6315 6.06454 11.6326 6.26591C11.634 6.4667 11.4836 6.60834 11.2631 6.6089C10.7896 6.61004 10.3163 6.60919 9.8428 6.60919H7.14062V5.92461H11.105H11.1053Z\"\r\n        fill=\"#1C0500\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_179_1765\">\r\n        <rect\r\n          width=\"12.0164\"\r\n          height=\"12.0164\"\r\n          fill=\"white\"\r\n          transform=\"translate(2.99182 3.49182)\"\r\n        />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\"\r\n      fill=\"#202425\"\r\n    />\r\n    <path\r\n      d=\"M15.4706 14.5895L18.8656 12.6291C19.0455 12.5253 19.1567 12.3322 19.1567 12.1245V8.20417C19.1567 7.99691 19.045 7.80337 18.8656 7.69949L15.4706 5.7391C15.2908 5.63522 15.0678 5.63571 14.888 5.7391L11.493 7.69949C11.3131 7.80337 11.2019 7.99691 11.2019 8.20417V15.2103L8.82113 16.5847L6.44034 15.2103V12.4611L8.82113 11.0867L10.3915 11.9932V10.1489L9.11218 9.41049C9.02398 9.35953 8.92305 9.33258 8.82064 9.33258C8.71824 9.33258 8.6173 9.35953 8.52959 9.41049L5.13455 11.3709C4.95473 11.4748 4.84351 11.6678 4.84351 11.8756V15.7959C4.84351 16.0031 4.95522 16.1967 5.13455 16.3005L8.52959 18.2609C8.70893 18.3643 8.93235 18.3643 9.11218 18.2609L12.5072 16.301C12.687 16.1971 12.7983 16.0036 12.7983 15.7963V8.79018L12.8414 8.76568L15.1791 7.4158L17.5598 8.79018V11.5394L15.1791 12.9138L13.6111 12.0083V13.8526L14.888 14.59C15.0678 14.6934 15.2908 14.6934 15.4706 14.59V14.5895Z\"\r\n      fill=\"white\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\"\r\n      fill=\"#687076\"\r\n    />\r\n    <path\r\n      d=\"M15.4706 14.5895L18.8656 12.6291C19.0455 12.5253 19.1567 12.3322 19.1567 12.1245V8.20417C19.1567 7.99691 19.045 7.80337 18.8656 7.69949L15.4706 5.7391C15.2908 5.63522 15.0678 5.63571 14.888 5.7391L11.493 7.69949C11.3131 7.80337 11.2019 7.99691 11.2019 8.20417V15.2103L8.82113 16.5847L6.44034 15.2103V12.4611L8.82113 11.0867L10.3915 11.9932V10.1489L9.11218 9.41049C9.02398 9.35953 8.92305 9.33258 8.82064 9.33258C8.71824 9.33258 8.6173 9.35953 8.52959 9.41049L5.13455 11.3709C4.95473 11.4748 4.84351 11.6678 4.84351 11.8756V15.7959C4.84351 16.0031 4.95522 16.1967 5.13455 16.3005L8.52959 18.2609C8.70893 18.3643 8.93235 18.3643 9.11218 18.2609L12.5072 16.301C12.687 16.1971 12.7983 16.0036 12.7983 15.7963V8.79018L12.8414 8.76568L15.1791 7.4158L17.5598 8.79018V11.5394L15.1791 12.9138L13.6111 12.0083V13.8526L14.888 14.59C15.0678 14.6934 15.2908 14.6934 15.4706 14.59V14.5895Z\"\r\n      fill=\"white\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_176_1624)\">\r\n      <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"white\" />\r\n      <path\r\n        d=\"M9 18.5C13.9706 18.5 18 14.4706 18 9.5C18 4.52944 13.9706 0.5 9 0.5C4.02944 0.5 0 4.52944 0 9.5C0 14.4706 4.02944 18.5 9 18.5Z\"\r\n        fill=\"url(#paint0_linear_176_1624)\"\r\n      />\r\n      <path\r\n        d=\"M11.6029 11.4422L14.1492 9.97186C14.284 9.89395 14.3674 9.74916 14.3674 9.59335V6.65313C14.3674 6.49768 14.2837 6.35253 14.1492 6.27462L11.6029 4.80432C11.468 4.72642 11.3008 4.72679 11.1659 4.80432L8.61966 6.27462C8.4848 6.35253 8.40138 6.49768 8.40138 6.65313V11.9078L6.61579 12.9385L4.83019 11.9078V9.84581L6.61579 8.81502L7.79357 9.49486V8.11166L6.83407 7.55787C6.76792 7.51965 6.69222 7.49944 6.61542 7.49944C6.53862 7.49944 6.46291 7.51965 6.39713 7.55787L3.85085 9.02816C3.71599 9.10607 3.63257 9.25086 3.63257 9.40667V12.3469C3.63257 12.5023 3.71635 12.6475 3.85085 12.7254L6.39713 14.1957C6.53163 14.2732 6.6992 14.2732 6.83407 14.1957L9.38035 12.7258C9.51522 12.6479 9.59864 12.5027 9.59864 12.3473V7.09263L9.63097 7.07426L11.3842 6.06185L13.1698 7.09263V9.15458L11.3842 10.1854L10.2083 9.50626V10.8895L11.1659 11.4425C11.3008 11.5201 11.468 11.5201 11.6029 11.4425V11.4422Z\"\r\n        fill=\"white\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <linearGradient\r\n        id=\"paint0_linear_176_1624\"\r\n        x1=\"-3.28948\"\r\n        y1=\"1.97941\"\r\n        x2=\"15.2926\"\r\n        y2=\"13.3508\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n      >\r\n        <stop stopColor=\"#A229C5\" />\r\n        <stop offset=\"1\" stopColor=\"#7B3FE4\" />\r\n      </linearGradient>\r\n      <clipPath id=\"clip0_176_1624\">\r\n        <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    version=\"1.1\"\r\n    id=\"Layer_1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    x=\"0px\"\r\n    y=\"0px\"\r\n    viewBox=\"0 0 400 400\"\r\n  >\r\n    <circle fillRule=\"evenodd\" clipRule=\"evenOdd\" cx=\"200\" cy=\"200\" r=\"200\" />\r\n    <g>\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenOdd\"\r\n        fill=\"#ffffff\"\r\n        d=\"M316,199l-66.7-66.4v48.6l-66.2,48.7l66.2,0v35.5L316,199z\"\r\n      />\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenOdd\"\r\n        fill=\"#ffffff\"\r\n        d=\"M81,199l66.7,66.4v-48.3l66.2-49.1l-66.2,0v-35.5L81,199z\"\r\n      />\r\n    </g>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    version=\"1.1\"\r\n    id=\"Layer_1\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    x=\"0px\"\r\n    y=\"0px\"\r\n    viewBox=\"0 0 400 400\"\r\n  >\r\n    <circle\r\n      fillRule=\"evenodd\"\r\n      clipRule=\"evenOdd\"\r\n      fill=\"#ffffff\"\r\n      cx=\"200\"\r\n      cy=\"200\"\r\n      r=\"200\"\r\n    />\r\n    <g>\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenOdd\"\r\n        d=\"M316,199l-66.7-66.4v48.6l-66.2,48.7l66.2,0v35.5L316,199z\"\r\n      />\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenOdd\"\r\n        d=\"M81,199l66.7,66.4v-48.3l66.2-49.1l-66.2,0v-35.5L81,199z\"\r\n      />\r\n    </g>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_176_1669)\">\r\n      <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"white\" />\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenodd\"\r\n        d=\"M18 9.5C18 14.4706 13.9706 18.5 9 18.5C4.02944 18.5 0 14.4706 0 9.5C0 4.52944 4.02944 0.5 9 0.5C13.9706 0.5 18 4.52944 18 9.5ZM15.75 9.49998L11.9867 5.75V8.4963L8.25 11.246L11.9867 11.2486V13.25L15.75 9.49998ZM6.01333 13.25L2.25 9.5L6.01333 5.75V7.7514L9.75 7.75394L6.01333 10.5258V13.25Z\"\r\n        fill=\"black\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_176_1669\">\r\n        <rect y=\"0.5\" width=\"18\" height=\"18\" rx=\"9\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 60 60\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_4824_71881)\">\r\n      <path\r\n        d=\"M60 30C60 13.4315 46.5685 0 30 0C13.4315 0 0 13.4315 0 30C0 46.5685 13.4315 60 30 60C46.5685 60 60 46.5685 60 30Z\"\r\n        fill=\"url(#paint0_radial_4824_71881)\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <radialGradient\r\n        id=\"paint0_radial_4824_71881\"\r\n        cx=\"0\"\r\n        cy=\"0\"\r\n        r=\"1\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n        gradientTransform=\"translate(38.9752 14.6145) scale(45.1744)\"\r\n      >\r\n        <stop offset=\"0.0677083\" stopColor=\"#ECEDEE\" />\r\n        <stop offset=\"0.25\" stopColor=\"#787F85\" />\r\n        <stop offset=\"0.473958\" stopColor=\"#4C5155\" />\r\n        <stop offset=\"0.880208\" stopColor=\"#26292B\" />\r\n        <stop offset=\"1\" stopColor=\"#313538\" />\r\n      </radialGradient>\r\n      <clipPath id=\"clip0_4824_71881\">\r\n        <rect width=\"60\" height=\"60\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 60 60\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_4827_71887)\">\r\n      <path\r\n        d=\"M60 30C60 13.4315 46.5685 0 30 0C13.4315 0 0 13.4315 0 30C0 46.5685 13.4315 60 30 60C46.5685 60 60 46.5685 60 30Z\"\r\n        fill=\"url(#paint0_radial_4827_71887)\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <radialGradient\r\n        id=\"paint0_radial_4827_71887\"\r\n        cx=\"0\"\r\n        cy=\"0\"\r\n        r=\"1\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n        gradientTransform=\"translate(38.9752 14.6145) scale(45.1744)\"\r\n      >\r\n        <stop offset=\"0.0677083\" stopColor=\"white\" />\r\n        <stop offset=\"0.25\" stopColor=\"#F0F0F0\" />\r\n        <stop offset=\"0.473958\" stopColor=\"#F3F3F3\" />\r\n        <stop offset=\"0.880208\" stopColor=\"#ADADAD\" />\r\n        <stop offset=\"1\" stopColor=\"#CCCCCC\" />\r\n      </radialGradient>\r\n      <clipPath id=\"clip0_4827_71887\">\r\n        <rect width=\"60\" height=\"60\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_179_1873)\">\r\n      <mask\r\n        id=\"mask0_179_1873\"\r\n        style={{ maskType: 'alpha' }}\r\n        maskUnits=\"userSpaceOnUse\"\r\n        x=\"0\"\r\n        y=\"0\"\r\n        width=\"18\"\r\n        height=\"19\"\r\n      >\r\n        <path\r\n          d=\"M9 18.5C13.9706 18.5 18 14.4706 18 9.5C18 4.52944 13.9706 0.5 9 0.5C4.02944 0.5 0 4.52944 0 9.5C0 14.4706 4.02944 18.5 9 18.5Z\"\r\n          fill=\"#D9D9D9\"\r\n        />\r\n      </mask>\r\n      <g mask=\"url(#mask0_179_1873)\">\r\n        <path\r\n          d=\"M21.0501 -3.41278H-2.77734V20.4147H21.0501V-3.41278Z\"\r\n          fill=\"#A1723A\"\r\n        />\r\n        <g filter=\"url(#filter0_f_179_1873)\">\r\n          <path\r\n            d=\"M9.68737 18.1215C14.9915 18.1215 19.2913 13.8229 19.2913 8.52039C19.2913 3.21782 14.9915 -1.08075 9.68737 -1.08075C4.38331 -1.08075 0.0834961 3.21782 0.0834961 8.52039C0.0834961 13.8229 4.38331 18.1215 9.68737 18.1215Z\"\r\n            fill=\"#531002\"\r\n          />\r\n        </g>\r\n        <g filter=\"url(#filter1_f_179_1873)\">\r\n          <path\r\n            d=\"M10.7226 15.0825C15.0246 15.0825 18.5121 11.5938 18.5121 7.29034C18.5121 2.98679 15.0246 -0.501892 10.7226 -0.501892C6.42068 -0.501892 2.93323 2.98679 2.93323 7.29034C2.93323 11.5938 6.42068 15.0825 10.7226 15.0825Z\"\r\n            fill=\"#2B5DF0\"\r\n          />\r\n        </g>\r\n        <g filter=\"url(#filter2_f_179_1873)\">\r\n          <path\r\n            d=\"M10.5807 15.5278C15.0656 15.5278 18.7013 11.8908 18.7013 7.4044C18.7013 2.91796 15.0656 -0.718994 10.5807 -0.718994C6.0958 -0.718994 2.46008 2.91796 2.46008 7.4044C2.46008 11.8908 6.0958 15.5278 10.5807 15.5278Z\"\r\n            fill=\"url(#paint0_radial_179_1873)\"\r\n          />\r\n        </g>\r\n        <g filter=\"url(#filter3_f_179_1873)\">\r\n          <path\r\n            d=\"M11.9276 9.44993C14.187 9.44993 16.0185 7.61839 16.0185 5.35904C16.0185 3.09969 14.187 1.26813 11.9276 1.26813C9.66821 1.26813 7.83667 3.09969 7.83667 5.35904C7.83667 7.61839 9.66821 9.44993 11.9276 9.44993Z\"\r\n            fill=\"#FCB8D4\"\r\n          />\r\n        </g>\r\n        <g filter=\"url(#filter4_f_179_1873)\">\r\n          <path\r\n            d=\"M11.9248 6.98982C12.8271 6.98982 13.5584 6.25846 13.5584 5.35624C13.5584 4.45404 12.8271 3.72266 11.9248 3.72266C11.0226 3.72266 10.2913 4.45404 10.2913 5.35624C10.2913 6.25846 11.0226 6.98982 11.9248 6.98982Z\"\r\n            fill=\"white\"\r\n          />\r\n        </g>\r\n        <g filter=\"url(#filter5_f_179_1873)\">\r\n          <path\r\n            d=\"M10.8395 21.667C18.9471 21.667 25.5195 15.0946 25.5195 6.98704C25.5195 -1.12047 18.9471 -7.69293 10.8395 -7.69293C2.73199 -7.69293 -3.84045 -1.12047 -3.84045 6.98704C-3.84045 15.0946 2.73199 21.667 10.8395 21.667Z\"\r\n            fill=\"url(#paint1_radial_179_1873)\"\r\n            fill-opacity=\"0.9\"\r\n          />\r\n        </g>\r\n      </g>\r\n    </g>\r\n    <defs>\r\n      <filter\r\n        id=\"filter0_f_179_1873\"\r\n        x=\"-3.89229\"\r\n        y=\"-5.05653\"\r\n        width=\"27.1593\"\r\n        height=\"27.1538\"\r\n        filterUnits=\"userSpaceOnUse\"\r\n        color-interpolation-filters=\"sRGB\"\r\n      >\r\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n        <feBlend\r\n          mode=\"normal\"\r\n          in=\"SourceGraphic\"\r\n          in2=\"BackgroundImageFix\"\r\n          result=\"shape\"\r\n        />\r\n        <feGaussianBlur\r\n          stdDeviation=\"1.98789\"\r\n          result=\"effect1_foregroundBlur_179_1873\"\r\n        />\r\n      </filter>\r\n      <filter\r\n        id=\"filter1_f_179_1873\"\r\n        x=\"-5.01836\"\r\n        y=\"-8.45348\"\r\n        width=\"31.482\"\r\n        height=\"31.4876\"\r\n        filterUnits=\"userSpaceOnUse\"\r\n        color-interpolation-filters=\"sRGB\"\r\n      >\r\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n        <feBlend\r\n          mode=\"normal\"\r\n          in=\"SourceGraphic\"\r\n          in2=\"BackgroundImageFix\"\r\n          result=\"shape\"\r\n        />\r\n        <feGaussianBlur\r\n          stdDeviation=\"3.9758\"\r\n          result=\"effect1_foregroundBlur_179_1873\"\r\n        />\r\n      </filter>\r\n      <filter\r\n        id=\"filter2_f_179_1873\"\r\n        x=\"-0.521771\"\r\n        y=\"-3.70085\"\r\n        width=\"22.2049\"\r\n        height=\"22.2105\"\r\n        filterUnits=\"userSpaceOnUse\"\r\n        color-interpolation-filters=\"sRGB\"\r\n      >\r\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n        <feBlend\r\n          mode=\"normal\"\r\n          in=\"SourceGraphic\"\r\n          in2=\"BackgroundImageFix\"\r\n          result=\"shape\"\r\n        />\r\n        <feGaussianBlur\r\n          stdDeviation=\"1.49093\"\r\n          result=\"effect1_foregroundBlur_179_1873\"\r\n        />\r\n      </filter>\r\n      <filter\r\n        id=\"filter3_f_179_1873\"\r\n        x=\"1.87298\"\r\n        y=\"-4.69556\"\r\n        width=\"20.1091\"\r\n        height=\"20.1092\"\r\n        filterUnits=\"userSpaceOnUse\"\r\n        color-interpolation-filters=\"sRGB\"\r\n      >\r\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n        <feBlend\r\n          mode=\"normal\"\r\n          in=\"SourceGraphic\"\r\n          in2=\"BackgroundImageFix\"\r\n          result=\"shape\"\r\n        />\r\n        <feGaussianBlur\r\n          stdDeviation=\"2.98184\"\r\n          result=\"effect1_foregroundBlur_179_1873\"\r\n        />\r\n      </filter>\r\n      <filter\r\n        id=\"filter4_f_179_1873\"\r\n        x=\"6.31547\"\r\n        y=\"-0.253129\"\r\n        width=\"11.2188\"\r\n        height=\"11.2187\"\r\n        filterUnits=\"userSpaceOnUse\"\r\n        color-interpolation-filters=\"sRGB\"\r\n      >\r\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n        <feBlend\r\n          mode=\"normal\"\r\n          in=\"SourceGraphic\"\r\n          in2=\"BackgroundImageFix\"\r\n          result=\"shape\"\r\n        />\r\n        <feGaussianBlur\r\n          stdDeviation=\"1.98789\"\r\n          result=\"effect1_foregroundBlur_179_1873\"\r\n        />\r\n      </filter>\r\n      <filter\r\n        id=\"filter5_f_179_1873\"\r\n        x=\"-6.82231\"\r\n        y=\"-10.6748\"\r\n        width=\"35.3237\"\r\n        height=\"35.3236\"\r\n        filterUnits=\"userSpaceOnUse\"\r\n        color-interpolation-filters=\"sRGB\"\r\n      >\r\n        <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n        <feBlend\r\n          mode=\"normal\"\r\n          in=\"SourceGraphic\"\r\n          in2=\"BackgroundImageFix\"\r\n          result=\"shape\"\r\n        />\r\n        <feGaussianBlur\r\n          stdDeviation=\"1.49093\"\r\n          result=\"effect1_foregroundBlur_179_1873\"\r\n        />\r\n      </filter>\r\n      <radialGradient\r\n        id=\"paint0_radial_179_1873\"\r\n        cx=\"0\"\r\n        cy=\"0\"\r\n        r=\"1\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n        gradientTransform=\"translate(11.9504 5.11263) rotate(128.228) scale(15.3367 15.3355)\"\r\n      >\r\n        <stop offset=\"0.286458\" stopColor=\"#387AFA\" />\r\n        <stop offset=\"0.647782\" stopColor=\"#387AFA\" stop-opacity=\"0\" />\r\n      </radialGradient>\r\n      <radialGradient\r\n        id=\"paint1_radial_179_1873\"\r\n        cx=\"0\"\r\n        cy=\"0\"\r\n        r=\"1\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n        gradientTransform=\"translate(10.8395 6.98704) rotate(90) scale(14.68)\"\r\n      >\r\n        <stop offset=\"0.598958\" stop-opacity=\"0\" />\r\n        <stop offset=\"0.671875\" />\r\n        <stop offset=\"0.734375\" stop-opacity=\"0\" />\r\n      </radialGradient>\r\n      <clipPath id=\"clip0_179_1873\">\r\n        <rect\r\n          width=\"18\"\r\n          height=\"18\"\r\n          fill=\"white\"\r\n          transform=\"translate(0 0.5)\"\r\n        />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      fillRule=\"evenodd\"\r\n      clipRule=\"evenodd\"\r\n      d=\"M12.7508 11.25C12.7508 11.25 12.9154 4.25646 15.5016 1.67025C17.5824 -0.410578 20.798 -0.568718 22.6837 1.31704C24.5695 3.20279 24.4113 6.4183 22.3305 8.4992C19.7443 11.0854 12.7508 11.25 12.7508 11.25ZM11.2504 11.25C11.2504 11.25 11.0858 4.25646 8.49954 1.67026C6.41871 -0.410568 3.20316 -0.568708 1.3174 1.31704C-0.568351 3.20279 -0.410208 6.4183 1.67063 8.4992C4.25683 11.0854 11.2504 11.25 11.2504 11.25ZM8.49917 22.3302C11.0854 19.744 11.25 12.7505 11.25 12.7505C11.25 12.7505 4.25646 12.9151 1.67026 15.5013C-0.410575 17.5821 -0.568718 20.7977 1.31704 22.6834C3.20279 24.5692 6.41834 24.411 8.49917 22.3302ZM12.7515 12.7505C12.7515 12.7505 12.9161 19.744 15.5023 22.3302C17.5832 24.411 20.7987 24.5692 22.6845 22.6834C24.5702 20.7977 24.4121 17.5821 22.3312 15.5013C19.745 12.9151 12.7515 12.7505 12.7515 12.7505Z\"\r\n      fill=\"#11181C\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      fillRule=\"evenodd\"\r\n      clipRule=\"evenodd\"\r\n      d=\"M12.7508 11.25C12.7508 11.25 12.9154 4.25646 15.5016 1.67025C17.5824 -0.410578 20.798 -0.568718 22.6837 1.31704C24.5695 3.20279 24.4113 6.4183 22.3305 8.4992C19.7443 11.0854 12.7508 11.25 12.7508 11.25ZM11.2504 11.25C11.2504 11.25 11.0858 4.25646 8.49954 1.67026C6.41871 -0.410568 3.20316 -0.568708 1.3174 1.31704C-0.568351 3.20279 -0.410208 6.4183 1.67063 8.4992C4.25683 11.0854 11.2504 11.25 11.2504 11.25ZM8.49917 22.3302C11.0854 19.744 11.25 12.7505 11.25 12.7505C11.25 12.7505 4.25646 12.9151 1.67026 15.5013C-0.410575 17.5821 -0.568718 20.7977 1.31704 22.6834C3.20279 24.5692 6.41834 24.411 8.49917 22.3302ZM12.7515 12.7505C12.7515 12.7505 12.9161 19.744 15.5023 22.3302C17.5832 24.411 20.7987 24.5692 22.6845 22.6834C24.5702 20.7977 24.4121 17.5821 22.3312 15.5013C19.745 12.9151 12.7515 12.7505 12.7515 12.7505Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"18\"\r\n    height=\"19\"\r\n    viewBox=\"0 0 18 19\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <rect y=\"0.5\" width=\"18\" height=\"17.9992\" rx=\"8.99962\" fill=\"#F9F9F9\" />\r\n    <path\r\n      d=\"M9.3125 9.18705C9.3125 9.18705 9.38108 6.27313 10.4586 5.19556C11.3256 4.32856 12.6654 4.26267 13.4511 5.04839C14.2369 5.83411 14.171 7.17388 13.304 8.0409C12.2264 9.11847 9.3125 9.18705 9.3125 9.18705Z\"\r\n      fill=\"url(#paint0_linear_264_1723)\"\r\n    />\r\n    <path\r\n      d=\"M8.68754 9.18704C8.68754 9.18704 8.61895 6.27312 7.54138 5.19556C6.67438 4.32856 5.33459 4.26267 4.54887 5.04839C3.76316 5.8341 3.82905 7.17387 4.69605 8.0409C5.77361 9.11846 8.68754 9.18704 8.68754 9.18704Z\"\r\n      fill=\"url(#paint1_linear_264_1723)\"\r\n    />\r\n    <path\r\n      d=\"M7.54113 13.8037C8.6187 12.7262 8.68728 9.81226 8.68728 9.81226C8.68728 9.81226 5.77337 9.88084 4.69581 10.9584C3.82881 11.8254 3.76292 13.1652 4.54863 13.9509C5.33435 14.7366 6.67414 14.6707 7.54113 13.8037Z\"\r\n      fill=\"url(#paint2_linear_264_1723)\"\r\n    />\r\n    <path\r\n      d=\"M9.31287 9.81226C9.31287 9.81226 9.38145 12.7262 10.459 13.8037C11.326 14.6707 12.6658 14.7366 13.4515 13.9509L9.31287 9.81226Z\"\r\n      fill=\"#FBDB30\"\r\n    />\r\n    <path\r\n      d=\"M13.4515 13.9509C14.2372 13.1652 14.1714 11.8254 13.3043 10.9584C12.2268 9.88084 9.31287 9.81226 9.31287 9.81226L13.4515 13.9509Z\"\r\n      fill=\"#FBDB30\"\r\n    />\r\n    <path\r\n      d=\"M9.31287 9.81226C9.31287 9.81226 9.38145 12.7262 10.459 13.8037C11.326 14.6707 12.6658 14.7366 13.4515 13.9509L9.31287 9.81226Z\"\r\n      fill=\"#FF5E20\"\r\n    />\r\n    <defs>\r\n      <linearGradient\r\n        id=\"paint0_linear_264_1723\"\r\n        x1=\"9.3125\"\r\n        y1=\"9.18705\"\r\n        x2=\"13.4927\"\r\n        y2=\"5.02\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n      >\r\n        <stop stopColor=\"#FCC02D\" />\r\n        <stop offset=\"1\" stopColor=\"#FCBA2C\" />\r\n      </linearGradient>\r\n      <linearGradient\r\n        id=\"paint1_linear_264_1723\"\r\n        x1=\"4.29239\"\r\n        y1=\"4.92982\"\r\n        x2=\"8.68753\"\r\n        y2=\"9.18705\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n      >\r\n        <stop stopColor=\"#FD9B28\" />\r\n        <stop offset=\"1\" stopColor=\"#FD9F28\" />\r\n      </linearGradient>\r\n      <linearGradient\r\n        id=\"paint2_linear_264_1723\"\r\n        x1=\"4.6306\"\r\n        y1=\"14.0852\"\r\n        x2=\"8.75729\"\r\n        y2=\"9.71049\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n      >\r\n        <stop stopColor=\"#FE7A24\" />\r\n        <stop offset=\"1\" stopColor=\"#FE7B24\" />\r\n      </linearGradient>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M3.94903 4.125L0.000488281 7.06588H20.3608L19.2358 10.4424H11.0961L10.2799 12.8169H18.5299L17.2505 16.8034H5.71373L8.16226 9.61463L5.47108 7.65405L1.54461 19.875H16.2578L20.052 18.0016L21.3093 13.7972L18.8608 11.8584L22.6549 10.0503L24.0005 6.10737L21.3093 4.125H3.94903Z\"\r\n      fill=\"#FDFE00\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M3.94854 4.125L0 7.06588H20.3603L19.2353 10.4424H11.0956L10.2794 12.8169H18.5294L17.25 16.8034H5.71324L8.16177 9.61463L5.47059 7.65405L1.54412 19.875H16.2574L20.0515 18.0016L21.3088 13.7972L18.8603 11.8584L22.6544 10.0503L24 6.10737L21.3088 4.125H3.94854Z\"\r\n      fill=\"#11181C\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M3.94854 4.125L0 7.06588H20.3603L19.2353 10.4424H11.0956L10.2794 12.8169H18.5294L17.25 16.8034H5.71324L8.16177 9.61463L5.47059 7.65405L1.54412 19.875H16.2574L20.0515 18.0016L21.3088 13.7972L18.8603 11.8584L22.6544 10.0503L24 6.10737L21.3088 4.125H3.94854Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_5410_9742)\">\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenodd\"\r\n        d=\"M18.502 11.6102L14.9102 13.686V16.1586V17.8346L18.502 15.7589V11.6102ZM8.3947 6.55089L11.9865 8.62662L15.5783 6.55089L11.9865 4.47517L8.3947 6.55089ZM5.47382 13.6831V15.7589L6.44746 16.3185L9.06566 17.8317V13.6831L5.47382 11.6102V13.686V13.6831ZM3.52658 16.8809V19.1308L2.55293 18.5683L1.57935 18.0059V11.9986V5.99128L11.9865 -0.0160522L22.3937 5.99128V18.0087L17.1886 21.0124L14.9074 22.3286V20.0787L20.4464 16.8809V8.23831L12.9601 12.5611C12.9601 13.7602 12.9601 14.9566 12.9601 16.1557V23.4535L11.9865 24.0161L11.0129 23.4535L6.78149 21.0124L5.47382 20.2586V18.0087L11.0129 21.2065V12.5639L3.52658 8.24115V16.8838V16.8809ZM11.9865 10.8736L4.50023 6.55089L11.9865 2.22814L19.4728 6.55089L11.9865 10.8736Z\"\r\n        fill=\"#151718\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_5410_9742\">\r\n        <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_5410_9739)\">\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenodd\"\r\n        d=\"M18.502 11.6102L14.9102 13.686V16.1586V17.8346L18.502 15.7589V11.6102ZM8.3947 6.55089L11.9865 8.62662L15.5783 6.55089L11.9865 4.47517L8.3947 6.55089ZM5.47382 13.6831V15.7589L6.44746 16.3185L9.06566 17.8317V13.6831L5.47382 11.6102V13.686V13.6831ZM3.52658 16.8809V19.1308L2.55293 18.5683L1.57935 18.0059V11.9986V5.99128L11.9865 -0.0160522L22.3937 5.99128V18.0087L17.1886 21.0124L14.9074 22.3286V20.0787L20.4464 16.8809V8.23831L12.9601 12.5611C12.9601 13.7602 12.9601 14.9566 12.9601 16.1557V23.4535L11.9865 24.0161L11.0129 23.4535L6.78149 21.0124L5.47382 20.2586V18.0087L11.0129 21.2065V12.5639L3.52658 8.24115V16.8838V16.8809ZM11.9865 10.8736L4.50023 6.55089L11.9865 2.22814L19.4728 6.55089L11.9865 10.8736Z\"\r\n        fill=\"#FBFCFD\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <clipPath id=\"clip0_5410_9739\">\r\n        <rect width=\"24\" height=\"24\" fill=\"white\" />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <g clip-path=\"url(#clip0_5410_9710)\">\r\n      <path\r\n        d=\"M24.0007 12C24.0007 5.37258 18.6281 0 12.0007 0C5.37332 0 0.000732422 5.37258 0.000732422 12C0.000732422 18.6274 5.37332 24 12.0007 24C18.6281 24 24.0007 18.6274 24.0007 12Z\"\r\n        fill=\"url(#paint0_linear_5410_9710)\"\r\n      />\r\n      <path\r\n        fillRule=\"evenodd\"\r\n        clipRule=\"evenodd\"\r\n        d=\"M16.2856 11.7589L13.9161 13.1283V14.7594V15.8651L16.2856 14.4957V11.7589ZM9.61785 8.42133L11.9873 9.79066L14.3568 8.42133L11.9873 7.05199L9.61785 8.42133ZM7.69097 13.1264V14.4957L8.33328 14.8649L10.0605 15.8632V13.1264L7.69097 11.7589V13.1283V13.1264ZM6.4064 15.236V16.7202L5.76409 16.3491L5.12183 15.9781V12.0151V8.05215L11.9873 4.08917L18.8528 8.05215V15.9799L15.4191 17.9614L13.9142 18.8298V17.3455L17.5683 15.236V9.5345L12.6296 12.3862C12.6296 13.1773 12.6296 13.9665 12.6296 14.7576V19.5718L11.9873 19.9429L11.345 19.5718L8.55363 17.9614L7.69097 17.4642V15.9799L11.345 18.0895V12.3881L6.4064 9.53637V15.2378V15.236ZM11.9873 11.273L7.04871 8.42133L11.9873 5.56964L16.926 8.42133L11.9873 11.273Z\"\r\n        fill=\"white\"\r\n      />\r\n    </g>\r\n    <defs>\r\n      <linearGradient\r\n        id=\"paint0_linear_5410_9710\"\r\n        x1=\"20.7141\"\r\n        y1=\"21.0955\"\r\n        x2=\"-13.8528\"\r\n        y2=\"-21.7643\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n      >\r\n        <stop stopColor=\"#8F00FF\" />\r\n        <stop offset=\"0.531658\" stopColor=\"#78A5EA\" />\r\n        <stop offset=\"1\" stopColor=\"#00FFC2\" />\r\n      </linearGradient>\r\n      <clipPath id=\"clip0_5410_9710\">\r\n        <rect\r\n          width=\"24\"\r\n          height=\"24\"\r\n          fill=\"white\"\r\n          transform=\"translate(0.000732422)\"\r\n        />\r\n      </clipPath>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M3.94903 4.125L0.000488281 7.06588H20.3608L19.2358 10.4424H11.0961L10.2799 12.8169H18.5299L17.2505 16.8034H5.71373L8.16226 9.61463L5.47108 7.65405L1.54461 19.875H16.2578L20.052 18.0016L21.3093 13.7972L18.8608 11.8584L22.6549 10.0503L24.0005 6.10737L21.3093 4.125H3.94903Z\"\r\n      fill=\"#FDFE00\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M3.94854 4.125L0 7.06588H20.3603L19.2353 10.4424H11.0956L10.2794 12.8169H18.5294L17.25 16.8034H5.71324L8.16177 9.61463L5.47059 7.65405L1.54412 19.875H16.2574L20.0515 18.0016L21.3088 13.7972L18.8603 11.8584L22.6544 10.0503L24 6.10737L21.3088 4.125H3.94854Z\"\r\n      fill=\"#ECEDEE\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 24 24\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M3.94854 4.125L0 7.06588H20.3603L19.2353 10.4424H11.0956L10.2794 12.8169H18.5294L17.25 16.8034H5.71324L8.16177 9.61463L5.47059 7.65405L1.54412 19.875H16.2574L20.0515 18.0016L21.3088 13.7972L18.8603 11.8584L22.6544 10.0503L24 6.10737L21.3088 4.125H3.94854Z\"\r\n      fill=\"#11181C\"\r\n    />\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    width=\"25\"\r\n    height=\"24\"\r\n    viewBox=\"0 0 25 24\"\r\n    fill=\"none\"\r\n  >\r\n    <path\r\n      d=\"M21.1231 13.7635C20.9825 13.6838 20.8435 13.5996 20.7074 13.5154C19.4978 12.7577 19.4978 11.0075 20.7074 10.2513C20.8435 10.1656 20.9825 10.0829 21.1231 10.0031C22.4389 9.25284 22.8905 7.58976 22.1309 6.29002C21.3713 4.99029 19.6877 4.54424 18.3718 5.29454C18.3046 5.33294 18.2358 5.37135 18.167 5.40827C16.8676 6.11574 15.2542 5.21036 15.2513 3.74667V3.71861C15.2513 2.218 14.0192 1.00098 12.5 1.00098C10.9808 1.00098 9.74874 2.218 9.74874 3.71861C9.74874 3.72747 9.74874 3.73781 9.74874 3.74667C9.74575 5.21183 8.13238 6.11574 6.83301 5.40827C6.76423 5.37135 6.69694 5.33294 6.62816 5.29454C5.31234 4.54424 3.62869 4.98881 2.8691 6.29002C2.10952 7.58976 2.55959 9.25284 3.8769 10.0031C4.01745 10.0829 4.15651 10.1671 4.29258 10.2513C5.50224 11.009 5.50224 12.7592 4.29258 13.5154C4.15651 13.6011 4.01745 13.6838 3.8769 13.7635C2.56108 14.5138 2.10952 16.1754 2.8691 17.4766C3.62869 18.7778 5.31234 19.2224 6.62816 18.4721C6.69544 18.4337 6.76423 18.3953 6.83301 18.3584C8.13238 17.6509 9.74575 18.5563 9.74874 20.02C9.74874 20.0288 9.74874 20.0392 9.74874 20.048C9.74874 21.5487 10.9808 22.7657 12.5 22.7657C14.0192 22.7657 15.2513 21.5487 15.2513 20.048V20.02C15.2542 18.5548 16.8676 17.6509 18.167 18.3569C18.2358 18.3938 18.3031 18.4322 18.3718 18.4706C19.6877 19.2209 21.3713 18.7764 22.1309 17.4752C22.8905 16.1754 22.4404 14.5123 21.1231 13.762V13.7635ZM20.9646 16.812C20.7149 17.2403 20.2469 17.5062 19.7445 17.5062C19.5008 17.5062 19.2585 17.4412 19.0447 17.3201C17.0575 16.1872 14.7952 15.5876 12.5 15.5876C10.2048 15.5876 7.94248 16.1872 5.9553 17.3201C5.73849 17.4441 5.50224 17.5062 5.25552 17.5062C4.75312 17.5062 4.2866 17.2403 4.0354 16.812C3.64813 16.1488 3.8784 15.2981 4.54976 14.9156C8.58693 12.613 11.0945 8.32234 11.0945 3.71861C11.0945 2.95354 11.7255 2.33025 12.5 2.33025C13.2745 2.33025 13.9055 2.95354 13.9055 3.71861C13.9055 8.32234 16.4131 12.613 20.4502 14.9156C20.7747 15.1017 21.008 15.4 21.1052 15.7589C21.2023 16.1178 21.153 16.4915 20.9646 16.812Z\"\r\n      fill=\"url(#paint0_linear_13911_20989)\"\r\n    />\r\n    <defs>\r\n      <linearGradient\r\n        id=\"paint0_linear_13911_20989\"\r\n        x1=\"16.4271\"\r\n        y1=\"18.204\"\r\n        x2=\"10.7705\"\r\n        y2=\"4.66444\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n      >\r\n        <stop stopColor=\"#FFD569\" />\r\n        <stop offset=\"0.515056\" stopColor=\"#FC8E4F\" />\r\n        <stop offset=\"1\" stopColor=\"#FF697B\" />\r\n      </linearGradient>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n    width=\"25\"\r\n    height=\"24\"\r\n    viewBox=\"0 0 25 24\"\r\n    fill=\"none\"\r\n  >\r\n    <path\r\n      d=\"M21.1231 13.7635C20.9825 13.6838 20.8435 13.5996 20.7074 13.5154C19.4978 12.7577 19.4978 11.0075 20.7074 10.2513C20.8435 10.1656 20.9825 10.0829 21.1231 10.0031C22.4389 9.25284 22.8905 7.58976 22.1309 6.29002C21.3713 4.99029 19.6877 4.54424 18.3718 5.29454C18.3046 5.33294 18.2358 5.37135 18.167 5.40827C16.8676 6.11574 15.2542 5.21036 15.2513 3.74667V3.71861C15.2513 2.218 14.0192 1.00098 12.5 1.00098C10.9808 1.00098 9.74874 2.218 9.74874 3.71861C9.74874 3.72747 9.74874 3.73781 9.74874 3.74667C9.74575 5.21183 8.13238 6.11574 6.83301 5.40827C6.76423 5.37135 6.69694 5.33294 6.62816 5.29454C5.31234 4.54424 3.62869 4.98881 2.8691 6.29002C2.10952 7.58976 2.55959 9.25284 3.8769 10.0031C4.01745 10.0829 4.15651 10.1671 4.29258 10.2513C5.50224 11.009 5.50224 12.7592 4.29258 13.5154C4.15651 13.6011 4.01745 13.6838 3.8769 13.7635C2.56108 14.5138 2.10952 16.1754 2.8691 17.4766C3.62869 18.7778 5.31234 19.2224 6.62816 18.4721C6.69544 18.4337 6.76423 18.3953 6.83301 18.3584C8.13238 17.6509 9.74575 18.5563 9.74874 20.02C9.74874 20.0288 9.74874 20.0392 9.74874 20.048C9.74874 21.5487 10.9808 22.7657 12.5 22.7657C14.0192 22.7657 15.2513 21.5487 15.2513 20.048V20.02C15.2542 18.5548 16.8676 17.6509 18.167 18.3569C18.2358 18.3938 18.3031 18.4322 18.3718 18.4706C19.6877 19.2209 21.3713 18.7764 22.1309 17.4752C22.8905 16.1754 22.4404 14.5123 21.1231 13.762V13.7635ZM20.9646 16.812C20.7149 17.2403 20.2469 17.5062 19.7445 17.5062C19.5008 17.5062 19.2585 17.4412 19.0447 17.3201C17.0575 16.1872 14.7952 15.5876 12.5 15.5876C10.2048 15.5876 7.94248 16.1872 5.9553 17.3201C5.73849 17.4441 5.50224 17.5062 5.25552 17.5062C4.75312 17.5062 4.2866 17.2403 4.0354 16.812C3.64813 16.1488 3.8784 15.2981 4.54976 14.9156C8.58693 12.613 11.0945 8.32234 11.0945 3.71861C11.0945 2.95354 11.7255 2.33025 12.5 2.33025C13.2745 2.33025 13.9055 2.95354 13.9055 3.71861C13.9055 8.32234 16.4131 12.613 20.4502 14.9156C20.7747 15.1017 21.008 15.4 21.1052 15.7589C21.2023 16.1178 21.153 16.4915 20.9646 16.812Z\"\r\n      fill=\"url(#paint0_linear_13911_20989)\"\r\n    />\r\n    <defs>\r\n      <linearGradient\r\n        id=\"paint0_linear_13911_20989\"\r\n        x1=\"16.4271\"\r\n        y1=\"18.204\"\r\n        x2=\"10.7705\"\r\n        y2=\"4.66444\"\r\n        gradientUnits=\"userSpaceOnUse\"\r\n      >\r\n        <stop stopColor=\"#FFD569\" />\r\n        <stop offset=\"0.515056\" stopColor=\"#FC8E4F\" />\r\n        <stop offset=\"1\" stopColor=\"#FF697B\" />\r\n      </linearGradient>\r\n    </defs>\r\n  </svg>\r\n)\r\n","import { styled } from '../../stitches.config'\r\n\r\nconst Divider = styled('hr', {\r\n  width: '100%',\r\n  height: '1px',\r\n  borderWidth: 0,\r\n  backgroundColor: '$neutralLine',\r\n  variants: {\r\n    direction: {\r\n      vertical: {\r\n        height: '100%',\r\n        maxHeight: 16,\r\n        minHeight: 12,\r\n        width: 1,\r\n        margin: '0 5px',\r\n      },\r\n    },\r\n  },\r\n})\r\n\r\nexport default Divider\r\n","import faImage from '@fortawesome/free-solid-svg-icons/faImage'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport Flex from './Flex'\r\nimport { ComponentPropsWithoutRef, useEffect, useState } from 'react'\r\nimport { styled } from '@stitches/react'\r\nimport React from 'react'\r\n\r\nconst StyledImg = styled('img')\r\n\r\nconst Img = (props: ComponentPropsWithoutRef<typeof StyledImg>) => {\r\n  const [imageBroken, setImageBroken] = useState(false)\r\n\r\n  useEffect(() => {\r\n    if (imageBroken) {\r\n      setImageBroken(false)\r\n    }\r\n  }, [props.src])\r\n\r\n  return imageBroken || !props.src ? (\r\n    <Flex\r\n      css={{ ...props.css, background: '$neutralBgActive' }}\r\n      justify=\"center\"\r\n      align=\"center\"\r\n    >\r\n      <FontAwesomeIcon icon={faImage} size=\"2x\" />\r\n    </Flex>\r\n  ) : (\r\n    <StyledImg\r\n      {...props}\r\n      onError={(e: React.SyntheticEvent<HTMLImageElement, Event>) => {\r\n        setImageBroken(true)\r\n      }}\r\n    />\r\n  )\r\n}\r\n\r\nexport default Img\r\n","import { styled } from '../../../stitches.config'\r\nimport React, {\r\n  ComponentPropsWithoutRef,\r\n  Dispatch,\r\n  ReactElement,\r\n  SetStateAction,\r\n  useEffect,\r\n  useMemo,\r\n  useRef,\r\n} from 'react'\r\nimport {\r\n  Flex,\r\n  Box,\r\n  Text,\r\n  Button,\r\n  Loader,\r\n  Select,\r\n  ErrorWell,\r\n  Img,\r\n  DateInput,\r\n  CryptoCurrencyIcon,\r\n  Input,\r\n} from '../../primitives'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport Flatpickr from 'react-flatpickr'\r\nimport { Modal } from '../Modal'\r\nimport {\r\n  ListingData,\r\n  ListModalRenderer,\r\n  ListStep,\r\n  ListModalStepData,\r\n} from './ListModalRenderer'\r\nimport { faCalendar, faImages, faTag } from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport { useFallbackState, useReservoirClient } from '../../hooks'\r\nimport { Currency } from '../../types/Currency'\r\nimport SigninStep from '../SigninStep'\r\nimport { WalletClient, formatUnits, zeroAddress } from 'viem'\r\nimport ListCheckout from './ListCheckout'\r\nimport QuantitySelector from '../QuantitySelector'\r\nimport dayjs from 'dayjs'\r\nimport { CurrencySelector } from '../CurrencySelector'\r\nimport PriceBreakdown from './PriceBreakdown'\r\nimport FloorDropdown from './FloorDropdown'\r\nimport { ReservoirWallet } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { formatNumber } from '../../lib/numbers'\r\nimport { Dialog } from '../../primitives/Dialog'\r\n\r\ntype ListingCallbackData = {\r\n  listings?: ListingData[]\r\n  tokenId?: string\r\n  collectionId?: string\r\n}\r\n\r\nconst ModalCopy = {\r\n  title: 'List Item for sale',\r\n  ctaClose: 'Close',\r\n  ctaSetPrice: 'Set your price',\r\n  ctaList: 'List for Sale',\r\n  ctaAwaitingApproval: 'Waiting for approval...',\r\n  ctaGoToToken: 'Go to Token',\r\n}\r\n\r\ntype Props = Pick<Parameters<typeof Modal>['0'], 'trigger'> & {\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  tokenId?: string\r\n  collectionId?: string\r\n  chainId?: number\r\n  orderKind?: ListingData['listing']['orderKind']\r\n  currencies?: Currency[]\r\n  normalizeRoyalties?: boolean\r\n  oracleEnabled?: boolean\r\n  copyOverrides?: Partial<typeof ModalCopy>\r\n  feesBps?: string[]\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  onGoToToken?: () => any\r\n  onListingComplete?: (data: ListingCallbackData) => void\r\n  onListingError?: (error: Error, data: ListingCallbackData) => void\r\n  onClose?: (\r\n    data: ListingCallbackData,\r\n    stepData: ListModalStepData | null,\r\n    currentStep: ListStep\r\n  ) => void\r\n  onPointerDownOutside?: ComponentPropsWithoutRef<\r\n    typeof Dialog\r\n  >['onPointerDownOutside']\r\n}\r\n\r\nconst Image = styled('img', {})\r\n\r\nconst MINIMUM_AMOUNT = 0.000001\r\nconst MAXIMUM_AMOUNT = Infinity\r\n\r\nexport function ListModal({\r\n  openState,\r\n  trigger,\r\n  tokenId,\r\n  collectionId,\r\n  chainId,\r\n  orderKind,\r\n  currencies,\r\n  normalizeRoyalties,\r\n  oracleEnabled = false,\r\n  copyOverrides,\r\n  feesBps,\r\n  walletClient,\r\n  onGoToToken,\r\n  onListingComplete,\r\n  onListingError,\r\n  onClose,\r\n  onPointerDownOutside,\r\n}: Props): ReactElement {\r\n  const copy: typeof ModalCopy = { ...ModalCopy, ...copyOverrides }\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n\r\n  const datetimeElement = useRef<Flatpickr | null>(null)\r\n\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const modalChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  return (\r\n    <ListModalRenderer\r\n      open={open}\r\n      orderKind={orderKind}\r\n      chainId={modalChain?.id}\r\n      tokenId={tokenId}\r\n      collectionId={collectionId}\r\n      currencies={currencies}\r\n      normalizeRoyalties={normalizeRoyalties}\r\n      oracleEnabled={oracleEnabled}\r\n      feesBps={feesBps}\r\n      walletClient={walletClient}\r\n    >\r\n      {({\r\n        loading,\r\n        token,\r\n        quantityAvailable,\r\n        collection,\r\n        usdPrice,\r\n        listStep,\r\n        marketplace,\r\n        exchange,\r\n        expirationOption,\r\n        expirationOptions,\r\n        royaltyBps,\r\n        listingData,\r\n        transactionError,\r\n        stepData,\r\n        price,\r\n        currencies,\r\n        currency,\r\n        quantity,\r\n        setPrice,\r\n        listToken,\r\n        setCurrency,\r\n        setExpirationOption,\r\n        setQuantity,\r\n      }) => {\r\n        const source = client?.source ? client?.source : marketplace?.domain\r\n\r\n        const minimumDate = useMemo(() => {\r\n          return dayjs().add(1, 'h').format('MM/DD/YYYY h:mm A')\r\n        }, [open])\r\n\r\n        const expirationDate = useMemo(() => {\r\n          if (expirationOption && expirationOption.relativeTime) {\r\n            const newExpirationTime = expirationOption.relativeTimeUnit\r\n              ? dayjs().add(\r\n                  expirationOption.relativeTime,\r\n                  expirationOption.relativeTimeUnit\r\n                )\r\n              : dayjs.unix(expirationOption.relativeTime)\r\n            return newExpirationTime.format('MM/DD/YYYY h:mm A')\r\n          }\r\n          return ''\r\n        }, [expirationOption])\r\n\r\n        useEffect(() => {\r\n          if (listStep === ListStep.Complete && onListingComplete) {\r\n            const data: ListingCallbackData = {\r\n              tokenId: tokenId,\r\n              collectionId: collectionId,\r\n              listings: listingData,\r\n            }\r\n            onListingComplete(data)\r\n          }\r\n        }, [listStep])\r\n\r\n        useEffect(() => {\r\n          if (transactionError && onListingError) {\r\n            const data: ListingCallbackData = {\r\n              tokenId: tokenId,\r\n              collectionId: collectionId,\r\n              listings: listingData,\r\n            }\r\n            onListingError(transactionError, data)\r\n          }\r\n        }, [transactionError])\r\n\r\n        const floorAskPrice = collection?.floorAsk?.price\r\n        const decimalFloorPrice = collection?.floorAsk?.price?.amount?.decimal\r\n        const nativeFloorPrice = collection?.floorAsk?.price?.amount?.native\r\n        const usdFloorPrice = collection?.floorAsk?.price?.amount?.usd\r\n        const defaultCurrency = currencies?.find(\r\n          (currency) => currency?.contract === zeroAddress\r\n        )\r\n\r\n        const floorButtonEnabled =\r\n          (currency.contract === floorAskPrice?.currency?.contract &&\r\n            decimalFloorPrice) ||\r\n          (currency.symbol === 'USDC' && usdFloorPrice) ||\r\n          (nativeFloorPrice && currency.contract === zeroAddress) ||\r\n          (nativeFloorPrice && defaultCurrency)\r\n        const minimumAmount = exchange?.minPriceRaw\r\n          ? Number(\r\n              formatUnits(\r\n                BigInt(exchange.minPriceRaw),\r\n                currency?.decimals || 18\r\n              )\r\n            )\r\n          : MINIMUM_AMOUNT\r\n        const maximumAmount = exchange?.maxPriceRaw\r\n          ? Number(\r\n              formatUnits(\r\n                BigInt(exchange.maxPriceRaw),\r\n                currency?.decimals || 18\r\n              )\r\n            )\r\n          : MAXIMUM_AMOUNT\r\n\r\n        const withinPricingBounds =\r\n          price &&\r\n          Number(price) !== 0 &&\r\n          Number(price) <= maximumAmount &&\r\n          Number(price) >= minimumAmount\r\n\r\n        const canPurchase = price !== '' && withinPricingBounds\r\n\r\n        const handleSetFloor = () => {\r\n          // If currency matches floor ask currency, use decimal floor price\r\n          if (\r\n            currency.contract === floorAskPrice?.currency?.contract &&\r\n            decimalFloorPrice\r\n          ) {\r\n            setPrice(decimalFloorPrice.toString())\r\n          }\r\n\r\n          // If currency is USDC, use usd floor price\r\n          else if (currency.symbol === 'USDC' && usdFloorPrice) {\r\n            setPrice(usdFloorPrice?.toString())\r\n          } else if (nativeFloorPrice) {\r\n            // If currency is native currency, use native floor price\r\n            if (currency.contract === zeroAddress) {\r\n              setPrice(nativeFloorPrice.toString())\r\n            }\r\n            // Fallback to default currency if it exists\r\n            else {\r\n              if (defaultCurrency) {\r\n                setCurrency(defaultCurrency)\r\n                setPrice(nativeFloorPrice.toString())\r\n              }\r\n            }\r\n          }\r\n        }\r\n\r\n        return (\r\n          <Modal\r\n            trigger={trigger}\r\n            title={copy.title}\r\n            open={open}\r\n            onOpenChange={(open) => {\r\n              if (!open && onClose) {\r\n                const data: ListingCallbackData = {\r\n                  tokenId: tokenId,\r\n                  collectionId: collectionId,\r\n                  listings: listingData,\r\n                }\r\n                onClose(data, stepData, listStep)\r\n              }\r\n\r\n              setOpen(open)\r\n            }}\r\n            loading={loading}\r\n            onPointerDownOutside={(e) => {\r\n              if (\r\n                e.target instanceof Element &&\r\n                datetimeElement.current?.flatpickr?.calendarContainer &&\r\n                datetimeElement.current.flatpickr.calendarContainer.contains(\r\n                  e.target\r\n                )\r\n              ) {\r\n                e.preventDefault()\r\n              }\r\n              if (onPointerDownOutside) {\r\n                onPointerDownOutside(e)\r\n              }\r\n            }}\r\n            onFocusCapture={(e) => {\r\n              e.stopPropagation()\r\n            }}\r\n          >\r\n            {!loading && listStep == ListStep.Unavailable && (\r\n              <Flex\r\n                direction=\"column\"\r\n                align=\"center\"\r\n                css={{ p: '$4', gap: '$5' }}\r\n              >\r\n                <Box css={{ color: '$neutralSolid', mt: 48 }}>\r\n                  <FontAwesomeIcon\r\n                    icon={faTag}\r\n                    style={{ width: '32px', height: '32px' }}\r\n                  />\r\n                </Box>\r\n\r\n                <Text style=\"h6\" css={{ mb: '$3', textAlign: 'center' }}>\r\n                  Listing is not available for this collection.\r\n                </Text>\r\n                <Button\r\n                  css={{ width: '100%' }}\r\n                  onClick={() => {\r\n                    setOpen(false)\r\n                  }}\r\n                >\r\n                  {copy.ctaClose}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n            {!loading && listStep == ListStep.SetPrice && (\r\n              <Flex direction=\"column\">\r\n                {transactionError && <ErrorWell error={transactionError} />}\r\n                <ListCheckout\r\n                  collection={collection}\r\n                  token={token}\r\n                  chain={modalChain}\r\n                />\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ width: '100%', p: '$4', gap: 24 }}\r\n                >\r\n                  {quantityAvailable > 1 && (\r\n                    <Flex\r\n                      align=\"center\"\r\n                      justify=\"between\"\r\n                      css={{ width: '100%', gap: '$3', '@bp1': { gap: '$6' } }}\r\n                    >\r\n                      <Flex\r\n                        align=\"start\"\r\n                        direction=\"column\"\r\n                        css={{ gap: '$1', flexShrink: 0 }}\r\n                      >\r\n                        <Text style=\"subtitle2\">Quantity</Text>\r\n                        <Text style=\"body3\" color=\"subtle\">\r\n                          {quantityAvailable} items available\r\n                        </Text>\r\n                      </Flex>\r\n                      <QuantitySelector\r\n                        quantity={quantity}\r\n                        setQuantity={setQuantity}\r\n                        min={1}\r\n                        max={quantityAvailable}\r\n                        css={{ width: '100%', justifyContent: 'space-between' }}\r\n                      />\r\n                    </Flex>\r\n                  )}\r\n\r\n                  <Flex direction=\"column\" css={{ gap: '$2', width: '100%' }}>\r\n                    <Text style=\"subtitle2\">Enter a price</Text>\r\n                    <Flex align=\"center\" justify=\"between\" css={{ gap: '$2' }}>\r\n                      <Input\r\n                        type=\"number\"\r\n                        value={price}\r\n                        onChange={(e) => {\r\n                          setPrice(e.target.value)\r\n                        }}\r\n                        placeholder=\"Amount\"\r\n                        css={{ width: '100%' }}\r\n                        containerCss={{ width: '100%', height: 44 }}\r\n                      />\r\n                      {currencies.length > 1 ? (\r\n                        <CurrencySelector\r\n                          chainId={chainId}\r\n                          currency={currency}\r\n                          currencies={currencies}\r\n                          setCurrency={setCurrency}\r\n                          triggerCss={{\r\n                            backgroundColor: '$neutralBgHover',\r\n                            borderRadius: 8,\r\n                            p: '$3',\r\n                            width: 120,\r\n                            flexShrink: 0,\r\n                            height: 44,\r\n                          }}\r\n                          valueCss={{\r\n                            justifyContent: 'space-between',\r\n                            width: '100%',\r\n                          }}\r\n                        />\r\n                      ) : (\r\n                        <Flex align=\"center\" css={{ flexShrink: 0, px: '$2' }}>\r\n                          <Box\r\n                            css={{\r\n                              width: 'auto',\r\n                              height: 20,\r\n                            }}\r\n                          >\r\n                            {/* <CryptoCurrencyIcon\r\n                              chainId={chainId}\r\n                              css={{ height: 18 }}\r\n                              address={currency.contract}\r\n                            /> */}\r\n                          </Box>\r\n                          <Text\r\n                            style=\"body1\"\r\n                            color=\"subtle\"\r\n                            css={{ ml: '$1' }}\r\n                            as=\"p\"\r\n                          >\r\n                            {currency.symbol}\r\n                          </Text>\r\n                        </Flex>\r\n                      )}\r\n                      {floorButtonEnabled ? (\r\n                        <Button\r\n                          color=\"secondary\"\r\n                          size=\"none\"\r\n                          css={{\r\n                            height: 44,\r\n                            px: '$4',\r\n                            borderRadius: 8,\r\n                            fontWeight: 500,\r\n                          }}\r\n                          onClick={() => handleSetFloor()}\r\n                        >\r\n                          Floor\r\n                        </Button>\r\n                      ) : null}\r\n                      <FloorDropdown\r\n                        token={token}\r\n                        currency={currency}\r\n                        defaultCurrency={defaultCurrency}\r\n                        setPrice={setPrice}\r\n                        setCurrency={setCurrency}\r\n                      />\r\n                    </Flex>\r\n                    {Number(price) !== 0 && !withinPricingBounds && (\r\n                      <Box>\r\n                        <Text style=\"body2\" color=\"error\">\r\n                          {maximumAmount !== Infinity\r\n                            ? `Amount must be between ${formatNumber(\r\n                                minimumAmount\r\n                              )} - ${formatNumber(maximumAmount)}`\r\n                            : `Amount must be higher than ${formatNumber(\r\n                                minimumAmount\r\n                              )}`}\r\n                        </Text>\r\n                      </Box>\r\n                    )}\r\n                    {collection &&\r\n                      collection?.floorAsk?.price?.amount?.native !==\r\n                        undefined &&\r\n                      Number(price) !== 0 &&\r\n                      Number(price) >= minimumAmount &&\r\n                      currency.contract === zeroAddress &&\r\n                      Number(price) <\r\n                        collection?.floorAsk?.price.amount.native && (\r\n                        <Box>\r\n                          <Text style=\"body2\" color=\"error\">\r\n                            Price is{' '}\r\n                            {Math.round(\r\n                              ((collection.floorAsk.price.amount.native -\r\n                                +price) /\r\n                                ((collection.floorAsk.price.amount.native +\r\n                                  +price) /\r\n                                  2)) *\r\n                                100 *\r\n                                1000\r\n                            ) / 1000}\r\n                            % below the floor\r\n                          </Text>\r\n                        </Box>\r\n                      )}\r\n                  </Flex>\r\n                  {/* <Flex direction=\"column\" css={{ width: '100%', gap: '$2' }}>\r\n                    <Text style=\"subtitle2\">Expiration Date</Text>\r\n                    <Flex align=\"center\" css={{ gap: '$2' }}>\r\n                      <Select\r\n                        value={expirationOption?.text || ''}\r\n                        onValueChange={(value: string) => {\r\n                          const option = expirationOptions.find(\r\n                            (option) => option.value == value\r\n                          )\r\n                          if (option) {\r\n                            setExpirationOption(option)\r\n                          }\r\n                        }}\r\n                        css={{ borderRadius: 8, maxWidth: 160, height: 44 }}\r\n                      >\r\n                        {expirationOptions\r\n                          .filter(({ value }) => value !== 'custom')\r\n                          .map((option) => (\r\n                            <Select.Item key={option.text} value={option.value}>\r\n                              <Select.ItemText>{option.text}</Select.ItemText>\r\n                            </Select.Item>\r\n                          ))}\r\n                      </Select>\r\n                      <DateInput\r\n                        ref={datetimeElement}\r\n                        icon={\r\n                          <FontAwesomeIcon\r\n                            icon={faCalendar}\r\n                            width={14}\r\n                            height={16}\r\n                          />\r\n                        }\r\n                        value={expirationDate}\r\n                        options={{\r\n                          chainId: modalChain?.id,\r\n                          minDate: minimumDate,\r\n                          enableTime: true,\r\n                          minuteIncrement: 1,\r\n                        }}\r\n                        defaultValue={expirationDate}\r\n                        onChange={(e: any) => {\r\n                          if (Array.isArray(e)) {\r\n                            const customOption = expirationOptions.find(\r\n                              (option) => option.value === 'custom'\r\n                            )\r\n                            if (customOption) {\r\n                              setExpirationOption({\r\n                                ...customOption,\r\n                                relativeTime: e[0] / 1000,\r\n                              })\r\n                            }\r\n                          }\r\n                        }}\r\n                        containerCss={{\r\n                          height: 44,\r\n                          width: 46,\r\n                          '@bp1': {\r\n                            flex: 1,\r\n                            width: '100%',\r\n                          },\r\n                        }}\r\n                        css={{\r\n                          padding: 0,\r\n                          '@bp1': {\r\n                            padding: '12px 16px 12px 48px',\r\n                          },\r\n                        }}\r\n                      />\r\n                    </Flex>\r\n                  </Flex> */}\r\n                  <PriceBreakdown\r\n                    price={price}\r\n                    usdPrice={usdPrice}\r\n                    currency={currency}\r\n                    quantity={quantity}\r\n                    royaltyBps={royaltyBps}\r\n                    marketplace={marketplace}\r\n                  />\r\n                </Flex>\r\n                <Box css={{ p: '$4', width: '100%' }}>\r\n                  <Button\r\n                    disabled={canPurchase ? false : true}\r\n                    onClick={() => listToken()}\r\n                    css={{ width: '100%' }}\r\n                  >\r\n                    {copy.ctaList}\r\n                  </Button>\r\n                </Box>\r\n              </Flex>\r\n            )}\r\n            {!loading && listStep == ListStep.Listing && (\r\n              <Flex direction=\"column\">\r\n                <ListCheckout\r\n                  collection={collection}\r\n                  token={token}\r\n                  price={price}\r\n                  currency={currency}\r\n                  quantity={quantity}\r\n                  expirationOption={expirationOption}\r\n                  containerCss={{\r\n                    borderBottom: '1px solid',\r\n                    borderBottomColor: '$neutralLine',\r\n                    borderColor: '$neutralLine',\r\n                  }}\r\n                />\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ width: '100%', p: 24, gap: '$4' }}\r\n                >\r\n                  {stepData && stepData.currentStep.id === 'auth' ? (\r\n                    <SigninStep css={{ mt: 48, mb: '$4', gap: 20 }} />\r\n                  ) : null}\r\n                  {stepData && stepData.currentStep.id !== 'auth' ? (\r\n                    <>\r\n                      {stepData.currentStep.kind === 'transaction' &&\r\n                        stepData.currentStep.action === 'approval' && (\r\n                          <Text css={{ textAlign: 'center' }} style=\"h6\">\r\n                            Grant the approval\r\n                          </Text>\r\n                        )}\r\n\r\n                      {stepData.currentStep.action !== 'approval' && (\r\n                        <Text css={{ textAlign: 'center' }} style=\"h6\">\r\n                          {stepData.currentStep.kind === 'transaction'\r\n                            ? 'Approve collection(s)'\r\n                            : 'Confirm listing'}\r\n                        </Text>\r\n                      )}\r\n                      <Text\r\n                        css={{\r\n                          textAlign: 'center',\r\n                          maxWidth: 395,\r\n                          mx: 'auto',\r\n                        }}\r\n                        style=\"body1\"\r\n                        color=\"subtle\"\r\n                      >\r\n                        {stepData?.currentStep.description}\r\n                      </Text>\r\n                      <Flex css={{ color: '$neutralSolid' }}>\r\n                        <FontAwesomeIcon icon={faTag} size=\"2x\" />\r\n                      </Flex>\r\n                    </>\r\n                  ) : null}\r\n                  {!stepData && (\r\n                    <Flex\r\n                      css={{ height: '100%', py: '$5' }}\r\n                      justify=\"center\"\r\n                      align=\"center\"\r\n                    >\r\n                      <Loader />\r\n                    </Flex>\r\n                  )}\r\n                </Flex>\r\n                <Flex css={{ width: '100%', p: '$4' }}>\r\n                  <Button css={{ width: '100%', mt: 'auto' }} disabled={true}>\r\n                    <Loader />\r\n                    {copy.ctaAwaitingApproval}\r\n                  </Button>\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n            {!loading && listStep == ListStep.Complete && (\r\n              <Flex direction=\"column\" align=\"center\">\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ width: '100%', px: '$5', pt: '$5', gap: 24 }}\r\n                >\r\n                  <Flex\r\n                    direction=\"column\"\r\n                    align=\"center\"\r\n                    css={{ width: '100%', gap: '$2', overflow: 'hidden' }}\r\n                  >\r\n                    <Img\r\n                      src={token?.token?.image || collection?.image}\r\n                      alt={token?.token?.name || token?.token?.tokenId}\r\n                      css={{\r\n                        width: 120,\r\n                        height: 120,\r\n                        aspectRatio: '1/1',\r\n                        borderRadius: 4,\r\n                        objectFit: 'cover',\r\n                      }}\r\n                    />\r\n                    <Text style=\"h6\" ellipsify>\r\n                      {token?.token?.tokenId\r\n                        ? `#${token?.token?.tokenId}`\r\n                        : token?.token?.name}\r\n                    </Text>\r\n                    <Text style=\"subtitle2\" color=\"accent\" ellipsify>\r\n                      {collection?.name}\r\n                    </Text>\r\n                  </Flex>\r\n                  <Text style=\"h5\" as=\"h5\">\r\n                    Your item has been listed!\r\n                  </Text>\r\n\r\n                  {/* {source ? (\r\n                    <Flex direction=\"column\" align=\"center\" css={{ gap: '$2' }}>\r\n                      <Text style=\"subtitle3\" color=\"subtle\" as=\"p\">\r\n                        View Listing on\r\n                      </Text>\r\n                      <a\r\n                        target=\"_blank\"\r\n                        href={`${modalChain?.baseApiUrl}/redirect/sources/${source}/tokens/${token?.token?.contract}:${token?.token?.tokenId}/link/v2`}\r\n                      >\r\n                        <Image\r\n                          css={{ width: 24, borderRadius: 4 }}\r\n                          src={marketplace?.imageUrl}\r\n                        />\r\n                      </a>\r\n                    </Flex>\r\n                  ) : null} */}\r\n                </Flex>\r\n                <Flex\r\n                  css={{\r\n                    p: '$4',\r\n                    width: '100%',\r\n                    flexDirection: 'column',\r\n                    gap: '$3',\r\n                    '@bp1': {\r\n                      flexDirection: 'row',\r\n                    },\r\n                  }}\r\n                >\r\n                  {!!onGoToToken ? (\r\n                    <>\r\n                      <Button\r\n                        onClick={() => {\r\n                          setOpen(false)\r\n                        }}\r\n                        css={{ flex: 1 }}\r\n                        color=\"secondary\"\r\n                      >\r\n                        {copy.ctaClose}\r\n                      </Button>\r\n                      <Button\r\n                        style={{ flex: 1 }}\r\n                        color=\"primary\"\r\n                        onClick={() => {\r\n                          onGoToToken()\r\n                        }}\r\n                      >\r\n                        {copy.ctaGoToToken}\r\n                      </Button>\r\n                    </>\r\n                  ) : (\r\n                    <Button\r\n                      onClick={() => {\r\n                        setOpen(false)\r\n                      }}\r\n                      style={{ flex: 1 }}\r\n                      color=\"primary\"\r\n                    >\r\n                      {copy.ctaClose}\r\n                    </Button>\r\n                  )}\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n          </Modal>\r\n        )\r\n      }}\r\n    </ListModalRenderer>\r\n  )\r\n}\r\n\r\nListModal.Custom = ListModalRenderer\r\n","import { styled } from '../../stitches.config'\r\nimport Flex from './Flex'\r\nimport Box from './Box'\r\nimport React, {\r\n  ComponentPropsWithoutRef,\r\n  ElementRef,\r\n  forwardRef,\r\n  ReactNode,\r\n} from 'react'\r\nimport { CSS } from '@stitches/react'\r\n\r\nconst StyledInput = styled('input', {\r\n  all: 'unset',\r\n  width: '100%',\r\n  px: 16,\r\n  py: 12,\r\n  borderRadius: 8,\r\n  fontFamily: '$body',\r\n  fontSize: 16,\r\n  color: '$neutralTextContrast',\r\n  backgroundColor: '$inputBackground',\r\n  $$focusColor: '$colors$accentBorderHover',\r\n  '&:placeholder': { color: '$neutralText' },\r\n  '&:focus': { boxShadow: '0 0 0 2px $$focusColor' },\r\n\r\n  '&::-webkit-outer-spin-button, &::-webkit-inner-spin-button': {\r\n    '-webkit-appearance': 'none',\r\n    margin: 0,\r\n  },\r\n\r\n  '&[type=number]': {\r\n    '-moz-appearance': 'textfield',\r\n  },\r\n})\r\n\r\nexport const Input = forwardRef<\r\n  ElementRef<typeof StyledInput>,\r\n  ComponentPropsWithoutRef<typeof StyledInput> & {\r\n    icon?: ReactNode\r\n    containerCss?: CSS\r\n    iconCss?: CSS\r\n  }\r\n>(({ children, icon, containerCss, iconCss, ...props }, forwardedRef) => (\r\n  <Flex css={{ ...containerCss, position: 'relative' }}>\r\n    {icon && (\r\n      <Box\r\n        css={{\r\n          position: 'absolute',\r\n          top: '50%',\r\n          transform: 'translateY(-50%)',\r\n          left: 16,\r\n          color: '$neutralTextContrast',\r\n          pointerEvents: 'none',\r\n          ...iconCss,\r\n        }}\r\n      >\r\n        {icon}\r\n      </Box>\r\n    )}\r\n    <StyledInput\r\n      css={{ pl: icon ? 48 : 16, ...props.css }}\r\n      ref={forwardedRef}\r\n      {...props}\r\n    />\r\n  </Flex>\r\n))\r\n\r\nexport default Input\r\n","import React, {\r\n  FC,\r\n  useState,\r\n  ReactNode,\r\n  useCallback,\r\n  useEffect,\r\n  useMemo,\r\n} from 'react'\r\nimport {\r\n  useTokens,\r\n  useCoinConversion,\r\n  useReservoirClient,\r\n  useMarketplaces,\r\n  useCollections,\r\n  useUserTokens,\r\n  useChainCurrency,\r\n} from '../../hooks'\r\nimport { createConfig, useAccount, useConfig, useWalletClient } from 'wagmi'\r\nimport {\r\n  Execute,\r\n  ReservoirClientActions,\r\n  ReservoirWallet,\r\n  axios,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport dayjs from 'dayjs'\r\nimport { Marketplace } from '../../hooks/useMarketplaces'\r\nimport { ExpirationOption } from '../../types/ExpirationOption'\r\nimport defaultExpirationOptions from '../../lib/defaultExpirationOptions'\r\nimport { Currency } from '../../types/Currency'\r\nimport {\r\n  WalletClient,\r\n  parseUnits,\r\n  zeroAddress,\r\n  createPublicClient,\r\n  http,\r\n} from 'viem'\r\nimport { getAccount, getPublicClient, switchChain } from 'wagmi/actions'\r\nimport { ContractConfig, ChainConfig } from '../../constants/common'\r\n\r\nexport enum ListStep {\r\n  Unavailable,\r\n  SetPrice,\r\n  Listing,\r\n  Complete,\r\n}\r\n\r\nexport type Listing = Parameters<\r\n  ReservoirClientActions['listToken']\r\n>['0']['listings'][0]\r\n\r\ntype Exchange = NonNullable<Marketplace['exchanges']>['string']\r\n\r\nexport type ListingData = {\r\n  listing: Listing\r\n  marketplace: Marketplace\r\n}\r\n\r\nexport type ListModalStepData = {\r\n  totalSteps: number\r\n  stepProgress: number\r\n  currentStep: Execute['steps'][0]\r\n  listingData: ListingData[]\r\n}\r\n\r\ntype ChildrenProps = {\r\n  loading: boolean\r\n  token?: NonNullable<NonNullable<ReturnType<typeof useTokens>>['data']>[0]\r\n  quantityAvailable: number\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  listStep: ListStep\r\n  usdPrice: number\r\n  expirationOptions: ExpirationOption[]\r\n  expirationOption: ExpirationOption\r\n  marketplace?: Marketplace\r\n  exchange?: Exchange\r\n  listingData: ListingData[]\r\n  transactionError?: Error | null\r\n  stepData: ListModalStepData | null\r\n  price: string\r\n  currencies: Currency[]\r\n  currency: Currency\r\n  quantity: number\r\n  royaltyBps?: number\r\n  setListStep: React.Dispatch<React.SetStateAction<ListStep>>\r\n  setExpirationOption: React.Dispatch<React.SetStateAction<ExpirationOption>>\r\n  setPrice: React.Dispatch<React.SetStateAction<string>>\r\n  setCurrency: (currency: Currency) => void\r\n  setQuantity: React.Dispatch<React.SetStateAction<number>>\r\n  listToken: (options?: { royaltyBps?: number }) => void\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  tokenId?: string\r\n  collectionId?: string\r\n  chainId?: number\r\n  orderKind?: ListingData['listing']['orderKind']\r\n  currencies?: Currency[]\r\n  normalizeRoyalties?: boolean\r\n  oracleEnabled: boolean\r\n  feesBps?: string[]\r\n  children: (props: ChildrenProps) => ReactNode\r\n  walletClient?: ReservoirWallet | WalletClient\r\n}\r\n\r\nconst expirationOptions = [\r\n  ...defaultExpirationOptions,\r\n  {\r\n    text: 'Custom',\r\n    value: 'custom',\r\n    relativeTime: null,\r\n    relativeTimeUnit: null,\r\n  },\r\n]\r\n\r\nexport const ListModalRenderer: FC<Props> = ({\r\n  open,\r\n  tokenId,\r\n  collectionId,\r\n  orderKind,\r\n  currencies: preferredCurrencies,\r\n  chainId,\r\n  normalizeRoyalties,\r\n  oracleEnabled = false,\r\n  feesBps,\r\n  children,\r\n  walletClient,\r\n}) => {\r\n  const account = useAccount()\r\n\r\n  const client = useReservoirClient()\r\n  const currentChain = client?.currentChain()\r\n  const config = useConfig()\r\n\r\n  const rendererChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const { data: wagmiWallet } = useWalletClient({ chainId: rendererChain?.id })\r\n\r\n  const wallet = walletClient || wagmiWallet\r\n\r\n  const [listStep, setListStep] = useState<ListStep>(ListStep.SetPrice)\r\n  const [listingData, setListingData] = useState<ListingData[]>([])\r\n  const [publicClient, setPublicClient] = useState<any>(undefined)\r\n  const [allMarketplaces] = useMarketplaces(\r\n    collectionId,\r\n    tokenId,\r\n    true,\r\n    feesBps,\r\n    rendererChain?.id,\r\n    open\r\n  )\r\n\r\n  const marketplace = useMemo(\r\n    () =>\r\n      allMarketplaces.find(\r\n        (marketplace) => marketplace.orderbook === 'reservoir'\r\n      ),\r\n    [allMarketplaces]\r\n  )\r\n\r\n  const auraEVMTestnet = ChainConfig[chainId ? chainId : 1235]\r\n\r\n  useEffect(() => {\r\n    setPublicClient(\r\n      createPublicClient({\r\n        chain: ChainConfig[chainId ? chainId : 1235],\r\n        transport: http(),\r\n      })\r\n    )\r\n  }, [])\r\n\r\n  const [transactionError, setTransactionError] = useState<Error | null>()\r\n  const [stepData, setStepData] = useState<ListModalStepData | null>(null)\r\n  const [price, setPrice] = useState('')\r\n  const chainCurrency = useChainCurrency(rendererChain?.id)\r\n  const defaultCurrency = {\r\n    contract: chainCurrency.address,\r\n    symbol: chainCurrency.symbol,\r\n  }\r\n  const [currencies, setCurrencies] = useState<Currency[] | undefined>(\r\n    preferredCurrencies\r\n  )\r\n  const [currency, setCurrency] = useState<Currency>(\r\n    preferredCurrencies && preferredCurrencies[0]\r\n      ? preferredCurrencies[0]\r\n      : defaultCurrency\r\n  )\r\n  const [quantity, setQuantity] = useState(1)\r\n  const [isApproveModule, setIsApproveModule] = useState(false)\r\n  const [isApproveNft, setIsApproveNft] = useState(false)\r\n  const contract = collectionId ? collectionId?.split(':')[0] : undefined\r\n  const { data: collections } = useCollections(\r\n    open && {\r\n      id: collectionId,\r\n      normalizeRoyalties,\r\n    },\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n  const collection = collections && collections[0] ? collections[0] : undefined\r\n\r\n  const [expirationOption, setExpirationOption] = useState<ExpirationOption>(\r\n    expirationOptions[5]\r\n  )\r\n\r\n  const royaltyBps = collection?.royalties?.bps\r\n    ? collection?.royalties?.bps\r\n    : marketplace?.royalties?.maxBps\r\n    ? marketplace?.royalties?.maxBps\r\n    : 0\r\n\r\n  const { data: tokens } = useTokens(\r\n    open && {\r\n      tokens: [`${contract}:${tokenId}`],\r\n      includeAttributes: true,\r\n      includeLastSale: true,\r\n      normalizeRoyalties,\r\n    },\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    rendererChain?.id\r\n  )\r\n\r\n  const token = tokens && tokens.length > 0 ? tokens[0] : undefined\r\n  const is1155 = token?.token?.kind === 'erc1155'\r\n\r\n  const { data: userTokens } = useUserTokens(\r\n    open && is1155 ? account.address : undefined,\r\n    {\r\n      tokens: [`${contract}:${tokenId}`],\r\n    },\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n\r\n  const quantityAvailable =\r\n    is1155 && userTokens[0]\r\n      ? Number(userTokens[0].ownership?.tokenCount || 1)\r\n      : 1\r\n\r\n  const coinConversion = useCoinConversion(\r\n    open ? 'USD' : undefined,\r\n    currency.symbol,\r\n    currency.coinGeckoId\r\n  )\r\n  const usdPrice = coinConversion.length > 0 ? coinConversion[0].price : 0\r\n\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setListStep(ListStep.SetPrice)\r\n      setTransactionError(null)\r\n      setPrice('')\r\n      setStepData(null)\r\n      setExpirationOption(expirationOptions[5])\r\n      setQuantity(1)\r\n      setCurrency(defaultCurrency)\r\n    }\r\n  }, [open])\r\n\r\n  open\r\n    ? (axios.defaults.headers.common['x-rkui-context'] = 'listModalRenderer')\r\n    : delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  const exchange = useMemo(() => {\r\n    const exchanges: Record<string, Exchange> = marketplace?.exchanges || {}\r\n    const exchange = orderKind\r\n      ? exchanges[orderKind]\r\n      : Object.values(exchanges).find((exchange) => exchange?.enabled)\r\n    return exchange?.enabled ? exchange : undefined\r\n  }, [marketplace, orderKind])\r\n\r\n  useEffect(() => {\r\n    if (exchange?.paymentTokens && exchange?.paymentTokens.length > 0) {\r\n      const restrictedCurrencies = exchange.paymentTokens\r\n        .filter((token) => token.address && token.symbol)\r\n        .map((token) => ({\r\n          contract: token.address as string,\r\n          decimals: token.decimals,\r\n          name: token.name,\r\n          symbol: token.symbol as string,\r\n        }))\r\n      setCurrencies(restrictedCurrencies)\r\n\r\n      if (\r\n        !restrictedCurrencies.find(\r\n          (c) => currency.contract.toLowerCase() == c.contract.toLowerCase()\r\n        )\r\n      ) {\r\n        setCurrency(restrictedCurrencies[0])\r\n      }\r\n    } else {\r\n      setCurrency(\r\n        preferredCurrencies && preferredCurrencies[0]\r\n          ? preferredCurrencies[0]\r\n          : defaultCurrency\r\n      )\r\n      setCurrencies(preferredCurrencies)\r\n    }\r\n  }, [exchange, open])\r\n\r\n  useEffect(() => {\r\n    if (marketplace && !exchange) {\r\n      setListStep(ListStep.Unavailable)\r\n    }\r\n  }, [marketplace, exchange])\r\n\r\n  useEffect(() => {\r\n    if (currencies && currencies.length > 5) {\r\n      console.warn(\r\n        'The ListModal UI was designed to have a maximum of 5 currencies, going above 5 may degrade the user experience.'\r\n      )\r\n    }\r\n  }, [currencies])\r\n\r\n  const checkIsApproveModuleAsk = () => {\r\n    publicClient\r\n      ?.readContract({\r\n        abi: [\r\n          {\r\n            inputs: [\r\n              { internalType: 'address', name: '_user', type: 'address' },\r\n              { internalType: 'address', name: '_module', type: 'address' },\r\n            ],\r\n            name: 'isModuleApproved',\r\n            outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\r\n            stateMutability: 'view',\r\n            type: 'function',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.ZORA_MODULE_MANAGER_ADDRESS as `0x${string}`,\r\n        functionName: 'isModuleApproved',\r\n        args: [\r\n          account?.address as `0x${string}`,\r\n          ContractConfig[chainId ? chainId : 1235]\r\n            ?.ASK1_1_MODULE_ADDRESS as `0x${string}`,\r\n        ],\r\n      })\r\n      .then((res) => {\r\n        if (res) {\r\n          setIsApproveModule(true)\r\n        }\r\n      })\r\n      .catch((err) => {\r\n        setIsApproveModule(false)\r\n        console.log(err)\r\n        console.log('message: ' + err?.message)\r\n      })\r\n  }\r\n\r\n  const checkIsApproveNft = () => {\r\n    publicClient\r\n      ?.readContract({\r\n        abi: [\r\n          {\r\n            constant: true,\r\n            inputs: [\r\n              { internalType: 'address', name: 'owner', type: 'address' },\r\n              { internalType: 'address', name: 'operator', type: 'address' },\r\n            ],\r\n            name: 'isApprovedForAll',\r\n            outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\r\n            payable: false,\r\n            stateMutability: 'view',\r\n            type: 'function',\r\n          },\r\n        ],\r\n        address: contract as `0x${string}`,\r\n        functionName: 'isApprovedForAll',\r\n        args: [\r\n          account?.address as `0x${string}`,\r\n          ContractConfig[chainId ? chainId : 1235]\r\n            ?.ERC721TRANSFERHELPER as `0x${string}`,\r\n        ],\r\n      })\r\n      .then((res) => {\r\n        if (res) {\r\n          setIsApproveNft(true)\r\n        }\r\n      })\r\n      .catch((err) => {\r\n        setIsApproveNft(false)\r\n        console.log(err)\r\n        console.log('message: ' + err?.message)\r\n      })\r\n  }\r\n\r\n  useEffect(() => {\r\n    if (publicClient) {\r\n      checkIsApproveModuleAsk()\r\n      checkIsApproveNft()\r\n    }\r\n  }, [publicClient])\r\n\r\n  const triggerListTokenContract = (maker: any) => {\r\n    setListStep(ListStep.Listing)\r\n    setStepData({\r\n      totalSteps: 1,\r\n      stepProgress: 1,\r\n      currentStep: {\r\n        kind: 'signature',\r\n        action: '',\r\n        description:\r\n          'Please review and confirm to create the listing from your wallet.',\r\n        id: '1',\r\n      },\r\n      listingData: [],\r\n    })\r\n    // list token\r\n    wagmiWallet\r\n      ?.writeContract({\r\n        abi: [\r\n          {\r\n            inputs: [\r\n              {\r\n                internalType: 'address',\r\n                name: '_tokenContract',\r\n                type: 'address',\r\n              },\r\n              {\r\n                internalType: 'uint256',\r\n                name: '_tokenId',\r\n                type: 'uint256',\r\n              },\r\n              {\r\n                internalType: 'uint256',\r\n                name: '_askPrice',\r\n                type: 'uint256',\r\n              },\r\n              {\r\n                internalType: 'address',\r\n                name: '_askCurrency',\r\n                type: 'address',\r\n              },\r\n              {\r\n                internalType: 'address',\r\n                name: '_sellerFundsRecipient',\r\n                type: 'address',\r\n              },\r\n              {\r\n                internalType: 'uint16',\r\n                name: '_findersFeeBps',\r\n                type: 'uint16',\r\n              },\r\n            ],\r\n            name: 'createAsk',\r\n            outputs: [],\r\n            stateMutability: 'nonpayable',\r\n            type: 'function',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.ASK1_1_MODULE_ADDRESS as `0x${string}`,\r\n        functionName: 'createAsk',\r\n        args: [\r\n          contract as `0x${string}`,\r\n          BigInt(Number(tokenId)),\r\n          BigInt(Number(price) * Math.pow(10, 18)),\r\n          zeroAddress,\r\n          maker as `0x${string}`,\r\n          0,\r\n        ],\r\n        gas: 500000n,\r\n      })\r\n      .then((hash) => {\r\n        publicClient\r\n          .waitForTransactionReceipt({ hash })\r\n          .then((res) => {\r\n            if (res?.status === 'success') {\r\n              setTimeout(() => {\r\n                setListStep(ListStep.Complete)\r\n              }, 5000)\r\n            }\r\n          })\r\n          .catch((error) => {\r\n            setListStep(ListStep.SetPrice)\r\n            setTransactionError(error)\r\n          })\r\n      })\r\n      .catch((err) => {\r\n        setTransactionError(err)\r\n        setListStep(ListStep.SetPrice)\r\n      })\r\n  }\r\n\r\n  const triggerApproveCollection = (maker: any) => {\r\n    setListStep(ListStep.Listing)\r\n    setStepData({\r\n      totalSteps: 1,\r\n      stepProgress: 1,\r\n      currentStep: {\r\n        kind: 'transaction',\r\n        action: '',\r\n        description:\r\n          'Please approve the collection(s) from your wallet. Each collection only needs to be approved once.',\r\n        id: '1',\r\n      },\r\n      listingData: [],\r\n    })\r\n    // approve nft\r\n    wagmiWallet\r\n      ?.writeContract({\r\n        abi: [\r\n          {\r\n            constant: false,\r\n            inputs: [\r\n              { internalType: 'address', name: 'to', type: 'address' },\r\n              { internalType: 'bool', name: 'approved', type: 'bool' },\r\n            ],\r\n            name: 'setApprovalForAll',\r\n            outputs: [],\r\n            payable: false,\r\n            stateMutability: 'nonpayable',\r\n            type: 'function',\r\n          },\r\n        ],\r\n        address: contract as `0x${string}`,\r\n        functionName: 'setApprovalForAll',\r\n        args: [\r\n          ContractConfig[chainId ? chainId : 1235]\r\n            ?.ERC721TRANSFERHELPER as `0x${string}`,\r\n          true,\r\n        ],\r\n        gas: 500000n,\r\n      })\r\n      .then((hash) => {\r\n        publicClient\r\n          .waitForTransactionReceipt({ hash })\r\n          .then(() => {\r\n            triggerListTokenContract(maker)\r\n          })\r\n          .catch((error) => {\r\n            triggerListTokenContract(maker)\r\n            setTransactionError(error)\r\n          })\r\n      })\r\n      .catch((err) => {\r\n        setTransactionError(err)\r\n        setListStep(ListStep.SetPrice)\r\n      })\r\n  }\r\n\r\n  const listToken = useCallback(\r\n    async (options: { royaltyBps?: number } | undefined) => {\r\n      const { royaltyBps } = options ?? {}\r\n      if (!wallet) {\r\n        const error = new Error('Missing a wallet/signer')\r\n        setTransactionError(error)\r\n        throw error\r\n      }\r\n\r\n      let activeWalletChain = getAccount(config).chain\r\n      if (rendererChain?.id !== activeWalletChain?.id) {\r\n        activeWalletChain = await switchChain(config, {\r\n          chainId: rendererChain?.id as number,\r\n        })\r\n      }\r\n\r\n      if (rendererChain?.id !== activeWalletChain?.id) {\r\n        const error = new Error(`Mismatching chainIds`)\r\n        setTransactionError(error)\r\n        throw error\r\n      }\r\n\r\n      if (!client) {\r\n        const error = new Error('ReservoirClient was not initialized')\r\n        setTransactionError(error)\r\n        throw error\r\n      }\r\n\r\n      if (!marketplace) {\r\n        throw new Error('No marketplace found')\r\n      }\r\n\r\n      if (!exchange) {\r\n        throw new Error('No exchange found')\r\n      }\r\n\r\n      setTransactionError(null)\r\n\r\n      let expirationTime: string | null = null\r\n\r\n      if (expirationOption.relativeTime) {\r\n        if (expirationOption.relativeTimeUnit) {\r\n          expirationTime = dayjs()\r\n            .add(\r\n              expirationOption.relativeTime,\r\n              expirationOption.relativeTimeUnit\r\n            )\r\n            .unix()\r\n            .toString()\r\n        } else {\r\n          expirationTime = `${expirationOption.relativeTime}`\r\n        }\r\n      }\r\n\r\n      const listing: Listing = {\r\n        token: `${contract}:${tokenId}`,\r\n        weiPrice: (\r\n          parseUnits(`${+price}`, currency.decimals || 18) * BigInt(quantity)\r\n        ).toString(),\r\n        // @ts-ignore\r\n        orderbook: marketplace.orderbook,\r\n        // @ts-ignore\r\n        orderKind: exchange.orderKind,\r\n      }\r\n\r\n      const fees = feesBps || client.marketplaceFees\r\n      if (fees) {\r\n        listing.marketplaceFees = fees\r\n      }\r\n\r\n      if (quantity > 1) {\r\n        listing.quantity = quantity\r\n      }\r\n\r\n      if (expirationTime) {\r\n        listing.expirationTime = expirationTime\r\n      }\r\n\r\n      if (currency && currency.contract != zeroAddress) {\r\n        listing.currency = currency.contract\r\n      }\r\n\r\n      if (oracleEnabled) {\r\n        listing.options = {\r\n          [`${listing.orderKind}`]: {\r\n            useOffChainCancellation: true,\r\n          },\r\n        }\r\n      }\r\n\r\n      if (royaltyBps !== undefined) {\r\n        listing.royaltyBps = royaltyBps\r\n      }\r\n\r\n      setListingData([{ listing, marketplace }])\r\n      setListStep(ListStep.Listing)\r\n\r\n      const maker = account?.address\r\n      if (rendererChain?.name === auraEVMTestnet?.name) {\r\n        if (!isApproveModule) {\r\n          setListStep(ListStep.Listing)\r\n          setStepData({\r\n            totalSteps: 1,\r\n            stepProgress: 1,\r\n            currentStep: {\r\n              kind: 'transaction',\r\n              action: 'approval',\r\n              description:\r\n                'You will be prompted to grant approval for selling on the marketplace. You only need to approve it once for the first time.',\r\n              id: '1',\r\n            },\r\n            listingData: [],\r\n          })\r\n          // approve module\r\n          await wagmiWallet\r\n            ?.writeContract({\r\n              abi: [\r\n                {\r\n                  inputs: [\r\n                    {\r\n                      internalType: 'address',\r\n                      name: '_module',\r\n                      type: 'address',\r\n                    },\r\n                    { internalType: 'bool', name: '_approved', type: 'bool' },\r\n                  ],\r\n                  name: 'setApprovalForModule',\r\n                  outputs: [],\r\n                  stateMutability: 'nonpayable',\r\n                  type: 'function',\r\n                },\r\n              ],\r\n              address: ContractConfig[chainId ? chainId : 1235]\r\n                ?.ZORA_MODULE_MANAGER_ADDRESS as `0x${string}`,\r\n              functionName: 'setApprovalForModule',\r\n              args: [\r\n                ContractConfig[chainId ? chainId : 1235]\r\n                  ?.ASK1_1_MODULE_ADDRESS as `0x${string}`,\r\n                true,\r\n              ],\r\n              gas: 500000n,\r\n            })\r\n            .then((hash) => {\r\n              publicClient\r\n                .waitForTransactionReceipt({ hash })\r\n                .then((res) => {\r\n                  triggerApproveCollection(maker)\r\n                })\r\n                .catch((error) => {\r\n                  triggerApproveCollection(maker)\r\n                  setTransactionError(error)\r\n                })\r\n            })\r\n            .catch((err) => {\r\n              setTransactionError(err)\r\n              setListStep(ListStep.SetPrice)\r\n            })\r\n\r\n          return\r\n        }\r\n\r\n        if (!isApproveNft) {\r\n          triggerApproveCollection(maker)\r\n        } else {\r\n          triggerListTokenContract(maker)\r\n        }\r\n      } else {\r\n        client.actions\r\n          .listToken({\r\n            chainId: rendererChain?.id,\r\n            listings: [listing],\r\n            wallet,\r\n            onProgress: (steps: Execute['steps']) => {\r\n              const executableSteps = steps.filter(\r\n                (step) => step.items && step.items.length > 0\r\n              )\r\n\r\n              let stepCount = executableSteps.length\r\n              let incompleteStepItemIndex: number | null = null\r\n              let incompleteStepIndex: number | null = null\r\n\r\n              executableSteps.find((step, i) => {\r\n                if (!step.items) {\r\n                  return false\r\n                }\r\n\r\n                incompleteStepItemIndex = step.items.findIndex(\r\n                  (item) => item.status == 'incomplete'\r\n                )\r\n                if (incompleteStepItemIndex !== -1) {\r\n                  incompleteStepIndex = i\r\n                  return true\r\n                }\r\n              })\r\n\r\n              if (\r\n                incompleteStepIndex === null ||\r\n                incompleteStepItemIndex === null\r\n              ) {\r\n                const currentStep = executableSteps[executableSteps.length - 1]\r\n                const currentStepItem = currentStep.items\r\n                  ? currentStep.items[currentStep.items.length]\r\n                  : null\r\n                setListStep(ListStep.Complete)\r\n                const listings =\r\n                  currentStepItem && currentStepItem.orderIndexes !== undefined\r\n                    ? listingData.filter((_, i) =>\r\n                        currentStepItem.orderIndexes?.includes(i)\r\n                      )\r\n                    : [listingData[listingData.length - 1]]\r\n                setStepData({\r\n                  totalSteps: stepCount,\r\n                  stepProgress: stepCount,\r\n                  currentStep,\r\n                  listingData: listings,\r\n                })\r\n              } else {\r\n                const currentStep = executableSteps[incompleteStepIndex]\r\n                const listingIndexes: Set<number> = new Set()\r\n                currentStep.items?.forEach(({ orderIndexes, status }) => {\r\n                  if (status === 'incomplete') {\r\n                    orderIndexes?.forEach((orderIndex) => {\r\n                      listingIndexes.add(orderIndex)\r\n                    })\r\n                  }\r\n                })\r\n                const listings = Array.from(listingIndexes).map(\r\n                  (index) => listingData[index]\r\n                )\r\n\r\n                setStepData({\r\n                  totalSteps: stepCount,\r\n                  stepProgress: incompleteStepIndex,\r\n                  currentStep: executableSteps[incompleteStepIndex],\r\n                  listingData: listings,\r\n                })\r\n              }\r\n            },\r\n          })\r\n          .catch((error: Error) => {\r\n            setListStep(ListStep.SetPrice)\r\n            setTransactionError(error)\r\n          })\r\n      }\r\n    },\r\n    [\r\n      client,\r\n      wallet,\r\n      config,\r\n      collectionId,\r\n      chainId,\r\n      tokenId,\r\n      expirationOption,\r\n      currency,\r\n      quantity,\r\n      feesBps,\r\n      price,\r\n      marketplace,\r\n      exchange,\r\n      isApproveModule,\r\n      isApproveNft,\r\n    ]\r\n  )\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        loading: !token || !collection || !marketplace,\r\n        token,\r\n        quantityAvailable,\r\n        collection,\r\n        listStep,\r\n        usdPrice,\r\n        marketplace,\r\n        exchange,\r\n        expirationOption,\r\n        expirationOptions,\r\n        listingData,\r\n        transactionError,\r\n        stepData,\r\n        price,\r\n        currencies: currencies || [defaultCurrency],\r\n        currency,\r\n        quantity,\r\n        royaltyBps,\r\n        setListStep,\r\n        setPrice,\r\n        setCurrency,\r\n        setExpirationOption,\r\n        setQuantity,\r\n        listToken,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n\r\nListModalRenderer.displayName = 'ListModalRenderer'\r\n","import { paths, setParams } from '@sh-reservoir0x/reservoir-sdk'\r\nimport getLocalMarketplaceData from '../lib/getLocalMarketplaceData'\r\nimport { useEffect, useState } from 'react'\r\nimport useReservoirClient from './useReservoirClient'\r\nimport useSWR from 'swr'\r\nimport { MarketPlaceConfigurationsQuery } from './useMarketplaceConfigs'\r\n\r\nexport type Marketplace = NonNullable<\r\n  paths['/collections/{collection}/marketplace-configurations/v2']['get']['responses']['200']['schema']['marketplaces']\r\n>[0] & {\r\n  price: number | string\r\n  truePrice: number | string\r\n  fee: {\r\n    bps: number\r\n    percent: number\r\n  }\r\n}\r\n\r\nexport default function (\r\n  collectionId?: string,\r\n  tokenId?: string,\r\n  listingEnabledOnly?: boolean,\r\n  fees?: string[],\r\n  chainId?: number,\r\n  enabled: boolean = true\r\n): [Marketplace[], React.Dispatch<React.SetStateAction<Marketplace[]>>] {\r\n  const [marketplaces, setMarketplaces] = useState<Marketplace[]>([])\r\n  const client = useReservoirClient()\r\n  const chain =\r\n    chainId !== undefined\r\n      ? client?.chains.find((chain) => chain.id === chainId)\r\n      : client?.currentChain()\r\n\r\n  const { data, isValidating } = useSWR<\r\n    paths['/collections/{collection}/marketplace-configurations/v2']['get']['responses'][200]['schema']\r\n  >(() => {\r\n    if (!enabled || !collectionId) {\r\n      return null\r\n    }\r\n\r\n    const url = new URL(\r\n      `${chain?.baseApiUrl}/collections/${collectionId}/marketplace-configurations/v2`\r\n    )\r\n    if (tokenId) {\r\n      let query: MarketPlaceConfigurationsQuery = { tokenId: tokenId }\r\n      setParams(url, query)\r\n    }\r\n\r\n    return [url.href, client?.apiKey, client?.version]\r\n  })\r\n\r\n  useEffect(() => {\r\n    if (data && data.marketplaces) {\r\n      let updatedMarketplaces: Marketplace[] =\r\n        data.marketplaces as Marketplace[]\r\n      if (listingEnabledOnly) {\r\n        updatedMarketplaces = updatedMarketplaces.filter(\r\n          (marketplace) =>\r\n            Object.values(marketplace.exchanges || {}).some(\r\n              (exchange) => exchange.enabled\r\n            ) && marketplace.orderbook !== 'x2y2'\r\n        )\r\n      }\r\n      updatedMarketplaces.forEach((marketplace) => {\r\n        if (marketplace.orderbook === 'reservoir') {\r\n          const data = getLocalMarketplaceData()\r\n          marketplace.name = data.title\r\n          marketplace.domain = client?.source\r\n          let marketplaceFees = fees\r\n          if (!fees && chain?.marketplaceFees) {\r\n            marketplaceFees = chain?.marketplaceFees\r\n          } else if (!fees && client?.marketplaceFees) {\r\n            marketplaceFees = client.marketplaceFees\r\n          }\r\n          const feeBps = marketplaceFees?.reduce((total, fee) => {\r\n            const bps = Number(fee.split(':')[1])\r\n            total += bps\r\n            return total\r\n          }, 0)\r\n          marketplace.fee = {\r\n            bps: feeBps || 0,\r\n            percent: (feeBps || 0) / 100,\r\n          }\r\n          if (data.icon) {\r\n            marketplace.imageUrl = data.icon\r\n          }\r\n        }\r\n        if (marketplace.fee) {\r\n          marketplace.fee.percent = (marketplace.fee.bps || 0) / 100\r\n        }\r\n        marketplace.price = 0\r\n        marketplace.truePrice = 0\r\n      })\r\n      setMarketplaces(updatedMarketplaces)\r\n    }\r\n  }, [data, listingEnabledOnly, chain, chainId, fees])\r\n\r\n  return [!isValidating ? marketplaces : [], setMarketplaces]\r\n}\r\n","import { getClient } from '@sh-reservoir0x/reservoir-sdk'\r\n\r\nexport default () => {\r\n  const client = getClient()\r\n  let reservoirTitleEl = document.querySelector(\r\n    \"meta[property='reservoir:title']\"\r\n  )\r\n  let title: null | string = null\r\n  if (reservoirTitleEl) {\r\n    title = reservoirTitleEl.getAttribute('content')\r\n  }\r\n\r\n  if (!title && client && client.source) {\r\n    title = client.source\r\n  } else if (!title) {\r\n    title = location ? location.hostname.replace('www.', '') : ''\r\n  }\r\n\r\n  const reservoirIconEl = document.querySelector(\r\n    \"meta[property='reservoir:icon']\"\r\n  )\r\n  let icon: null | string = null\r\n  if (reservoirIconEl) {\r\n    icon = reservoirIconEl.getAttribute('content')\r\n  }\r\n\r\n  if (!icon) {\r\n    const favicon = document.querySelector(\"link[rel*='icon']\")\r\n    if (favicon) {\r\n      icon = favicon.getAttribute('href')\r\n    }\r\n  }\r\n\r\n  return {\r\n    title,\r\n    icon,\r\n  }\r\n}\r\n","import { ExpirationOption } from '../types/ExpirationOption'\r\n\r\nconst expirationOptions: ExpirationOption[] = [\r\n  {\r\n    text: '1 Hour',\r\n    value: 'hour',\r\n    relativeTime: 1,\r\n    relativeTimeUnit: 'h',\r\n  },\r\n  {\r\n    text: '12 Hours',\r\n    value: '12 hours',\r\n    relativeTime: 12,\r\n    relativeTimeUnit: 'h',\r\n  },\r\n  {\r\n    text: '1 Day',\r\n    value: '1 day',\r\n    relativeTime: 1,\r\n    relativeTimeUnit: 'd',\r\n  },\r\n  {\r\n    text: '3 Day',\r\n    value: '3 days',\r\n    relativeTime: 3,\r\n    relativeTimeUnit: 'd',\r\n  },\r\n  { text: '1 Week', value: 'week', relativeTime: 1, relativeTimeUnit: 'w' },\r\n  { text: '1 Month', value: 'month', relativeTime: 1, relativeTimeUnit: 'M' },\r\n  {\r\n    text: '3 Months',\r\n    value: '3 months',\r\n    relativeTime: 3,\r\n    relativeTimeUnit: 'M',\r\n  },\r\n  {\r\n    text: '6 Months',\r\n    value: '6 months',\r\n    relativeTime: 6,\r\n    relativeTimeUnit: 'M',\r\n  },\r\n]\r\n\r\nexport default expirationOptions\r\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { Flex, Text } from '../primitives'\r\nimport React, { FC } from 'react'\r\nimport faPenNib from '@fortawesome/free-solid-svg-icons/faPenNib'\r\n\r\nimport { CSS } from '@stitches/react'\r\n\r\ntype Props = {\r\n  css: CSS\r\n}\r\n\r\nconst SigninStep: FC<Props> = ({ css }) => {\r\n  return (\r\n    <Flex\r\n      css={{ color: '$neutralText', ...css }}\r\n      direction=\"column\"\r\n      justify=\"center\"\r\n      align=\"center\"\r\n    >\r\n      <Text style=\"h6\" color=\"base\" css={{ mb: '$2', textAlign: 'center' }}>\r\n        Sign in to Blur\r\n      </Text>\r\n      <Text\r\n        style=\"subtitle3\"\r\n        color=\"subtle\"\r\n        css={{ mb: 20, textAlign: 'center' }}\r\n      >\r\n        This is a one-time approval process that takes place once a month\r\n      </Text>\r\n      <FontAwesomeIcon\r\n        icon={faPenNib}\r\n        width={32}\r\n        height={32}\r\n        style={{ height: 32 }}\r\n      />\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default SigninStep\r\n","import React, { FC } from 'react'\r\nimport {\r\n  ChainIcon,\r\n  Divider,\r\n  Flex,\r\n  FormatCryptoCurrency,\r\n  Img,\r\n  Text,\r\n} from '../../primitives'\r\nimport { useCollections, useTimeSince, useTokens } from '../../hooks'\r\nimport { ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { CSS } from '@stitches/react'\r\nimport { ExpirationOption } from '../../types/ExpirationOption'\r\nimport { Currency } from '../../types/Currency'\r\n\r\ntype ListCheckoutProps = {\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  token?: NonNullable<ReturnType<typeof useTokens>['data']>[0]\r\n  price?: string\r\n  currency?: Currency\r\n  quantity?: number\r\n  chain?: ReservoirChain | null\r\n  expirationOption?: ExpirationOption\r\n  containerCss?: CSS\r\n}\r\n\r\nconst ListCheckout: FC<ListCheckoutProps> = ({\r\n  collection,\r\n  token,\r\n  price,\r\n  currency,\r\n  quantity,\r\n  chain,\r\n  expirationOption,\r\n  containerCss,\r\n}) => {\r\n  // const expirationDisplay =\r\n  //   expirationOption?.value === 'custom' && expirationOption.relativeTime\r\n  //     ? useTimeSince(expirationOption.relativeTime)\r\n  //     : `in ${expirationOption?.text.toLowerCase()}`\r\n\r\n  return (\r\n    <Flex align=\"center\" justify=\"between\" css={{ p: '$4', ...containerCss }}>\r\n      <Flex align=\"center\" css={{ gap: '$3', overflow: 'hidden' }}>\r\n        <Img\r\n          src={token?.token?.imageSmall || collection?.image}\r\n          alt={token?.token?.name || collection?.name}\r\n          css={{ width: 56, height: 56, borderRadius: 4, aspectRatio: '1/1', objectFit: 'cover' }}\r\n        />\r\n        <Flex direction=\"column\" css={{ gap: '$1', overflow: 'hidden' }}>\r\n          <Text style=\"h6\" ellipsify>\r\n            {token?.token?.name\r\n              ? token?.token?.name\r\n              : `#${token?.token?.tokenId}`}\r\n          </Text>\r\n          <Flex align=\"center\" css={{ gap: '$1' }}>\r\n            <Text style=\"subtitle2\" color=\"subtle\" ellipsify>\r\n              {collection?.name}\r\n            </Text>\r\n            {chain && !expirationOption ? (\r\n              <>\r\n                <Divider direction=\"vertical\" />\r\n                <ChainIcon\r\n                  chainId={chain.id}\r\n                  height={12}\r\n                  css={{ alignItems: 'center', width: '12px' }}\r\n                />\r\n                <Text style=\"subtitle2\" color=\"subtle\" ellipsify>\r\n                  {chain.name}\r\n                </Text>\r\n              </>\r\n            ) : null}\r\n          </Flex>\r\n          {quantity && quantity > 1 ? (\r\n            <Flex\r\n              css={{\r\n                width: 'max-content',\r\n                backgroundColor: '$neutralBg',\r\n                borderRadius: 4,\r\n                py: '$1',\r\n                px: '$2',\r\n              }}\r\n            >\r\n              <Text style=\"body3\" color=\"subtle\" ellipsify>\r\n                {quantity} items\r\n              </Text>\r\n            </Flex>\r\n          ) : null}\r\n        </Flex>\r\n      </Flex>\r\n\r\n      <Flex direction=\"column\" align=\"end\" css={{ gap: '$1', flexShrink: 0 }}>\r\n        {price && currency ? (\r\n          <FormatCryptoCurrency\r\n            amount={Number(price)}\r\n            address={currency?.contract}\r\n            symbol={currency?.symbol}\r\n            textStyle=\"h6\"\r\n          />\r\n        ) : null}\r\n        {/* {expirationOption ? (\r\n          <Text style=\"body2\" color=\"subtle\">\r\n            Expires {expirationDisplay}\r\n          </Text>\r\n        ) : null} */}\r\n      </Flex>\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default ListCheckout\r\n","import { CSS } from '@stitches/react'\r\nimport React, { FC } from 'react'\r\nimport { CryptoCurrencyIcon, Flex, Select, Text } from '../primitives'\r\nimport { Currency } from '../types/Currency'\r\n\r\ntype Props = {\r\n  triggerCss?: CSS\r\n  valueCss?: CSS\r\n  currencies: Currency[]\r\n  currency: Currency\r\n  chainId?: number\r\n  setCurrency: (currency: Currency) => void\r\n}\r\n\r\nexport const CurrencySelector: FC<Props> = ({\r\n  triggerCss,\r\n  valueCss,\r\n  chainId,\r\n  currencies,\r\n  currency,\r\n  setCurrency,\r\n}) => {\r\n  return (\r\n    <Select\r\n      trigger={\r\n        <Select.Trigger\r\n          css={{\r\n            width: 'auto',\r\n            p: 0,\r\n            backgroundColor: 'transparent',\r\n            ...triggerCss,\r\n          }}\r\n        >\r\n          <Select.Value asChild>\r\n            <Flex align=\"center\" css={{ ...valueCss }}>\r\n              <Flex align=\"center\">\r\n                <CryptoCurrencyIcon\r\n                  chainId={chainId}\r\n                  address={currency.contract}\r\n                  css={{ height: 18 }}\r\n                />\r\n                <Text style=\"subtitle1\" color=\"subtle\" css={{ ml: '$1' }}>\r\n                  {currency.symbol}\r\n                </Text>\r\n              </Flex>\r\n              <Select.DownIcon style={{ marginLeft: 6 }} />\r\n            </Flex>\r\n          </Select.Value>\r\n        </Select.Trigger>\r\n      }\r\n      value={currency.contract}\r\n      onValueChange={(value: string) => {\r\n        const option = currencies.find((option) => option.contract == value)\r\n        if (option) {\r\n          setCurrency(option)\r\n        }\r\n      }}\r\n    >\r\n      {currencies.map((option) => (\r\n        <Select.Item key={option.contract} value={option.contract}>\r\n          <Select.ItemText>\r\n            <Flex align=\"center\" css={{ gap: '$1' }}>\r\n              <CryptoCurrencyIcon\r\n                chainId={chainId}\r\n                address={option.contract}\r\n                css={{ height: 18 }}\r\n              />\r\n              {option.symbol}\r\n            </Flex>\r\n          </Select.ItemText>\r\n        </Select.Item>\r\n      ))}\r\n    </Select>\r\n  )\r\n}\r\n","import React, {\r\n  ComponentPropsWithoutRef,\r\n  ElementRef,\r\n  forwardRef,\r\n  ReactElement,\r\n} from 'react'\r\nimport { styled } from '../../stitches.config'\r\nimport * as Select from '@radix-ui/react-select'\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport Box from './Box'\r\n\r\ntype Props = {\r\n  children: React.ReactNode\r\n  trigger?: ReactElement<typeof StyledTrigger>\r\n  css?: ComponentPropsWithoutRef<typeof StyledTrigger>['css']\r\n}\r\n\r\ntype SelectProps = {\r\n  Item: typeof Select.Item\r\n  ItemText: typeof StyledItemText\r\n  Trigger: typeof StyledTrigger\r\n  Value: typeof StyledValue\r\n  DownIcon: typeof SelectDownIcon\r\n}\r\n\r\nconst StyledTrigger = styled(Select.Trigger, {\r\n  boxSizing: 'border-box',\r\n  borderWidth: 0,\r\n  width: '100%',\r\n  px: '$4',\r\n  py: '$3',\r\n  borderRadius: '$borderRadius',\r\n  fontfamily: '$body',\r\n  fontSize: 16,\r\n  display: 'flex',\r\n  justifyContent: 'space-between',\r\n  color: '$neutralTextContrast',\r\n  backgroundColor: '$inputBackground',\r\n  $$focusColor: '$colors$accentBorderHover',\r\n  '&:placeholder': { color: '$neutralText' },\r\n  '&:focus': { boxShadow: '0 0 0 2px $$focusColor' },\r\n})\r\n\r\nconst StyledContent = styled(Select.Content, {\r\n  backgroundColor: '$inputBackground',\r\n  color: '$textColor',\r\n  borderRadius: '$borderRadius',\r\n  overflow: 'hidden',\r\n  $$focusColor: '$colors$accentBorderHover',\r\n  boxShadow: '0 0 0 2px $$focusColor',\r\n})\r\n\r\nconst textCss = {\r\n  color: '$textColor',\r\n  fontFamily: '$body',\r\n  letterSpacing: 0,\r\n}\r\n\r\nconst StyledItemText = styled(Select.ItemText, textCss)\r\n\r\nconst StyledValue = styled(Select.Value, textCss)\r\n\r\nconst SelectDownIcon = forwardRef<\r\n  ElementRef<typeof Select.Icon>,\r\n  ComponentPropsWithoutRef<typeof Select.Icon>\r\n>(({ ...props }, forwardedRef) => (\r\n  <Select.Icon asChild ref={forwardedRef} {...props}>\r\n    <Box css={{ color: '$neutralSolidHover' }}>\r\n      <FontAwesomeIcon icon={faChevronDown} width=\"14\" color=\"\" />\r\n    </Box>\r\n  </Select.Icon>\r\n))\r\n\r\nexport const RKSelect: React.FC<\r\n  Props &\r\n    ComponentPropsWithoutRef<typeof Select.Root> &\r\n    ComponentPropsWithoutRef<typeof Select.Value>\r\n> &\r\n  SelectProps = ({ children, trigger, css, ...props }) => (\r\n  <Select.Root {...props}>\r\n    {trigger ? (\r\n      trigger\r\n    ) : (\r\n      <StyledTrigger css={{ ...textCss, ...css }}>\r\n        <StyledValue placeholder={props.placeholder}>{props.value}</StyledValue>\r\n        <SelectDownIcon />\r\n      </StyledTrigger>\r\n    )}\r\n    <Select.Portal style={{ zIndex: 1000000 }}>\r\n      <StyledContent>\r\n        <Select.ScrollUpButton />\r\n        <Select.Viewport>{children}</Select.Viewport>\r\n        <Select.ScrollDownButton />\r\n      </StyledContent>\r\n    </Select.Portal>\r\n  </Select.Root>\r\n)\r\n\r\nconst StyledItem = styled(Select.Item, {\r\n  cursor: 'pointer',\r\n  py: '$3',\r\n  px: '$4',\r\n  color: '$textColor',\r\n  fontFamily: '$body',\r\n  letterSpacing: 0,\r\n\r\n  '&:hover': {\r\n    background: '$neutralBgActive',\r\n  },\r\n})\r\n\r\nRKSelect.Item = StyledItem\r\nRKSelect.ItemText = StyledItemText\r\nRKSelect.Trigger = StyledTrigger\r\nRKSelect.Value = StyledValue\r\nRKSelect.DownIcon = SelectDownIcon\r\n\r\nexport default RKSelect\r\n","import React, { FC } from 'react'\r\nimport { Collapsible } from '../../primitives/Collapsible'\r\nimport {\r\n  Button,\r\n  Divider,\r\n  Flex,\r\n  FormatCryptoCurrency,\r\n  FormatCurrency,\r\n  Text,\r\n} from '../../primitives'\r\nimport { Currency } from '../../types/Currency'\r\nimport { Marketplace } from '../../hooks/useMarketplaces'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\r\nimport InfoTooltip from '../../primitives/InfoTooltip'\r\n\r\ntype PriceBreakdownProps = {\r\n  price: string\r\n  usdPrice: number\r\n  currency: Currency\r\n  quantity: number\r\n  royaltyBps?: number\r\n  marketplace?: Marketplace\r\n}\r\n\r\nconst PriceBreakdown: FC<PriceBreakdownProps> = ({\r\n  price,\r\n  usdPrice,\r\n  currency,\r\n  quantity,\r\n  royaltyBps,\r\n  marketplace,\r\n}) => {\r\n  let profit =\r\n    (1 - (marketplace?.fee?.percent || 0) / 100 - (royaltyBps || 0) * 0.0001) *\r\n    Number(price) *\r\n    quantity\r\n  100\r\n\r\n  if (Number(price) > 0 && (marketplace?.fee?.percent || royaltyBps)) {\r\n    return (\r\n      <Collapsible\r\n        style={{ width: '100%', borderRadius: 0, overflow: 'visible' }}\r\n        trigger={\r\n          <Button\r\n            color=\"ghost\"\r\n            size=\"none\"\r\n            css={{\r\n              width: '100%',\r\n              display: 'flex',\r\n              justifyContent: 'space-between',\r\n              alignItems: 'start',\r\n              '& > div > span > svg': {\r\n                transition: '.3s',\r\n              },\r\n              '&[data-state=\"open\"] > div > span > svg': {\r\n                transform: 'rotate(180deg)',\r\n              },\r\n              $$focusColor: '$colors$accentBorderHover',\r\n              '&:focus-visible': { boxShadow: '0 0 0 2px $$focusColor' },\r\n            }}\r\n          >\r\n            <Flex align=\"center\" css={{ gap: '$3' }}>\r\n              <Text style=\"h6\">Total Earnings</Text>\r\n              <Text\r\n                css={{\r\n                  color: '$neutralSolidHover',\r\n                }}\r\n              >\r\n                <FontAwesomeIcon icon={faChevronDown} width={16} height={16} />\r\n              </Text>\r\n            </Flex>\r\n            <Flex direction=\"column\" align=\"end\">\r\n              <FormatCryptoCurrency\r\n                amount={profit}\r\n                address={currency.contract}\r\n                symbol={currency.symbol}\r\n                textStyle=\"h6\"\r\n              />\r\n              {usdPrice ? (\r\n                <FormatCurrency\r\n                  amount={profit * (usdPrice || 0)}\r\n                  style=\"subtitle3\"\r\n                  color=\"subtle\"\r\n                />\r\n              ) : null}\r\n            </Flex>\r\n          </Button>\r\n        }\r\n      >\r\n        <Flex direction=\"column\" css={{ gap: '$2', mt: '$3' }}>\r\n          <Flex justify=\"between\" align=\"center\">\r\n            <Text style=\"subtitle2\" color=\"subtle\">\r\n              Total Listing Value\r\n            </Text>\r\n            <FormatCryptoCurrency\r\n              amount={Number(price) * quantity}\r\n              address={currency.contract}\r\n              symbol={currency.symbol}\r\n              textStyle=\"subtitle2\"\r\n              textColor=\"subtle\"\r\n            />\r\n          </Flex>\r\n          {royaltyBps ? (\r\n            <Flex justify=\"between\" align=\"center\">\r\n              <Flex align=\"center\" css={{ gap: '$2' }}>\r\n                <Text style=\"subtitle2\" color=\"subtle\">\r\n                  Creator Royalties\r\n                </Text>\r\n                <InfoTooltip\r\n                  side=\"right\"\r\n                  width={200}\r\n                  content={\r\n                    'A fee on every order that goes to the collection creator.'\r\n                  }\r\n                />\r\n              </Flex>\r\n\r\n              <Flex align=\"center\" css={{ gap: '$1' }}>\r\n                <Text style=\"subtitle2\" color=\"subtle\">\r\n                  -\r\n                </Text>\r\n                <FormatCryptoCurrency\r\n                  amount={quantity * Number(price) * (royaltyBps || 0) * 0.0001}\r\n                  address={currency.contract}\r\n                  symbol={currency.symbol}\r\n                  textStyle=\"subtitle2\"\r\n                  textColor=\"subtle\"\r\n                />\r\n              </Flex>\r\n            </Flex>\r\n          ) : null}\r\n          {marketplace?.fee?.bps ? (\r\n            <Flex justify=\"between\" align=\"center\">\r\n              <Text style=\"subtitle2\" color=\"subtle\">\r\n                {marketplace?.name || 'Marketplace'} Fee\r\n              </Text>\r\n\r\n              <Flex align=\"center\" css={{ gap: '$1' }}>\r\n                <Text style=\"subtitle2\" color=\"subtle\">\r\n                  -\r\n                </Text>\r\n                <FormatCryptoCurrency\r\n                  amount={\r\n                    quantity * Number(price) * (marketplace?.fee?.percent / 100)\r\n                  }\r\n                  address={currency.contract}\r\n                  symbol={currency.symbol}\r\n                  textStyle=\"subtitle2\"\r\n                  textColor=\"subtle\"\r\n                />\r\n              </Flex>\r\n            </Flex>\r\n          ) : null}\r\n          <Divider />\r\n          <Flex justify=\"between\" align=\"center\">\r\n            <Text style=\"subtitle2\" color=\"subtle\">\r\n              Total Earnings\r\n            </Text>\r\n            <FormatCryptoCurrency\r\n              amount={profit}\r\n              address={currency.contract}\r\n              symbol={currency.symbol}\r\n              textStyle=\"subtitle2\"\r\n              textColor=\"subtle\"\r\n            />\r\n          </Flex>\r\n        </Flex>\r\n      </Collapsible>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <Flex justify=\"between\" align=\"start\" css={{ width: '100%' }}>\r\n      <Text style=\"h6\">Total Earnings</Text>\r\n      <Flex direction=\"column\" align=\"end\">\r\n        <FormatCryptoCurrency\r\n          amount={profit}\r\n          address={currency.contract}\r\n          symbol={currency.symbol}\r\n          textStyle=\"h6\"\r\n        />\r\n        {usdPrice ? (\r\n          <FormatCurrency\r\n            amount={profit * (usdPrice || 0)}\r\n            style=\"subtitle3\"\r\n            color=\"subtle\"\r\n          />\r\n        ) : null}\r\n      </Flex>\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default PriceBreakdown\r\n","import React, { useEffect } from 'react'\r\nimport { keyframes, styled } from '@stitches/react'\r\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible'\r\nimport {\r\n  ComponentPropsWithoutRef,\r\n  ElementRef,\r\n  forwardRef,\r\n  ReactNode,\r\n  useState,\r\n} from 'react'\r\n\r\nconst slideDown = keyframes({\r\n  from: { height: 0 },\r\n  to: { height: 'var(--radix-collapsible-content-height)' },\r\n})\r\n\r\nconst slideUp = keyframes({\r\n  from: { height: 'var(--radix-collapsible-content-height)' },\r\n  to: { height: 0 },\r\n})\r\n\r\nconst CollapsibleContent = styled(CollapsiblePrimitive.CollapsibleContent, {\r\n  background: 'transparent',\r\n  overflow: 'hidden',\r\n  border: 'none',\r\n  borderRadius: 0,\r\n  '&[data-state=\"open\"]': {\r\n    animation: `${slideDown} 300ms cubic-bezier(0.87, 0, 0.13, 1)`,\r\n  },\r\n  '&[data-state=\"closed\"]': {\r\n    animation: `${slideUp} 300ms cubic-bezier(0.87, 0, 0.13, 1)`,\r\n  },\r\n})\r\n\r\nconst CollapsibleRoot = styled(CollapsiblePrimitive.Root, {\r\n  borderRadius: 8,\r\n  overflow: 'hidden',\r\n})\r\n\r\ntype Props = {\r\n  trigger: ReactNode\r\n  contentProps?: CollapsiblePrimitive.CollapsibleContentProps\r\n  open?: boolean\r\n  onOpenChange?: (open: boolean) => void\r\n}\r\n\r\nconst Collapsible = forwardRef<\r\n  ElementRef<typeof CollapsiblePrimitive.Content>,\r\n  ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content> & Props\r\n>(\r\n  (\r\n    { children, trigger, contentProps, open, onOpenChange, ...props },\r\n    forwardedRef\r\n  ) => {\r\n    const [collapsibleOpen, setCollapsibleOpen] = useState(false)\r\n\r\n    useEffect(() => {\r\n      if (open !== undefined && open !== collapsibleOpen) {\r\n        setCollapsibleOpen(open)\r\n        if (onOpenChange) {\r\n          onOpenChange(open)\r\n        }\r\n      }\r\n    }, [open])\r\n\r\n    return (\r\n      <CollapsibleRoot\r\n        {...props}\r\n        onOpenChange={(open) => {\r\n          setCollapsibleOpen(open)\r\n          if (onOpenChange) {\r\n            onOpenChange(open)\r\n          }\r\n        }}\r\n        open={collapsibleOpen}\r\n      >\r\n        <CollapsiblePrimitive.Trigger asChild>\r\n          {trigger}\r\n        </CollapsiblePrimitive.Trigger>\r\n        <CollapsibleContent ref={forwardedRef} {...contentProps}>\r\n          {children}\r\n        </CollapsibleContent>\r\n      </CollapsibleRoot>\r\n    )\r\n  }\r\n)\r\n\r\nexport { Collapsible, CollapsibleContent, CollapsibleRoot }\r\n","import React from 'react'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport faInfoCircle from '@fortawesome/free-solid-svg-icons/faInfoCircle'\r\nimport { Box, Popover, Text } from '.'\r\ntype Props = {\r\n  side: string\r\n  content: string\r\n  width: number\r\n  kind?: 'info' | 'error'\r\n}\r\n\r\nconst InfoTooltip = ({ side, content, width, kind = 'info' }: Props) => {\r\n  return (\r\n    <Popover\r\n      side={side}\r\n      width={width}\r\n      content={\r\n        <Text style={'body3'} as=\"p\">\r\n          {content}\r\n        </Text>\r\n      }\r\n    >\r\n      <Box css={{ color: kind === 'error' ? '$errorAccent' : '$neutralText' }}>\r\n        <FontAwesomeIcon icon={faInfoCircle} />\r\n      </Box>\r\n    </Popover>\r\n  )\r\n}\r\n\r\nexport default InfoTooltip\r\n","import React, { ReactNode } from 'react'\r\nimport * as Popover from '@radix-ui/react-popover'\r\nimport { styled } from '../../stitches.config'\r\nimport Box from './Box'\r\n\r\nconst Arrow = styled(Popover.Arrow, {\r\n  width: 15,\r\n  height: 7,\r\n  fill: '$popoverBackground',\r\n})\r\n\r\nconst Content = styled(Popover.Content, {\r\n  filter: 'drop-shadow(0px 2px 16px rgba(0, 0, 0, 0.75))',\r\n  zIndex: 1000,\r\n})\r\n\r\ntype Props = {\r\n  content?: ReactNode\r\n  side?: any\r\n  width?: any\r\n} & Popover.PopoverProps\r\n\r\nconst RKPopover = ({\r\n  children,\r\n  content,\r\n  side = 'bottom',\r\n  width = '100%',\r\n  ...props\r\n}: Props) => {\r\n  return (\r\n    <Popover.Root {...props}>\r\n      <Popover.Trigger\r\n        style={{\r\n          backgroundColor: 'transparent',\r\n          borderWidth: 0,\r\n          cursor: 'pointer',\r\n          padding: 0,\r\n        }}\r\n      >\r\n        {children}\r\n      </Popover.Trigger>\r\n      <Content side={side}>\r\n        <Arrow />\r\n        <Box\r\n          css={{\r\n            p: '$3',\r\n            maxWidth: 320,\r\n            overflowY: 'auto',\r\n            maxHeight: 322,\r\n            width: width,\r\n            borderRadius: 8,\r\n            backgroundColor: '$popoverBackground',\r\n          }}\r\n        >\r\n          {content}\r\n        </Box>\r\n      </Content>\r\n    </Popover.Root>\r\n  )\r\n}\r\n\r\nRKPopover.Root = Popover.Root\r\nRKPopover.Portal = Popover.Portal\r\nRKPopover.Trigger = Popover.Trigger\r\nRKPopover.Arrow = Arrow\r\nRKPopover.Content = Content\r\n\r\nexport default RKPopover\r\n","import React, { FC, useMemo } from 'react'\r\nimport { useTokens } from '../../hooks'\r\nimport { Dropdown, DropdownMenuItem } from '../../primitives/Dropdown'\r\nimport { Button, Flex, FormatCryptoCurrency, Text } from '../../primitives'\r\nimport { faEllipsis } from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { Currency } from '../../types/Currency'\r\n\r\ntype FloorDropdownProps = {\r\n  token?: NonNullable<NonNullable<ReturnType<typeof useTokens>>['data']>[0]\r\n  currency: Currency\r\n  defaultCurrency?: Currency\r\n  setPrice: React.Dispatch<React.SetStateAction<string>>\r\n  setCurrency: (currency: Currency) => void\r\n}\r\n\r\nconst FloorDropdown: FC<FloorDropdownProps> = ({\r\n  token,\r\n  currency,\r\n  defaultCurrency,\r\n  setPrice,\r\n  setCurrency,\r\n}) => {\r\n  const highestTraitFloor = useMemo(() => {\r\n    if (token?.token?.attributes && token?.token?.attributes?.length < 2000) {\r\n      return Math.max(\r\n        ...token.token.attributes.map((attr: any) =>\r\n          Number(attr.floorAskPrice)\r\n        ),\r\n        0\r\n      )\r\n    }\r\n  }, [token?.token?.attributes])\r\n\r\n  const recentSalePrice = token?.token?.lastSale?.price\r\n  const decimalSalePrice = recentSalePrice?.amount?.decimal\r\n  const nativeSalePrice = recentSalePrice?.amount?.native\r\n  const usdSalePrice = recentSalePrice?.amount?.usd\r\n\r\n  const recentSale = useMemo(() => {\r\n    // If currency matches recent sale currency, use decimal floor price\r\n    if (\r\n      currency.contract === recentSalePrice?.currency?.contract &&\r\n      decimalSalePrice\r\n    ) {\r\n      return {\r\n        address: currency.contract,\r\n        amount: decimalSalePrice,\r\n      }\r\n    }\r\n\r\n    // If currency is USDC, use usd recent sale price\r\n    else if (currency.symbol === 'USDC' && usdSalePrice) {\r\n      return {\r\n        address: currency.contract,\r\n        amount: usdSalePrice,\r\n      }\r\n    }\r\n    // Fallback to native sale price\r\n    else if (nativeSalePrice && defaultCurrency) {\r\n      return {\r\n        address: defaultCurrency.contract,\r\n        amount: nativeSalePrice,\r\n      }\r\n    }\r\n  }, [token, currency])\r\n\r\n  if ((highestTraitFloor || recentSale) && defaultCurrency)\r\n    return (\r\n      <Dropdown\r\n        contentProps={{ align: 'end', sideOffset: 10, style: { width: 265 } }}\r\n        trigger={\r\n          <Button\r\n            color=\"secondary\"\r\n            size=\"none\"\r\n            css={{ height: 44, px: '$4', borderRadius: 8 }}\r\n          >\r\n            <Flex css={{ color: '$textColor' }}>\r\n              <FontAwesomeIcon icon={faEllipsis} />\r\n            </Flex>\r\n          </Button>\r\n        }\r\n      >\r\n        <Flex direction=\"column\" css={{ width: '100%', gap: '$3' }}>\r\n          {highestTraitFloor ? (\r\n            <DropdownMenuItem\r\n              onClick={() => {\r\n                setPrice(highestTraitFloor.toString())\r\n                setCurrency(defaultCurrency)\r\n              }}\r\n            >\r\n              <Flex justify=\"between\" align=\"center\">\r\n                <Text style=\"subtitle1\">Highest Trait</Text>\r\n                <FormatCryptoCurrency\r\n                  amount={highestTraitFloor}\r\n                  textStyle=\"h6\"\r\n                />\r\n              </Flex>\r\n            </DropdownMenuItem>\r\n          ) : null}\r\n          {recentSale ? (\r\n            <DropdownMenuItem\r\n              onClick={() => {\r\n                setPrice(recentSale?.amount?.toString())\r\n                if (currency.contract != recentSale.address) {\r\n                  setCurrency(defaultCurrency)\r\n                }\r\n              }}\r\n            >\r\n              <Flex justify=\"between\" align=\"center\">\r\n                <Text style=\"subtitle1\">Recent Sale</Text>\r\n                <FormatCryptoCurrency\r\n                  address={recentSale?.address}\r\n                  amount={recentSale?.amount}\r\n                  textStyle=\"h6\"\r\n                />\r\n              </Flex>\r\n            </DropdownMenuItem>\r\n          ) : null}\r\n        </Flex>\r\n      </Dropdown>\r\n    )\r\n\r\n  return null\r\n}\r\n\r\nexport default FloorDropdown\r\n","import { styled } from '../../stitches.config'\r\nimport React, {\r\n  ComponentPropsWithoutRef,\r\n  ElementRef,\r\n  forwardRef,\r\n  ReactNode,\r\n  useState,\r\n} from 'react'\r\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\r\n\r\nconst DropdownMenuContent = styled(DropdownMenuPrimitive.DropdownMenuContent, {\r\n  p: '$3',\r\n  borderRadius: 8,\r\n  zIndex: 5,\r\n  background: '$neutralBg',\r\n  $$borderColor: '$colors$gray7',\r\n  boxShadow: '0 0 0 1px $$borderColor',\r\n})\r\n\r\nconst DropdownMenuItem = styled(DropdownMenuPrimitive.DropdownMenuItem, {\r\n  fontSize: 16,\r\n  fontFamily: '$body',\r\n  color: '$gray12',\r\n  px: '$4',\r\n  py: '$4',\r\n  borderRadius: 8,\r\n  outline: 'none',\r\n  cursor: 'pointer',\r\n  backgroundColor: '$neutralBgActive',\r\n  $$focusColor: '$colors$focusColor',\r\n  '&:hover': {\r\n    backgroundColor: '$neutralBgHover',\r\n  },\r\n  '&[data-highlighted]': {\r\n    boxShadow: '0 0 0 2px $$focusColor',\r\n  },\r\n})\r\n\r\ntype Props = {\r\n  trigger: ReactNode\r\n  contentProps?: DropdownMenuPrimitive.DropdownMenuContentProps\r\n}\r\n\r\nconst Dropdown = forwardRef<\r\n  ElementRef<typeof DropdownMenuPrimitive.Root>,\r\n  ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> & Props\r\n>(({ children, trigger, contentProps, ...props }, forwardedRef) => {\r\n  const [open, setOpen] = useState(false)\r\n\r\n  return (\r\n    <DropdownMenuPrimitive.Root {...props} open={open} onOpenChange={setOpen}>\r\n      <DropdownMenuPrimitive.Trigger asChild>\r\n        {trigger}\r\n      </DropdownMenuPrimitive.Trigger>\r\n      {open && (\r\n        <DropdownMenuContent ref={forwardedRef} {...contentProps}>\r\n          {children}\r\n        </DropdownMenuContent>\r\n      )}\r\n    </DropdownMenuPrimitive.Root>\r\n  )\r\n})\r\n\r\nexport { Dropdown, DropdownMenuContent, DropdownMenuItem }\r\n","import React, {\r\n  ReactElement,\r\n  useEffect,\r\n  useState,\r\n  useRef,\r\n  Dispatch,\r\n  SetStateAction,\r\n  useContext,\r\n  ComponentPropsWithoutRef,\r\n} from 'react'\r\nimport {\r\n  Flex,\r\n  Text,\r\n  FormatWrappedCurrency,\r\n  Box,\r\n  Input,\r\n  Select,\r\n  DateInput,\r\n  Button,\r\n  ErrorWell,\r\n  Loader,\r\n  FormatCurrency,\r\n  FormatCryptoCurrency,\r\n  CryptoCurrencyIcon,\r\n} from '../../primitives'\r\nimport { Modal } from '../Modal'\r\nimport {\r\n  BidModalRenderer,\r\n  BidStep,\r\n  BidData,\r\n  Trait,\r\n  BidModalStepData,\r\n  BID_AMOUNT_MINIMUM,\r\n} from './BidModalRenderer'\r\nimport TokenInfo from './TokenInfo'\r\nimport dayjs from 'dayjs'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport {\r\n  faCheckCircle,\r\n  faCalendar,\r\n  faClose,\r\n  faHand,\r\n} from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport Flatpickr from 'react-flatpickr'\r\nimport TransactionProgress from '../TransactionProgress'\r\nimport getLocalMarketplaceData from '../../lib/getLocalMarketplaceData'\r\nimport AttributeSelector from './AttributeSelector'\r\nimport Popover from '../../primitives/Popover'\r\nimport PseudoInput from '../../primitives/PseudoInput'\r\nimport { useFallbackState, useReservoirClient } from '../../hooks'\r\nimport { Currency } from '../../types/Currency'\r\nimport { CurrencySelector } from '../CurrencySelector'\r\nimport { ProviderOptionsContext } from '../../ReservoirKitProvider'\r\nimport QuantitySelector from '../QuantitySelector'\r\nimport { ReservoirWallet } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { WalletClient, formatUnits, parseUnits, zeroAddress } from 'viem'\r\nimport { formatNumber } from '../../lib/numbers'\r\nimport { Dialog } from '../../primitives/Dialog'\r\n\r\ntype BidCallbackData = {\r\n  tokenId?: string\r\n  collectionId?: string\r\n  bidData: BidData | null\r\n}\r\n\r\nconst ModalCopy = {\r\n  titleSetPrice: 'Make an Offer',\r\n  titleConfirm: 'Complete Offer',\r\n  titleComplete: 'Offer Submitted',\r\n  ctaBidDisabled: 'Enter a Price',\r\n  ctaBid: '',\r\n  ctaConvertManually: 'Convert Manually',\r\n  ctaConvertAutomatically: '',\r\n  ctaAwaitingApproval: 'Waiting for approval...',\r\n  ctaEditOffer: 'Edit Offer',\r\n  ctaRetry: 'Retry',\r\n  ctaViewOffers: 'View Offers',\r\n  ctaClose: 'Close',\r\n}\r\n\r\ntype Props = Pick<Parameters<typeof Modal>['0'], 'trigger'> & {\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  tokenId?: string\r\n  orderKind?: BidData['orderKind']\r\n  chainId?: number\r\n  collectionId?: string\r\n  attribute?: Trait\r\n  normalizeRoyalties?: boolean\r\n  currencies?: Currency[]\r\n  oracleEnabled?: boolean\r\n  copyOverrides?: Partial<typeof ModalCopy>\r\n  feesBps?: string[] | null\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  usePermit?: boolean\r\n  onViewOffers?: () => void\r\n  onClose?: (\r\n    data: BidCallbackData,\r\n    stepData: BidModalStepData | null,\r\n    currentStep: BidStep\r\n  ) => void\r\n  onBidComplete?: (data: any) => void\r\n  onBidError?: (error: Error, data: any) => void\r\n  onPointerDownOutside?: ComponentPropsWithoutRef<\r\n    typeof Dialog\r\n  >['onPointerDownOutside']\r\n}\r\n\r\nfunction titleForStep(step: BidStep, copy: typeof ModalCopy) {\r\n  switch (step) {\r\n    case BidStep.SetPrice:\r\n    case BidStep.Unavailable:\r\n      return copy.titleSetPrice\r\n    case BidStep.Offering:\r\n      return copy.titleConfirm\r\n    case BidStep.Complete:\r\n      return copy.titleComplete\r\n  }\r\n}\r\n\r\nconst MINIMUM_DATE = dayjs().add(1, 'h').format('MM/DD/YYYY h:mm A')\r\nconst MAXIMUM_AMOUNT = Infinity\r\n\r\nexport function BidModal({\r\n  openState,\r\n  trigger,\r\n  tokenId,\r\n  chainId,\r\n  collectionId,\r\n  attribute,\r\n  normalizeRoyalties,\r\n  currencies,\r\n  oracleEnabled = false,\r\n  copyOverrides,\r\n  feesBps,\r\n  orderKind,\r\n  walletClient,\r\n  usePermit,\r\n  onViewOffers,\r\n  onClose,\r\n  onBidComplete,\r\n  onBidError,\r\n  onPointerDownOutside,\r\n}: Props): ReactElement {\r\n  const copy: typeof ModalCopy = { ...ModalCopy, ...copyOverrides }\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const modalChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const datetimeElement = useRef<Flatpickr | null>(null)\r\n  const [stepTitle, setStepTitle] = useState('')\r\n  const [localMarketplace, setLocalMarketplace] = useState<ReturnType<\r\n    typeof getLocalMarketplaceData\r\n  > | null>(null)\r\n  const [attributesSelectable, setAttributesSelectable] = useState(false)\r\n\r\n  useEffect(() => {\r\n    setLocalMarketplace(getLocalMarketplaceData())\r\n  }, [])\r\n  const [attributeSelectorOpen, setAttributeSelectorOpen] = useState(false)\r\n\r\n  return (\r\n    <BidModalRenderer\r\n      open={open}\r\n      orderKind={orderKind}\r\n      chainId={modalChain?.id}\r\n      tokenId={tokenId}\r\n      collectionId={collectionId}\r\n      attribute={attribute}\r\n      normalizeRoyalties={normalizeRoyalties}\r\n      oracleEnabled={oracleEnabled}\r\n      currencies={currencies}\r\n      feesBps={feesBps}\r\n      walletClient={walletClient}\r\n      usePermit={usePermit}\r\n    >\r\n      {({\r\n        token,\r\n        collection,\r\n        attributes,\r\n        bidStep,\r\n        expirationOption,\r\n        expirationOptions,\r\n        wrappedBalance,\r\n        wrappedContractName,\r\n        wrappedContractAddress,\r\n        bidAmountPerUnit,\r\n        totalBidAmount,\r\n        totalBidAmountUsd,\r\n        quantity,\r\n        setQuantity,\r\n        hasEnoughNativeCurrency,\r\n        hasEnoughWrappedCurrency,\r\n        loading,\r\n        traitBidSupported,\r\n        collectionBidSupported,\r\n        partialBidSupported,\r\n        amountToWrap,\r\n        balance,\r\n        convertLink,\r\n        canAutomaticallyConvert,\r\n        transactionError,\r\n        stepData,\r\n        bidData,\r\n        currencies,\r\n        currency,\r\n        exchange,\r\n        setCurrency,\r\n        setBidAmountPerUnit,\r\n        setExpirationOption,\r\n        setBidStep,\r\n        setTrait,\r\n        trait,\r\n        placeBid,\r\n      }) => {\r\n        const [expirationDate, setExpirationDate] = useState('')\r\n\r\n        const tokenCount = collection?.tokenCount\r\n          ? +collection.tokenCount\r\n          : undefined\r\n\r\n        const itemImage =\r\n          token && token.token?.imageSmall\r\n            ? token.token?.imageSmall\r\n            : (collection?.image as string)\r\n\r\n        const providerOptionsContext = useContext(ProviderOptionsContext)\r\n\r\n        const quantityEnabled =\r\n          partialBidSupported &&\r\n          (!tokenId ||\r\n            (token?.token?.kind === 'erc1155' &&\r\n              Number(token?.token?.supply) > 1))\r\n\r\n        useEffect(() => {\r\n          if (stepData) {\r\n            switch (stepData.currentStep.kind) {\r\n              case 'signature': {\r\n                setStepTitle('Confirm Offer')\r\n                break\r\n              }\r\n              default: {\r\n                setStepTitle(stepData.currentStep.action)\r\n                break\r\n              }\r\n            }\r\n          }\r\n        }, [stepData])\r\n\r\n        useEffect(() => {\r\n          if (expirationOption && expirationOption.relativeTime) {\r\n            const newExpirationTime = expirationOption.relativeTimeUnit\r\n              ? dayjs().add(\r\n                  expirationOption.relativeTime,\r\n                  expirationOption.relativeTimeUnit\r\n                )\r\n              : dayjs.unix(expirationOption.relativeTime)\r\n            setExpirationDate(newExpirationTime.format('MM/DD/YYYY h:mm A'))\r\n          } else {\r\n            setExpirationDate('')\r\n          }\r\n        }, [expirationOption])\r\n\r\n        useEffect(() => {\r\n          if (bidStep === BidStep.Complete && onBidComplete) {\r\n            const data: BidCallbackData = {\r\n              tokenId: tokenId,\r\n              collectionId: collectionId,\r\n              bidData,\r\n            }\r\n            onBidComplete(data)\r\n          }\r\n        }, [bidStep])\r\n\r\n        useEffect(() => {\r\n          if (transactionError && onBidError) {\r\n            const data: BidCallbackData = {\r\n              tokenId: tokenId,\r\n              collectionId: collectionId,\r\n              bidData,\r\n            }\r\n            onBidError(transactionError, data)\r\n          }\r\n        }, [transactionError])\r\n\r\n        useEffect(() => {\r\n          if (open && attributes && !tokenId && attribute) {\r\n            setTrait(attribute)\r\n          } else {\r\n            setTrait(undefined)\r\n          }\r\n\r\n          if (open && attributes && !tokenId) {\r\n            let attributeCount = 0\r\n            for (let i = 0; i < attributes.length; i++) {\r\n              attributeCount += attributes[i].attributeCount || 0\r\n              if (attributeCount >= 2000) {\r\n                break\r\n              }\r\n            }\r\n            if (attributeCount >= 2000) {\r\n              setAttributesSelectable(false)\r\n            } else {\r\n              setAttributesSelectable(true)\r\n            }\r\n          } else {\r\n            setAttributesSelectable(false)\r\n          }\r\n        }, [open, attributes])\r\n\r\n        const ctaButtonText =\r\n          copy.ctaBid.length > 0\r\n            ? copy.ctaBid\r\n            : token && token.token\r\n            ? 'Make an Offer'\r\n            : trait\r\n            ? 'Make an Attribute Offer'\r\n            : 'Make a Collection Offer'\r\n\r\n        const minimumAmount = exchange?.minPriceRaw\r\n          ? Number(\r\n              formatUnits(\r\n                BigInt(exchange.minPriceRaw),\r\n                currency?.decimals || 18\r\n              )\r\n            )\r\n          : BID_AMOUNT_MINIMUM\r\n        const minimumAmountRaw = parseUnits(\r\n          `${minimumAmount}`,\r\n          currency?.decimals ?? 18\r\n        )\r\n        const maximumAmount = exchange?.maxPriceRaw\r\n          ? Number(\r\n              formatUnits(\r\n                BigInt(exchange.maxPriceRaw),\r\n                currency?.decimals || 18\r\n              )\r\n            )\r\n          : MAXIMUM_AMOUNT\r\n        const maximumAmountRaw =\r\n          maximumAmount !== Infinity\r\n            ? parseUnits(`${maximumAmount}`, currency?.decimals ?? 18)\r\n            : null\r\n        const withinPricingBounds =\r\n          totalBidAmount !== 0n &&\r\n          (maximumAmountRaw ? totalBidAmount <= maximumAmountRaw : true) &&\r\n          totalBidAmount >= minimumAmountRaw\r\n\r\n        const canPurchase = bidAmountPerUnit !== '' && withinPricingBounds\r\n\r\n        const topBidPrice =\r\n          token?.market?.topBid?.price ?? collection?.topBid?.price\r\n        const decimalTopBidPrice = topBidPrice?.amount?.decimal\r\n        const nativeTopBidPrice = topBidPrice?.amount?.native\r\n        const usdTopBidPrice = topBidPrice?.amount?.usd\r\n        const defaultCurrency = currencies?.find(\r\n          (currency) => currency?.contract === zeroAddress\r\n        )\r\n\r\n        const topOfferButtonEnabled =\r\n          (currency?.contract?.toLowerCase() ===\r\n            topBidPrice?.currency?.contract?.toLowerCase() &&\r\n            decimalTopBidPrice) ||\r\n          (currency?.symbol === 'USDC' && usdTopBidPrice) ||\r\n          (nativeTopBidPrice && currency?.contract === zeroAddress) ||\r\n          (nativeTopBidPrice && defaultCurrency)\r\n\r\n        const handleSetBestOffer = () => {\r\n          // If currency matches top bid currency, use decimal floor price\r\n          if (\r\n            currency?.contract?.toLowerCase() ===\r\n              topBidPrice?.currency?.contract?.toLowerCase() &&\r\n            decimalTopBidPrice\r\n          ) {\r\n            setBidAmountPerUnit(decimalTopBidPrice.toString())\r\n          }\r\n\r\n          // If currency is USDC, use usd floor price\r\n          else if (currency?.symbol === 'USDC' && usdTopBidPrice) {\r\n            setBidAmountPerUnit(usdTopBidPrice?.toString())\r\n          } else if (nativeTopBidPrice) {\r\n            // If currency is native currency, use native floor price\r\n            if (currency?.contract === zeroAddress) {\r\n              setBidAmountPerUnit(nativeTopBidPrice.toString())\r\n            }\r\n            // Fallback to default currency if it exists\r\n            else {\r\n              if (defaultCurrency) {\r\n                setCurrency(defaultCurrency)\r\n                setBidAmountPerUnit(nativeTopBidPrice.toString())\r\n              }\r\n            }\r\n          }\r\n        }\r\n\r\n        return (\r\n          <Modal\r\n            trigger={trigger}\r\n            title={titleForStep(bidStep, copy)}\r\n            open={open}\r\n            onOpenChange={(open) => {\r\n              if (!open && onClose) {\r\n                const data: BidCallbackData = {\r\n                  tokenId: tokenId,\r\n                  collectionId: collectionId,\r\n                  bidData,\r\n                }\r\n                onClose(data, stepData, bidStep)\r\n              }\r\n\r\n              setOpen(open)\r\n            }}\r\n            loading={loading}\r\n            onPointerDownOutside={(e) => {\r\n              if (\r\n                e.target instanceof Element &&\r\n                datetimeElement.current?.flatpickr?.calendarContainer &&\r\n                datetimeElement.current.flatpickr.calendarContainer.contains(\r\n                  e.target\r\n                )\r\n              ) {\r\n                e.preventDefault()\r\n              }\r\n              if (onPointerDownOutside) {\r\n                onPointerDownOutside(e)\r\n              }\r\n            }}\r\n            onFocusCapture={(e) => {\r\n              e.stopPropagation()\r\n            }}\r\n          >\r\n            {bidStep === BidStep.SetPrice && !loading && collection && (\r\n              <Flex direction=\"column\">\r\n                <TokenInfo\r\n                  chain={modalChain}\r\n                  token={token ? token : undefined}\r\n                  collection={collection}\r\n                  containerCss={{\r\n                    borderBottom: '1px solid',\r\n                    borderBottomColor: '$neutralLine',\r\n                    borderColor: '$neutralLine',\r\n                  }}\r\n                />\r\n                <Flex\r\n                  justify=\"between\"\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ width: '100%', p: '$4', gap: 24, overflow: 'hidden' }}\r\n                >\r\n                  <Flex direction=\"column\" css={{ gap: '$2', width: '100%' }}>\r\n                    <Flex justify=\"between\" css={{ gap: '$3' }}>\r\n                      <Text style=\"subtitle2\">Offer Price</Text>\r\n                      <Text\r\n                        as={Flex}\r\n                        css={{ gap: '$1' }}\r\n                        align=\"center\"\r\n                        style=\"subtitle3\"\r\n                      >\r\n                        Balance:{' '}\r\n                        <FormatWrappedCurrency\r\n                          chainId={modalChain?.id}\r\n                          logoWidth={10}\r\n                          textStyle=\"tiny\"\r\n                          amount={wrappedBalance?.[0]}\r\n                          address={wrappedContractAddress}\r\n                          decimals={wrappedBalance?.[1]}\r\n                          symbol={wrappedBalance?.[2]}\r\n                        />{' '}\r\n                      </Text>\r\n                    </Flex>\r\n\r\n                    <Flex css={{ mt: '$2', gap: quantityEnabled ? '$2' : 20 }}>\r\n                      <Text\r\n                        as={Flex}\r\n                        css={{ gap: '$2', flexShrink: 0 }}\r\n                        align=\"center\"\r\n                        style=\"body1\"\r\n                        color=\"subtle\"\r\n                      >\r\n                        {currency && currencies.length > 1 ? (\r\n                          <CurrencySelector\r\n                            chainId={modalChain?.id}\r\n                            currency={currency}\r\n                            currencies={currencies}\r\n                            setCurrency={setCurrency}\r\n                            triggerCss={{\r\n                              backgroundColor: '$neutralBgHover',\r\n                              borderRadius: 8,\r\n                              p: '$3',\r\n                              width: 120,\r\n                              flexShrink: 0,\r\n                              height: 44,\r\n                            }}\r\n                          />\r\n                        ) : (\r\n                          <>\r\n                            <CryptoCurrencyIcon\r\n                              chainId={modalChain?.id}\r\n                              css={{ height: 20 }}\r\n                              address={wrappedContractAddress}\r\n                            />\r\n                            {wrappedContractName}\r\n                          </>\r\n                        )}\r\n                      </Text>\r\n                      <Input\r\n                        type=\"number\"\r\n                        value={bidAmountPerUnit}\r\n                        onChange={(e) => {\r\n                          setBidAmountPerUnit(e.target.value)\r\n                        }}\r\n                        placeholder=\"Enter price\"\r\n                        containerCss={{\r\n                          width: '100%',\r\n                        }}\r\n                        css={{\r\n                          textAlign: 'center',\r\n                          '@bp1': {\r\n                            textAlign: 'left',\r\n                          },\r\n                        }}\r\n                      />\r\n                      {topOfferButtonEnabled ? (\r\n                        <Button\r\n                          color=\"secondary\"\r\n                          size=\"none\"\r\n                          css={{\r\n                            height: 44,\r\n                            px: '$4',\r\n                            borderRadius: 8,\r\n                            fontWeight: 500,\r\n                            flexShrink: 0,\r\n                          }}\r\n                          onClick={handleSetBestOffer}\r\n                        >\r\n                          Best Offer\r\n                        </Button>\r\n                      ) : null}\r\n                    </Flex>\r\n\r\n                    {totalBidAmount !== 0n && !withinPricingBounds && (\r\n                      <Box>\r\n                        <Text style=\"body2\" color=\"error\">\r\n                          {maximumAmount !== Infinity\r\n                            ? `Amount must be between ${formatNumber(\r\n                                minimumAmount,\r\n                                6\r\n                              )} - ${formatNumber(maximumAmount)}`\r\n                            : `Amount must be higher than ${formatNumber(\r\n                                minimumAmount,\r\n                                6\r\n                              )}`}\r\n                        </Text>\r\n                      </Box>\r\n                    )}\r\n\r\n                    {attributes &&\r\n                      attributes.length > 0 &&\r\n                      (attributesSelectable || trait) &&\r\n                      !tokenId &&\r\n                      traitBidSupported && (\r\n                        <>\r\n                          <Popover.Root\r\n                            open={attributeSelectorOpen}\r\n                            onOpenChange={\r\n                              attributesSelectable\r\n                                ? setAttributeSelectorOpen\r\n                                : undefined\r\n                            }\r\n                          >\r\n                            <Popover.Trigger asChild>\r\n                              {trait ? (\r\n                                <PseudoInput css={{ py: '$3' }}>\r\n                                  <Flex\r\n                                    justify=\"between\"\r\n                                    css={{\r\n                                      gap: '$2',\r\n                                      alignItems: 'center',\r\n                                      color: '$neutralText',\r\n                                    }}\r\n                                  >\r\n                                    <Box\r\n                                      css={{\r\n                                        maxWidth: 385,\r\n                                        overflow: 'hidden',\r\n                                        textOverflow: 'ellipsis',\r\n                                        whiteSpace: 'nowrap',\r\n                                      }}\r\n                                    >\r\n                                      <Text color=\"accent\" style=\"subtitle1\">\r\n                                        {trait?.key}:{' '}\r\n                                      </Text>\r\n                                      <Text style=\"subtitle1\">\r\n                                        {trait?.value}\r\n                                      </Text>\r\n                                    </Box>\r\n                                    <Flex\r\n                                      css={{\r\n                                        alignItems: 'center',\r\n                                        gap: '$2',\r\n                                      }}\r\n                                    >\r\n                                      {trait?.floorAskPrice && (\r\n                                        <Box css={{ flex: 'none' }}>\r\n                                          <FormatCryptoCurrency\r\n                                            amount={trait?.floorAskPrice}\r\n                                            maximumFractionDigits={2}\r\n                                            logoWidth={11}\r\n                                            textStyle=\"body1\"\r\n                                          />\r\n                                        </Box>\r\n                                      )}\r\n                                      <FontAwesomeIcon\r\n                                        style={{\r\n                                          cursor: 'pointer',\r\n                                        }}\r\n                                        onClick={(e) => {\r\n                                          e.preventDefault()\r\n                                          setTrait(undefined)\r\n                                        }}\r\n                                        icon={faClose}\r\n                                        width={16}\r\n                                        height={16}\r\n                                      />\r\n                                    </Flex>\r\n                                  </Flex>\r\n                                </PseudoInput>\r\n                              ) : (\r\n                                <Button\r\n                                  color=\"ghost\"\r\n                                  css={{\r\n                                    color: '$accentText',\r\n                                    fontWeight: 500,\r\n                                    fontSize: 14,\r\n                                    maxWidth: 'max-content',\r\n                                  }}\r\n                                  size=\"none\"\r\n                                >\r\n                                  + Add Attribute\r\n                                </Button>\r\n                              )}\r\n                            </Popover.Trigger>\r\n                            <Popover.Content\r\n                              side=\"bottom\"\r\n                              align=\"start\"\r\n                              sideOffset={-20}\r\n                              style={{ maxWidth: '100vw' }}\r\n                            >\r\n                              <AttributeSelector\r\n                                attributes={attributes}\r\n                                tokenCount={tokenCount}\r\n                                setTrait={setTrait}\r\n                                setOpen={setAttributeSelectorOpen}\r\n                              />\r\n                            </Popover.Content>\r\n                          </Popover.Root>\r\n                        </>\r\n                      )}\r\n                  </Flex>\r\n\r\n                  {quantityEnabled ? (\r\n                    <Flex\r\n                      justify=\"between\"\r\n                      align=\"center\"\r\n                      css={{ gap: '$5', width: '100%' }}\r\n                    >\r\n                      <Flex\r\n                        direction=\"column\"\r\n                        align=\"start\"\r\n                        css={{ gap: '$2', flexShrink: 0 }}\r\n                      >\r\n                        <Text style=\"subtitle2\">Quantity</Text>\r\n                        <Text\r\n                          color=\"subtle\"\r\n                          style=\"body3\"\r\n                          css={{\r\n                            display: 'none',\r\n                            '@bp1': {\r\n                              display: 'block',\r\n                            },\r\n                          }}\r\n                        >\r\n                          Offers can be accepted separately\r\n                        </Text>\r\n                      </Flex>\r\n                      <QuantitySelector\r\n                        quantity={quantity}\r\n                        setQuantity={setQuantity}\r\n                        min={1}\r\n                        max={999999}\r\n                        css={{ justifyContent: 'space-between', width: '100%' }}\r\n                      />\r\n                    </Flex>\r\n                  ) : null}\r\n\r\n                  <Flex direction=\"column\" css={{ gap: '$2', width: '100%' }}>\r\n                    <Text as={Box} style=\"subtitle2\">\r\n                      Expiration Date\r\n                    </Text>\r\n                    <Flex css={{ gap: '$2' }}>\r\n                      <Select\r\n                        css={{\r\n                          flex: 1,\r\n                          '@bp1': {\r\n                            width: 160,\r\n                            flexDirection: 'row',\r\n                          },\r\n                        }}\r\n                        value={expirationOption?.text || ''}\r\n                        onValueChange={(value: string) => {\r\n                          const option = expirationOptions.find(\r\n                            (option) => option.value == value\r\n                          )\r\n                          if (option) {\r\n                            setExpirationOption(option)\r\n                          }\r\n                        }}\r\n                      >\r\n                        {expirationOptions\r\n                          .filter(({ value }) => value !== 'custom')\r\n                          .map((option) => (\r\n                            <Select.Item key={option.text} value={option.value}>\r\n                              <Select.ItemText>{option.text}</Select.ItemText>\r\n                            </Select.Item>\r\n                          ))}\r\n                      </Select>\r\n                      <DateInput\r\n                        ref={datetimeElement}\r\n                        icon={\r\n                          <FontAwesomeIcon\r\n                            icon={faCalendar}\r\n                            width={14}\r\n                            height={16}\r\n                          />\r\n                        }\r\n                        value={expirationDate}\r\n                        options={{\r\n                          chainId: modalChain?.id,\r\n                          minDate: MINIMUM_DATE,\r\n                          enableTime: true,\r\n                          minuteIncrement: 1,\r\n                        }}\r\n                        defaultValue={expirationDate}\r\n                        onChange={(e: any) => {\r\n                          if (Array.isArray(e)) {\r\n                            const customOption = expirationOptions.find(\r\n                              (option) => option.value === 'custom'\r\n                            )\r\n                            if (customOption) {\r\n                              setExpirationOption({\r\n                                ...customOption,\r\n                                relativeTime: e[0] / 1000,\r\n                              })\r\n                            }\r\n                          }\r\n                        }}\r\n                        containerCss={{\r\n                          width: 46,\r\n                          '@bp1': {\r\n                            flex: 1,\r\n                            width: '100%',\r\n                          },\r\n                        }}\r\n                        css={{\r\n                          padding: 0,\r\n                          '@bp1': {\r\n                            padding: '12px 16px 12px 48px',\r\n                          },\r\n                        }}\r\n                      />\r\n                    </Flex>\r\n                  </Flex>\r\n\r\n                  <Flex\r\n                    justify=\"between\"\r\n                    align=\"center\"\r\n                    css={{ gap: '$4', width: '100%' }}\r\n                  >\r\n                    <Text style=\"h6\">Total Offer Price</Text>\r\n                    <Flex direction=\"column\" align=\"end\">\r\n                      <FormatWrappedCurrency\r\n                        chainId={modalChain?.id}\r\n                        logoWidth={16}\r\n                        textStyle=\"h6\"\r\n                        amount={totalBidAmount}\r\n                        address={currency?.contract}\r\n                        decimals={currency?.decimals}\r\n                        symbol={currency?.symbol}\r\n                      />\r\n                      <FormatCurrency\r\n                        style=\"subtitle3\"\r\n                        color=\"subtle\"\r\n                        amount={totalBidAmountUsd}\r\n                      />\r\n                    </Flex>\r\n                  </Flex>\r\n                  <Box css={{ width: '100%', mt: 'auto' }}>\r\n                    {oracleEnabled && (\r\n                      <Text\r\n                        style=\"body2\"\r\n                        color=\"subtle\"\r\n                        css={{\r\n                          mb: 10,\r\n                          textAlign: 'center',\r\n                          width: '100%',\r\n                          display: 'block',\r\n                        }}\r\n                      >\r\n                        You can change or cancel your offer for free on{' '}\r\n                        {localMarketplace?.title}.\r\n                      </Text>\r\n                    )}\r\n                    {!canPurchase && (\r\n                      <Button disabled={true} css={{ width: '100%' }}>\r\n                        {copy.ctaBidDisabled}\r\n                      </Button>\r\n                    )}\r\n                    {canPurchase && hasEnoughWrappedCurrency && (\r\n                      <Button\r\n                        onClick={() => placeBid()}\r\n                        css={{ width: '100%' }}\r\n                      >\r\n                        {ctaButtonText}\r\n                      </Button>\r\n                    )}\r\n                    {canPurchase && !hasEnoughWrappedCurrency && (\r\n                      <>\r\n                        {!hasEnoughNativeCurrency && (\r\n                          <Flex css={{ gap: '$2', mt: 10 }} justify=\"center\">\r\n                            <Text style=\"body3\" color=\"error\">\r\n                              {balance?.symbol || 'ETH'} Balance\r\n                            </Text>\r\n                            <FormatCryptoCurrency\r\n                              chainId={modalChain?.id}\r\n                              amount={balance?.value}\r\n                              symbol={balance?.symbol}\r\n                            />\r\n                          </Flex>\r\n                        )}\r\n                        <Flex\r\n                          css={{\r\n                            gap: '$2',\r\n                            mt: 10,\r\n                            overflow: 'hidden',\r\n                            flexDirection: 'column-reverse',\r\n                            '@bp1': {\r\n                              flexDirection: 'row',\r\n                            },\r\n                          }}\r\n                        >\r\n                          <Button\r\n                            disabled={providerOptionsContext.disableJumperLink}\r\n                            css={{ flex: '1 0 auto' }}\r\n                            color=\"secondary\"\r\n                            onClick={() => {\r\n                              window.open(convertLink, '_blank')\r\n                            }}\r\n                          >\r\n                            {providerOptionsContext.disableJumperLink\r\n                              ? ctaButtonText\r\n                              : copy.ctaConvertManually}\r\n                          </Button>\r\n                          {canAutomaticallyConvert && (\r\n                            <Button\r\n                              css={{ flex: 1, maxHeight: 44 }}\r\n                              disabled={!hasEnoughNativeCurrency}\r\n                              onClick={() => placeBid()}\r\n                            >\r\n                              <Text style=\"h6\" color=\"button\" ellipsify>\r\n                                {copy.ctaConvertAutomatically.length > 0\r\n                                  ? copy.ctaConvertAutomatically\r\n                                  : `Convert ${amountToWrap} ${\r\n                                      balance?.symbol?.toUpperCase() || 'AURA'\r\n                                    } for me`}\r\n                              </Text>\r\n                            </Button>\r\n                          )}\r\n                        </Flex>\r\n                      </>\r\n                    )}\r\n                  </Box>\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n\r\n            {bidStep === BidStep.Offering && collection && (\r\n              <Flex direction=\"column\">\r\n                <TokenInfo\r\n                  chain={modalChain}\r\n                  token={token ? token : undefined}\r\n                  collection={collection}\r\n                  price={totalBidAmount}\r\n                  currency={currency}\r\n                  quantity={quantity}\r\n                  trait={trait}\r\n                  expirationOption={expirationOption}\r\n                  containerCss={{\r\n                    borderBottom: '1px solid',\r\n                    borderBottomColor: '$neutralLine',\r\n                    borderColor: '$neutralLine',\r\n                  }}\r\n                />\r\n                <Flex\r\n                  justify=\"between\"\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ width: '100%', p: '$4', gap: 24 }}\r\n                >\r\n                  {transactionError && (\r\n                    <ErrorWell\r\n                      error={transactionError}\r\n                      css={{ width: '100%' }}\r\n                    />\r\n                  )}\r\n                  {stepData && (\r\n                    <>\r\n                      <Text css={{ textAlign: 'center' }} style=\"subtitle1\">\r\n                        {stepTitle}\r\n                      </Text>\r\n                      {stepData.currentStep.kind === 'signature' && (\r\n                        <TransactionProgress\r\n                          justify=\"center\"\r\n                          fromImg={itemImage || ''}\r\n                          toImgs={[localMarketplace?.icon || '']}\r\n                        />\r\n                      )}\r\n                      {stepData.currentStep.kind !== 'signature' && (\r\n                        <Flex align=\"center\" justify=\"center\">\r\n                          <Flex\r\n                            css={{\r\n                              background: '$neutralLine',\r\n                              borderRadius: 8,\r\n                            }}\r\n                          >\r\n                            <CryptoCurrencyIcon\r\n                              chainId={modalChain?.id}\r\n                              css={{ height: 56, width: 56 }}\r\n                              address={wrappedContractAddress}\r\n                            />\r\n                          </Flex>\r\n                        </Flex>\r\n                      )}\r\n                      <Text\r\n                        css={{\r\n                          textAlign: 'center',\r\n                          mt: 24,\r\n                          maxWidth: 395,\r\n                          mx: 'auto',\r\n                          mb: '$4',\r\n                        }}\r\n                        style=\"body2\"\r\n                        color=\"subtle\"\r\n                      >\r\n                        {stepData?.currentStep.description}\r\n                      </Text>\r\n                    </>\r\n                  )}\r\n                  {!stepData && (\r\n                    <Flex\r\n                      css={{ height: '100%', py: '$5' }}\r\n                      justify=\"center\"\r\n                      align=\"center\"\r\n                    >\r\n                      <Loader />\r\n                    </Flex>\r\n                  )}\r\n                  {!transactionError && (\r\n                    <Button css={{ width: '100%', mt: 'auto' }} disabled={true}>\r\n                      <Loader />\r\n                      {copy.ctaAwaitingApproval}\r\n                    </Button>\r\n                  )}\r\n                  {transactionError && (\r\n                    <Flex css={{ mt: 'auto', gap: 10, width: '100%' }}>\r\n                      <Button\r\n                        color=\"secondary\"\r\n                        css={{ flex: 1 }}\r\n                        onClick={() => setBidStep(BidStep.SetPrice)}\r\n                      >\r\n                        {copy.ctaEditOffer}\r\n                      </Button>\r\n                      <Button css={{ flex: 1 }} onClick={() => placeBid()}>\r\n                        {copy.ctaRetry}\r\n                      </Button>\r\n                    </Flex>\r\n                  )}\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n\r\n            {bidStep === BidStep.Complete && (\r\n              <Flex direction=\"column\" align=\"center\" css={{ p: '$4' }}>\r\n                <Box css={{ color: '$successAccent', mt: 48 }}>\r\n                  <FontAwesomeIcon\r\n                    icon={faCheckCircle}\r\n                    style={{ width: '32px', height: '32px' }}\r\n                  />\r\n                </Box>\r\n                <Text style=\"h5\" css={{ textAlign: 'center', mt: 36, mb: 80 }}>\r\n                  Offer Submitted!\r\n                </Text>\r\n                {onViewOffers ? (\r\n                  <Button\r\n                    css={{ width: '100%' }}\r\n                    onClick={() => {\r\n                      onViewOffers()\r\n                    }}\r\n                  >\r\n                    {copy.ctaViewOffers}\r\n                  </Button>\r\n                ) : (\r\n                  <Button\r\n                    css={{ width: '100%' }}\r\n                    onClick={() => {\r\n                      setOpen(false)\r\n                    }}\r\n                  >\r\n                    {copy.ctaClose}\r\n                  </Button>\r\n                )}\r\n              </Flex>\r\n            )}\r\n            {bidStep === BidStep.Unavailable && !loading && (\r\n              <Flex\r\n                direction=\"column\"\r\n                align=\"center\"\r\n                css={{ p: '$4', gap: '$5' }}\r\n              >\r\n                <Box css={{ color: '$neutralSolid', mt: 48 }}>\r\n                  <FontAwesomeIcon\r\n                    icon={faHand}\r\n                    style={{ width: '32px', height: '32px' }}\r\n                  />\r\n                </Box>\r\n\r\n                <Text\r\n                  style=\"h6\"\r\n                  css={{ maxWidth: 350, mb: '$3', textAlign: 'center' }}\r\n                >\r\n                  {!collectionBidSupported\r\n                    ? 'This collection does not support placing a collection offer.'\r\n                    : 'Oops, this collection does not support bidding.'}\r\n                </Text>\r\n                <Button\r\n                  css={{ width: '100%' }}\r\n                  onClick={() => {\r\n                    setOpen(false)\r\n                  }}\r\n                >\r\n                  {copy.ctaClose}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n          </Modal>\r\n        )\r\n      }}\r\n    </BidModalRenderer>\r\n  )\r\n}\r\n\r\nBidModal.Custom = BidModalRenderer\r\n","import { default as FlatpickrModule } from 'react-flatpickr'\r\nimport Input from './Input'\r\nimport React, {\r\n  ComponentPropsWithoutRef,\r\n  ComponentPropsWithRef,\r\n  ElementRef,\r\n  forwardRef,\r\n} from 'react'\r\n\r\n//@ts-ignore\r\nconst Flatpickr = FlatpickrModule.default\r\n\r\ntype FlatPickrProps = ComponentPropsWithoutRef<typeof Flatpickr>\r\n\r\ntype Props = Omit<ComponentPropsWithRef<typeof Input>, 'onChange' | 'value'> & {\r\n  onChange: FlatPickrProps['onChange']\r\n  value: FlatPickrProps['value']\r\n  defaultValue: FlatPickrProps['defaultValue']\r\n  options?: FlatPickrProps['options']\r\n}\r\n\r\nexport default forwardRef<ElementRef<typeof Flatpickr>, Props>(\r\n  ({ options, onChange, value, defaultValue, ...inputProps }, forwardedRef) => {\r\n    return (\r\n      <Flatpickr\r\n        ref={forwardedRef}\r\n        value={value}\r\n        options={{ dateFormat: 'm/d/Y h:i K', ...options }}\r\n        onChange={onChange}\r\n        defaultValue={defaultValue}\r\n        render={({ defaultValue }: any, ref: any) => {\r\n          return <Input {...inputProps} ref={ref} defaultValue={defaultValue} />\r\n        }}\r\n      />\r\n    )\r\n  }\r\n)\r\n","import React, { FC, ComponentProps } from 'react'\r\nimport wrappedContracts from '../constants/wrappedContracts'\r\nimport { useAccount, useChains } from 'wagmi'\r\nimport FormatCryptoCurrency from './FormatCryptoCurrency'\r\n\r\ntype Props = ComponentProps<typeof FormatCryptoCurrency> & {\r\n  logoWidth?: number\r\n  address?: string\r\n}\r\n\r\nconst FormatWrappedCurrency: FC<Props> = ({ logoWidth, address, ...props }) => {\r\n  const { chain: activeChain } = useAccount()\r\n  const chains = useChains()\r\n  let chain = chains.find((chain) => activeChain?.id === chain.id)\r\n\r\n  if (!chain && chains.length > 0) {\r\n    chain = chains[0]\r\n  } else {\r\n    chain = activeChain\r\n  }\r\n\r\n  const contractAddress =\r\n    chain?.id !== undefined && chain.id in wrappedContracts\r\n      ? wrappedContracts[chain.id]\r\n      : wrappedContracts[1]\r\n\r\n  return (\r\n    <FormatCryptoCurrency {...props} address={address || contractAddress} />\r\n  )\r\n}\r\n\r\nexport default FormatWrappedCurrency\r\n","import React, {\r\n  FC,\r\n  useEffect,\r\n  useState,\r\n  useCallback,\r\n  ReactNode,\r\n  useMemo,\r\n} from 'react'\r\nimport {\r\n  useTokens,\r\n  useCoinConversion,\r\n  useReservoirClient,\r\n  useCollections,\r\n  useAttributes,\r\n  useChainCurrency,\r\n  useMarketplaces,\r\n} from '../../hooks'\r\nimport {\r\n  useAccount,\r\n  useBalance,\r\n  useConfig,\r\n  useReadContracts,\r\n  useWalletClient,\r\n} from 'wagmi'\r\nimport { mainnet, goerli } from 'wagmi/chains'\r\n\r\nimport {\r\n  Execute,\r\n  ReservoirClientActions,\r\n  ReservoirWallet,\r\n  axios,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport { ExpirationOption } from '../../types/ExpirationOption'\r\nimport defaultExpirationOptions from '../../lib/defaultExpirationOptions'\r\nimport { formatBN } from '../../lib/numbers'\r\n\r\nimport dayjs from 'dayjs'\r\nimport wrappedContractNames from '../../constants/wrappedContractNames'\r\nimport wrappedContracts from '../../constants/wrappedContracts'\r\nimport { Currency } from '../../types/Currency'\r\nimport {\r\n  Address,\r\n  WalletClient,\r\n  createPublicClient,\r\n  erc20Abi,\r\n  formatUnits,\r\n  http,\r\n  parseEther,\r\n  parseGwei,\r\n  parseUnits,\r\n  zeroAddress,\r\n} from 'viem'\r\nimport { getAccount, getWalletClient, switchChain } from 'wagmi/actions'\r\nimport { Marketplace } from '../../hooks/useMarketplaces'\r\nimport { ChainConfig, ContractConfig, HALO_TRADE } from '../../constants/common'\r\n\r\nconst expirationOptions = [\r\n  ...defaultExpirationOptions,\r\n  {\r\n    text: 'Custom',\r\n    value: 'custom',\r\n    relativeTime: null,\r\n    relativeTimeUnit: null,\r\n  },\r\n]\r\n\r\nexport type FetchBalanceResult = {\r\n  decimals: number\r\n  formatted: string\r\n  symbol: string\r\n  value: bigint\r\n}\r\n\r\nexport enum BidStep {\r\n  SetPrice,\r\n  Offering,\r\n  Complete,\r\n  Unavailable,\r\n}\r\n\r\nexport type Traits =\r\n  | NonNullable<ReturnType<typeof useAttributes>['data']>\r\n  | undefined\r\n\r\nexport type Trait =\r\n  | {\r\n      key: string\r\n      value: string\r\n      floorAskPrice?: number\r\n    }\r\n  | undefined\r\n\r\ntype Exchange = NonNullable<Marketplace['exchanges']>['string']\r\n\r\ntype ChildrenProps = {\r\n  token?: NonNullable<NonNullable<ReturnType<typeof useTokens>>['data']>[0]\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  attributes?: Traits\r\n  bidAmountPerUnit: string\r\n  totalBidAmount: bigint\r\n  totalBidAmountUsd: number\r\n  quantity: number\r\n  setQuantity: React.Dispatch<React.SetStateAction<number>>\r\n  bidData: BidData | null\r\n  bidStep: BidStep\r\n  hasEnoughNativeCurrency: boolean\r\n  hasEnoughWrappedCurrency: boolean\r\n  loading: boolean\r\n  traitBidSupported: boolean\r\n  collectionBidSupported: boolean\r\n  partialBidSupported: boolean\r\n  biddingSupported: boolean\r\n  amountToWrap: string\r\n  usdPrice: number | null\r\n  balance?: FetchBalanceResult\r\n  wrappedBalance?: [bigint, number, string]\r\n  wrappedContractName: string\r\n  wrappedContractAddress: string\r\n  canAutomaticallyConvert: boolean\r\n  convertLink: string\r\n  transactionError?: Error | null\r\n  expirationOptions: ExpirationOption[]\r\n  expirationOption: ExpirationOption\r\n  stepData: BidModalStepData | null\r\n  currencies: Currency[]\r\n  currency?: Currency\r\n  exchange?: Exchange\r\n  feeBps?: number\r\n  setCurrency: (currency: Currency) => void\r\n  setBidStep: React.Dispatch<React.SetStateAction<BidStep>>\r\n  setBidAmountPerUnit: React.Dispatch<React.SetStateAction<string>>\r\n  setExpirationOption: React.Dispatch<React.SetStateAction<ExpirationOption>>\r\n  setTrait: React.Dispatch<React.SetStateAction<Trait>>\r\n  trait: Trait\r\n  placeBid: (options?: { royaltyBps?: number }) => void\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  tokenId?: string\r\n  chainId?: number\r\n  collectionId?: string\r\n  attribute?: Trait\r\n  normalizeRoyalties?: boolean\r\n  currencies?: Currency[]\r\n  oracleEnabled: boolean\r\n  feesBps?: string[] | null\r\n  orderKind?: BidData['orderKind']\r\n  children: (props: ChildrenProps) => ReactNode\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  usePermit?: boolean\r\n}\r\n\r\nexport const BID_AMOUNT_MINIMUM = 0.000001\r\n\r\nexport type BidData = Parameters<\r\n  ReservoirClientActions['placeBid']\r\n>['0']['bids'][0]\r\n\r\nexport type BidModalStepData = {\r\n  totalSteps: number\r\n  stepProgress: number\r\n  currentStep: Execute['steps'][0]\r\n}\r\n\r\nexport const BidModalRenderer: FC<Props> = ({\r\n  open,\r\n  tokenId,\r\n  chainId,\r\n  collectionId,\r\n  orderKind,\r\n  attribute,\r\n  normalizeRoyalties,\r\n  currencies: preferredCurrencies,\r\n  oracleEnabled = false,\r\n  feesBps,\r\n  children,\r\n  walletClient,\r\n  usePermit,\r\n}) => {\r\n  const client = useReservoirClient()\r\n  const currentChain = client?.currentChain()\r\n\r\n  const rendererChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const { data: wagmiWallet } = useWalletClient({ chainId: rendererChain?.id })\r\n  const config = useConfig()\r\n\r\n  const wallet = walletClient || wagmiWallet\r\n\r\n  const [bidStep, setBidStep] = useState<BidStep>(BidStep.SetPrice)\r\n  const [transactionError, setTransactionError] = useState<Error | null>()\r\n  const [bidAmountPerUnit, setBidAmountPerUnit] = useState<string>('')\r\n  const [quantity, setQuantity] = useState(1)\r\n  const [expirationOption, setExpirationOption] = useState<ExpirationOption>(\r\n    expirationOptions[3]\r\n  )\r\n  const [hasEnoughNativeCurrency, setHasEnoughNativeCurrency] = useState(false)\r\n  const [hasEnoughWrappedCurrency, setHasEnoughWrappedCurrency] =\r\n    useState(false)\r\n  const [amountToWrap, setAmountToWrap] = useState('')\r\n  const [stepData, setStepData] = useState<BidModalStepData | null>(null)\r\n  const [bidData, setBidData] = useState<BidData | null>(null)\r\n  const contract = collectionId ? collectionId?.split(':')[0] : undefined\r\n  const [trait, setTrait] = useState<Trait>(attribute)\r\n  const [attributes, setAttributes] = useState<Traits>()\r\n  const chainCurrency = useChainCurrency(rendererChain?.id)\r\n  const [publicClient, setPublicClient] = useState<any>(undefined)\r\n  const [isApproveModule, setIsApproveModule] = useState(false)\r\n  const [wAuraBalance, setWAuraBalance] = useState(0n)\r\n\r\n  const account = useAccount()\r\n  const auraEVMTestnet = ChainConfig[chainId ? chainId : 1235]\r\n\r\n  useEffect(() => {\r\n    setPublicClient(\r\n      createPublicClient({\r\n        chain: ChainConfig[chainId ? chainId : 1235],\r\n        transport: http(),\r\n      })\r\n    )\r\n  }, [])\r\n\r\n  const nativeWrappedContractAddress =\r\n    chainCurrency.chainId in wrappedContracts\r\n      ? wrappedContracts[chainCurrency.chainId]\r\n      : wrappedContracts[1]\r\n  const nativeWrappedContractName =\r\n    chainCurrency.chainId in wrappedContractNames\r\n      ? wrappedContractNames[chainCurrency.chainId]\r\n      : wrappedContractNames[1]\r\n\r\n  const defaultCurrency = {\r\n    contract: nativeWrappedContractAddress,\r\n    symbol: nativeWrappedContractName,\r\n  }\r\n  const [currency, setCurrency] = useState<Currency>(\r\n    preferredCurrencies && preferredCurrencies[0]\r\n      ? preferredCurrencies[0]\r\n      : defaultCurrency\r\n  )\r\n  const [currencies, setCurrencies] = useState<Currency[] | undefined>(\r\n    preferredCurrencies\r\n  )\r\n\r\n  const wrappedContractAddress = currency\r\n    ? currency.contract\r\n    : nativeWrappedContractAddress\r\n  const wrappedContractName = currency\r\n    ? currency.symbol\r\n    : nativeWrappedContractName\r\n\r\n  const { data: tokens } = useTokens(\r\n    open &&\r\n      tokenId !== undefined && {\r\n        tokens: [`${contract}:${tokenId}`],\r\n        includeTopBid: true,\r\n        normalizeRoyalties,\r\n      },\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    rendererChain?.id\r\n  )\r\n\r\n  const { data: traits } = useAttributes(\r\n    open && !tokenId ? collectionId : undefined,\r\n    rendererChain?.id\r\n  )\r\n\r\n  const { data: collections } = useCollections(\r\n    open && {\r\n      id: collectionId,\r\n      normalizeRoyalties,\r\n    },\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n\r\n  const collection = collections && collections[0] ? collections[0] : undefined\r\n\r\n  const token = tokens && tokens.length > 0 ? tokens[0] : undefined\r\n  const usdConversion = useCoinConversion(\r\n    open ? 'USD' : undefined,\r\n    wrappedContractName\r\n  )\r\n  const usdPrice = usdConversion.length > 0 ? usdConversion[0].price : null\r\n  const totalBidAmount =\r\n    parseUnits(bidAmountPerUnit, currency?.decimals ?? 18) *\r\n    BigInt(quantity ?? 1)\r\n  const totalBidAmountUsd =\r\n    Number(formatUnits(totalBidAmount, currency?.decimals ?? 18)) *\r\n    (usdPrice || 0)\r\n\r\n  const [allMarketplaces] = useMarketplaces(\r\n    collectionId,\r\n    tokenId,\r\n    undefined,\r\n    undefined,\r\n    rendererChain?.id,\r\n    open\r\n  )\r\n\r\n  const reservoirMarketplace = useMemo(\r\n    () =>\r\n      allMarketplaces.find(\r\n        (marketplace) => marketplace.orderbook === 'reservoir'\r\n      ),\r\n    [allMarketplaces]\r\n  )\r\n\r\n  const exchange = useMemo(() => {\r\n    const exchanges: Record<string, Exchange> =\r\n      reservoirMarketplace?.exchanges || {}\r\n    const exchange = orderKind\r\n      ? exchanges[orderKind]\r\n      : Object.values(exchanges).find((exchange) => exchange?.enabled)\r\n    return exchange?.enabled ? exchange : undefined\r\n  }, [reservoirMarketplace, orderKind])\r\n\r\n  const traitBidSupported = Boolean(exchange?.traitBidSupported)\r\n  const collectionBidSupported = Boolean(exchange?.collectionBidSupported)\r\n  const partialBidSupported = Boolean(exchange?.partialOrderSupported)\r\n  const biddingSupported = exchange?.supportedBidCurrencies\r\n    ? exchange?.supportedBidCurrencies?.length > 0\r\n    : false\r\n\r\n  // Set bid step to unavailable if collection bid is not supported or if bidding is not supported\r\n  useEffect(() => {\r\n    if (\r\n      open &&\r\n      reservoirMarketplace &&\r\n      ((!tokenId && !collectionBidSupported) || !biddingSupported)\r\n    ) {\r\n      setBidStep(BidStep.Unavailable)\r\n    } else {\r\n      setBidStep(BidStep.SetPrice)\r\n    }\r\n  }, [\r\n    open,\r\n    tokenId,\r\n    reservoirMarketplace,\r\n    collectionBidSupported,\r\n    biddingSupported,\r\n  ])\r\n\r\n  const { address } = useAccount()\r\n  const { data: balance } = useBalance({\r\n    address: address,\r\n    chainId: rendererChain?.id,\r\n    query: {\r\n      enabled: open,\r\n    },\r\n  })\r\n\r\n  const { data: wrappedBalance } = useReadContracts({\r\n    allowFailure: false,\r\n    contracts: [\r\n      {\r\n        address: wrappedContractAddress as Address,\r\n        abi: erc20Abi,\r\n        functionName: 'balanceOf',\r\n        chainId: rendererChain?.id,\r\n        args: [address as Address],\r\n      },\r\n      {\r\n        address: wrappedContractAddress as Address,\r\n        abi: erc20Abi,\r\n        chainId: rendererChain?.id,\r\n        functionName: 'decimals',\r\n      },\r\n      {\r\n        address: wrappedContractAddress as Address,\r\n        abi: erc20Abi,\r\n        chainId: rendererChain?.id,\r\n        functionName: 'symbol',\r\n      },\r\n    ],\r\n    query: {\r\n      enabled: Boolean(open && address !== undefined),\r\n    },\r\n  })\r\n\r\n  const canAutomaticallyConvert =\r\n    !currency ||\r\n    currency.contract.toLowerCase() ===\r\n      nativeWrappedContractAddress.toLowerCase()\r\n  let convertLink: string = ''\r\n\r\n  if (canAutomaticallyConvert) {\r\n    // convertLink =\r\n    //   rendererChain?.id === mainnet.id || rendererChain?.id === goerli.id\r\n    //     ? `https://app.uniswap.org/#/swap?theme=dark&exactAmount=${amountToWrap}&chain=mainnet&inputCurrency=eth&outputCurrency=${wrappedContractAddress}`\r\n    //     : `https://app.uniswap.org/#/swap?theme=dark&exactAmount=${amountToWrap}`\r\n\r\n    convertLink = HALO_TRADE[rendererChain?.id || 1235]\r\n  } else {\r\n    // convertLink = `https://jumper.exchange/?toChain=${rendererChain?.id}&toToken=${wrappedContractAddress}`\r\n    convertLink = HALO_TRADE[rendererChain?.id || 1235]\r\n  }\r\n\r\n  const feeBps: number | undefined = useMemo(() => {\r\n    let bpsFees = feesBps || client?.marketplaceFees\r\n    if (bpsFees) {\r\n      return bpsFees.reduce((total, fee) => {\r\n        const bps = Number(fee.split(':')[1])\r\n        total += bps\r\n        return total\r\n      }, 0)\r\n    }\r\n  }, [feesBps, client?.marketplaceFees, currency])\r\n\r\n  useEffect(() => {\r\n    if (totalBidAmount !== 0n) {\r\n      const bid = totalBidAmount\r\n\r\n      if (!wrappedBalance?.[0] || wrappedBalance?.[0] < bid) {\r\n        setHasEnoughWrappedCurrency(false)\r\n        const wrappedAmount = wrappedBalance?.[0]\r\n          ? BigInt(wrappedBalance?.[0])\r\n          : BigInt(0)\r\n        const amountToWrap = bid - wrappedAmount\r\n        setAmountToWrap(formatBN(amountToWrap, 5))\r\n\r\n        if (!balance?.value || balance.value < amountToWrap) {\r\n          setHasEnoughNativeCurrency(false)\r\n        } else {\r\n          setHasEnoughNativeCurrency(true)\r\n        }\r\n      } else {\r\n        setHasEnoughWrappedCurrency(true)\r\n        setHasEnoughNativeCurrency(true)\r\n        setAmountToWrap('')\r\n      }\r\n    } else {\r\n      setHasEnoughNativeCurrency(true)\r\n      setHasEnoughWrappedCurrency(true)\r\n      setAmountToWrap('')\r\n    }\r\n  }, [totalBidAmount, balance, wrappedBalance])\r\n\r\n  useEffect(() => {\r\n    const validAttributes = traits\r\n      ? traits.filter(\r\n          (attribute) => attribute.values && attribute.values.length > 0\r\n        )\r\n      : undefined\r\n    setAttributes(validAttributes)\r\n  }, [traits])\r\n\r\n  useEffect(() => {\r\n    const validAttributes = traits\r\n      ? traits.filter(\r\n          (attribute) => attribute.values && attribute.values.length > 0\r\n        )\r\n      : undefined\r\n    setAttributes(validAttributes)\r\n  }, [traits])\r\n\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setBidStep(BidStep.SetPrice)\r\n      setExpirationOption(expirationOptions[3])\r\n      setHasEnoughNativeCurrency(false)\r\n      setHasEnoughWrappedCurrency(false)\r\n      setAmountToWrap('')\r\n      setBidAmountPerUnit('')\r\n      setQuantity(1)\r\n      setStepData(null)\r\n      setBidData(null)\r\n      setTransactionError(null)\r\n      setTrait(undefined)\r\n    } else {\r\n      setTrait(attribute)\r\n    }\r\n    setCurrency(currencies && currencies[0] ? currencies[0] : defaultCurrency)\r\n  }, [open])\r\n\r\n  open\r\n    ? (axios.defaults.headers.common['x-rkui-context'] = 'bidModalRenderer')\r\n    : delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  useEffect(() => {\r\n    const setDefaultCurrency = async () => {\r\n      const supportedCurrencies =\r\n        exchange?.supportedBidCurrencies?.map((currency) => {\r\n          return {\r\n            address: currency?.address?.toLowerCase() as string,\r\n            contract: currency?.address?.toLowerCase() as string,\r\n            decimals: currency?.decimals ?? 18,\r\n            name: currency?.name ?? '',\r\n            symbol: currency?.symbol ?? '',\r\n          }\r\n        }) || []\r\n      const supportedCurrencyAddresses = supportedCurrencies.map(\r\n        (currency) => currency.address\r\n      )\r\n      if (exchange?.paymentTokens) {\r\n        let restrictedCurrencies = exchange.paymentTokens\r\n          .filter(\r\n            (token) =>\r\n              token.address &&\r\n              token.symbol &&\r\n              supportedCurrencyAddresses.includes(token.address.toLowerCase())\r\n          )\r\n          .map((token) => ({\r\n            contract: token.address as string,\r\n            decimals: token.decimals,\r\n            name: token.name,\r\n            symbol: token.symbol as string,\r\n          }))\r\n        if (!restrictedCurrencies.length) {\r\n          restrictedCurrencies = supportedCurrencies ?? []\r\n        }\r\n        setCurrencies(restrictedCurrencies)\r\n\r\n        if (\r\n          !restrictedCurrencies.find(\r\n            (c) => currency.contract.toLowerCase() == c.contract.toLowerCase()\r\n          )\r\n        ) {\r\n          setCurrency(restrictedCurrencies[0])\r\n        }\r\n      } else {\r\n        const currencies = preferredCurrencies?.filter((currency) =>\r\n          currency.contract.toLowerCase()\r\n        )\r\n        setCurrency(\r\n          currencies && currencies[0] ? currencies[0] : defaultCurrency\r\n        )\r\n        setCurrencies(preferredCurrencies)\r\n      }\r\n    }\r\n    setDefaultCurrency()\r\n  }, [exchange, open])\r\n\r\n  useEffect(() => {\r\n    if (currencies && currencies.length > 5) {\r\n      console.warn(\r\n        'The BidModal UI was designed to have a maximum of 5 currencies, going above 5 may degrade the user experience.'\r\n      )\r\n    }\r\n  }, [currencies])\r\n\r\n  const checkBalanceWAura = () => {\r\n    publicClient\r\n      ?.readContract({\r\n        abi: [\r\n          {\r\n            inputs: [\r\n              {\r\n                internalType: 'address',\r\n                name: '',\r\n                type: 'address',\r\n              },\r\n            ],\r\n            stateMutability: 'view',\r\n            type: 'function',\r\n            name: 'balanceOf',\r\n            outputs: [\r\n              {\r\n                internalType: 'uint256',\r\n                name: '',\r\n                type: 'uint256',\r\n              },\r\n            ],\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.WETH as `0x${string}`,\r\n        functionName: 'balanceOf',\r\n        args: [account?.address as `0x${string}`],\r\n      })\r\n      .then((res: any) => {\r\n        if (res) {\r\n          setWAuraBalance(res)\r\n        }\r\n      })\r\n  }\r\n\r\n  const checkIsApproveModuleAsk = () => {\r\n    publicClient\r\n      ?.readContract({\r\n        abi: [\r\n          {\r\n            inputs: [\r\n              { internalType: 'address', name: '_user', type: 'address' },\r\n              { internalType: 'address', name: '_module', type: 'address' },\r\n            ],\r\n            name: 'isModuleApproved',\r\n            outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\r\n            stateMutability: 'view',\r\n            type: 'function',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.OFFER_MODULE_MANAGER as `0x${string}`,\r\n        functionName: 'isModuleApproved',\r\n        args: [\r\n          account?.address as `0x${string}`,\r\n          ContractConfig[chainId ? chainId : 1235]\r\n            ?.OFFERS_OMNIBUS as `0x${string}`,\r\n        ],\r\n      })\r\n      .then((res: any) => {\r\n        if (!res) {\r\n          triggerApproveModuleAsk()\r\n        } else {\r\n          triggerBidTokenContract()\r\n        }\r\n      })\r\n  }\r\n\r\n  const checkIsSetAllowance = () => {\r\n    publicClient\r\n      ?.readContract({\r\n        abi: [\r\n          {\r\n            type: 'function',\r\n            name: 'allowance',\r\n            inputs: [\r\n              {\r\n                name: '',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n              {\r\n                name: '',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n            ],\r\n            outputs: [\r\n              {\r\n                name: '',\r\n                type: 'uint256',\r\n                internalType: 'uint256',\r\n              },\r\n            ],\r\n            stateMutability: 'view',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.WETH as `0x${string}`,\r\n        functionName: 'allowance',\r\n        args: [\r\n          account?.address as `0x${string}`,\r\n          ContractConfig[chainId ? chainId : 1235]\r\n            ?.ERC20TransferHelper as `0x${string}`,\r\n        ],\r\n      })\r\n      .then((res: any) => {\r\n        if (res < totalBidAmount) {\r\n          let allowanceValue = totalBidAmount\r\n\r\n          triggerSetAllowance(allowanceValue)\r\n        } else {\r\n          checkIsApproveModuleAsk()\r\n        }\r\n      })\r\n  }\r\n\r\n  useEffect(() => {\r\n    if (publicClient) {\r\n      // checkIsApproveModuleAsk()\r\n      checkBalanceWAura()\r\n    }\r\n  }, [publicClient])\r\n\r\n  const triggerApproveModuleAsk = () => {\r\n    setBidStep(BidStep.Offering)\r\n    setStepData({\r\n      totalSteps: 1,\r\n      stepProgress: 1,\r\n      currentStep: {\r\n        kind: 'transaction',\r\n        action: 'Module Approval',\r\n        description:\r\n          'You will be prompted to grant approval for offering on the marketplace. You only need to approve it once.',\r\n        id: '1',\r\n      },\r\n    })\r\n    // approve module\r\n    wagmiWallet\r\n      ?.writeContract({\r\n        abi: [\r\n          {\r\n            inputs: [\r\n              {\r\n                internalType: 'address',\r\n                name: '_module',\r\n                type: 'address',\r\n              },\r\n              { internalType: 'bool', name: '_approved', type: 'bool' },\r\n            ],\r\n            name: 'setApprovalForModule',\r\n            outputs: [],\r\n            stateMutability: 'nonpayable',\r\n            type: 'function',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.OFFER_MODULE_MANAGER as `0x${string}`,\r\n        functionName: 'setApprovalForModule',\r\n        args: [\r\n          ContractConfig[chainId ? chainId : 1235]\r\n            ?.OFFERS_OMNIBUS as `0x${string}`,\r\n          true,\r\n        ],\r\n        gas: 500000n,\r\n      })\r\n      .then((hash) => {\r\n        publicClient\r\n          .waitForTransactionReceipt({ hash })\r\n          .then((res: any) => {\r\n            triggerBidTokenContract()\r\n          })\r\n          .catch((error: any) => {\r\n            triggerBidTokenContract()\r\n            setTransactionError(error)\r\n            setBidStep(BidStep.Offering)\r\n          })\r\n      })\r\n      .catch((err) => {\r\n        setTransactionError(err)\r\n        setBidStep(BidStep.Offering)\r\n      })\r\n  }\r\n\r\n  const triggerDepositWAura = () => {\r\n    setBidStep(BidStep.Offering)\r\n    setStepData({\r\n      totalSteps: 1,\r\n      stepProgress: 1,\r\n      currentStep: {\r\n        kind: 'transaction',\r\n        action: 'Wrapping currency',\r\n        description: `We'll ask your approval to wrap the currency for bidding. Gas fee required.`,\r\n        id: '1',\r\n      },\r\n    })\r\n\r\n    wagmiWallet\r\n      ?.writeContract({\r\n        abi: [\r\n          {\r\n            type: 'function',\r\n            name: 'deposit',\r\n            inputs: [],\r\n            outputs: [],\r\n            stateMutability: 'payable',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.WETH as `0x${string}`,\r\n        functionName: 'deposit',\r\n        args: [],\r\n        gas: 500000n,\r\n        value: totalBidAmount - (wrappedBalance?.[0] || 0n),\r\n      })\r\n      .then((hash) => {\r\n        publicClient\r\n          .waitForTransactionReceipt({ hash })\r\n          .then(() => {\r\n            // triggerBidTokenContract()\r\n            checkIsSetAllowance()\r\n          })\r\n          .catch((error: any) => {\r\n            // triggerBidTokenContract()\r\n            checkIsSetAllowance()\r\n            setTransactionError(error)\r\n          })\r\n      })\r\n      .catch((err) => {\r\n        setTransactionError(err)\r\n        setBidStep(BidStep.Offering)\r\n      })\r\n  }\r\n\r\n  const triggerBidTokenContract = async () => {\r\n    setBidStep(BidStep.Offering)\r\n    setStepData({\r\n      totalSteps: 1,\r\n      stepProgress: 1,\r\n      currentStep: {\r\n        kind: 'signature',\r\n        action: '',\r\n        description:\r\n          'Please review and confirm to create the offer from your wallet',\r\n        id: '1',\r\n      },\r\n    })\r\n    // Bid token\r\n    let expirationTime = 0\r\n    if (expirationOption.relativeTime) {\r\n      if (expirationOption.relativeTimeUnit) {\r\n        expirationTime = dayjs()\r\n          .add(expirationOption.relativeTime, expirationOption.relativeTimeUnit)\r\n          .unix()\r\n      } else {\r\n        expirationTime = expirationOption.relativeTime\r\n      }\r\n    }\r\n\r\n    const wagmiWalletClient = await getWalletClient(config, {\r\n      chainId: rendererChain?.id,\r\n    })\r\n\r\n    wagmiWalletClient\r\n      ?.writeContract({\r\n        abi: [\r\n          {\r\n            type: 'function',\r\n            name: 'createOffer',\r\n            inputs: [\r\n              {\r\n                name: '_tokenContract',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n              {\r\n                name: '_tokenId',\r\n                type: 'uint256',\r\n                internalType: 'uint256',\r\n              },\r\n              {\r\n                name: '_offerCurrency',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n              {\r\n                name: '_offerAmount',\r\n                type: 'uint256',\r\n                internalType: 'uint256',\r\n              },\r\n              {\r\n                name: '_expiry',\r\n                type: 'uint96',\r\n                internalType: 'uint96',\r\n              },\r\n              {\r\n                name: '_findersFeeBps',\r\n                type: 'uint16',\r\n                internalType: 'uint16',\r\n              },\r\n              {\r\n                name: '_listingFeeBps',\r\n                type: 'uint16',\r\n                internalType: 'uint16',\r\n              },\r\n              {\r\n                name: '_listingFeeRecipient',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n            ],\r\n            outputs: [\r\n              {\r\n                name: '',\r\n                type: 'uint256',\r\n                internalType: 'uint256',\r\n              },\r\n            ],\r\n            stateMutability: 'payable',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.OFFERS_OMNIBUS as `0x${string}`,\r\n        functionName: 'createOffer',\r\n        args: [\r\n          contract as `0x${string}`,\r\n          BigInt(Number(tokenId)),\r\n          wrappedContractAddress as `0x${string}`,\r\n          totalBidAmount,\r\n          BigInt(expirationTime),\r\n          0,\r\n          0,\r\n          zeroAddress,\r\n        ],\r\n        gas: 500000n,\r\n      })\r\n      .then((hash) => {\r\n        publicClient\r\n          .waitForTransactionReceipt({ hash })\r\n          .then((res: any) => {\r\n            if (res?.status === 'success') {\r\n              setTimeout(() => {\r\n                setBidStep(BidStep.Complete)\r\n              }, 5000)\r\n            } else {\r\n              setTransactionError({\r\n                name: 'reverted',\r\n                message: `Failed: Offer ${res?.status}`,\r\n              })\r\n            }\r\n          })\r\n          .catch((error: any) => {\r\n            setBidStep(BidStep.Offering)\r\n            setTransactionError(error)\r\n          })\r\n      })\r\n      .catch((err) => {\r\n        setTransactionError(err)\r\n        setBidStep(BidStep.Offering)\r\n      })\r\n  }\r\n\r\n  const triggerSetAllowance = (allowanceValue: bigint) => {\r\n    setBidStep(BidStep.Offering)\r\n    setStepData({\r\n      totalSteps: 1,\r\n      stepProgress: 1,\r\n      currentStep: {\r\n        kind: 'transaction',\r\n        action: 'Approve currency',\r\n        description: `We'll ask your approval for the exchange to access your token. This is a one-time only operation per exchange`,\r\n        id: '1',\r\n      },\r\n    })\r\n    // set allowance\r\n    wagmiWallet\r\n      ?.writeContract({\r\n        abi: [\r\n          {\r\n            type: 'function',\r\n            name: 'approve',\r\n            inputs: [\r\n              {\r\n                name: 'guy',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n              {\r\n                name: 'wad',\r\n                type: 'uint256',\r\n                internalType: 'uint256',\r\n              },\r\n            ],\r\n            outputs: [\r\n              {\r\n                name: '',\r\n                type: 'bool',\r\n                internalType: 'bool',\r\n              },\r\n            ],\r\n            stateMutability: 'nonpayable',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.WETH as `0x${string}`,\r\n        functionName: 'approve',\r\n        args: [\r\n          ContractConfig[chainId ? chainId : 1235]\r\n            ?.ERC20TransferHelper as `0x${string}`,\r\n          allowanceValue,\r\n        ],\r\n        gas: 500000n,\r\n      })\r\n      .then((hash) => {\r\n        publicClient\r\n          .waitForTransactionReceipt({ hash })\r\n          .then(() => {\r\n            checkIsApproveModuleAsk()\r\n          })\r\n          .catch((error: any) => {\r\n            checkIsApproveModuleAsk()\r\n\r\n            setTransactionError(error)\r\n          })\r\n      })\r\n      .catch((err) => {\r\n        setTransactionError(err)\r\n        setBidStep(BidStep.Offering)\r\n      })\r\n  }\r\n\r\n  const placeBid = useCallback(\r\n    async (options?: { royaltyBps?: number }) => {\r\n      if (!wallet) {\r\n        const error = new Error('Missing a wallet/signer')\r\n        setTransactionError(error)\r\n        throw error\r\n      }\r\n\r\n      let activeWalletChain = getAccount(config).chain\r\n      if (rendererChain?.id !== activeWalletChain?.id) {\r\n        activeWalletChain = await switchChain(config, {\r\n          chainId: rendererChain?.id as number,\r\n        })\r\n      }\r\n\r\n      if (rendererChain?.id !== activeWalletChain?.id) {\r\n        const error = new Error(`Mismatching chainIds`)\r\n        setTransactionError(error)\r\n        throw error\r\n      }\r\n\r\n      if (!tokenId && !collectionId) {\r\n        const error = new Error('Missing tokenId and collectionId')\r\n        setTransactionError(error)\r\n        throw error\r\n      }\r\n\r\n      if (!client) {\r\n        const error = new Error('ReservoirClient was not initialized')\r\n        setTransactionError(error)\r\n        throw error\r\n      }\r\n\r\n      if (!tokenId && !collectionBidSupported) {\r\n        const error = new Error(\r\n          'Collection bids are not supported for this collection'\r\n        )\r\n        setTransactionError(error)\r\n        throw error\r\n      }\r\n\r\n      if (!exchange) {\r\n        const error = new Error('Missing Exchange')\r\n        setTransactionError(error)\r\n        throw error\r\n      }\r\n\r\n      setBidStep(BidStep.Offering)\r\n      setTransactionError(null)\r\n      setBidData(null)\r\n\r\n      const bid: BidData = {\r\n        weiPrice: totalBidAmount.toString(),\r\n        orderbook: 'reservoir',\r\n        orderKind:\r\n          orderKind ||\r\n          (exchange?.orderKind as BidData['orderKind']) ||\r\n          'seaport',\r\n        attributeKey: traitBidSupported ? trait?.key : undefined,\r\n        attributeValue: traitBidSupported ? trait?.value : undefined,\r\n      }\r\n\r\n      if (feesBps && feesBps?.length > 0) {\r\n        bid.marketplaceFees = feesBps\r\n      } else if (!feesBps) {\r\n        delete bid.fees\r\n        delete bid.marketplaceFees\r\n      }\r\n\r\n      if (currency) {\r\n        bid.currency = currency.contract\r\n      }\r\n\r\n      if (tokenId && collectionId) {\r\n        const contract = collectionId ? collectionId?.split(':')[0] : undefined\r\n        bid.token = `${contract}:${tokenId}`\r\n      } else if (collectionId) {\r\n        bid.collection = collectionId\r\n      }\r\n\r\n      if (expirationOption.relativeTime) {\r\n        if (expirationOption.relativeTimeUnit) {\r\n          bid.expirationTime = dayjs()\r\n            .add(\r\n              expirationOption.relativeTime,\r\n              expirationOption.relativeTimeUnit\r\n            )\r\n            .unix()\r\n            .toString()\r\n        } else {\r\n          bid.expirationTime = `${expirationOption.relativeTime}`\r\n        }\r\n      }\r\n\r\n      if (oracleEnabled) {\r\n        bid.options = {\r\n          [exchange.orderKind as string]: {\r\n            useOffChainCancellation: true,\r\n          },\r\n        }\r\n      }\r\n\r\n      if (usePermit) {\r\n        bid.usePermit = true\r\n      }\r\n\r\n      if (quantity > 1) {\r\n        bid.quantity = quantity\r\n      }\r\n\r\n      if (options?.royaltyBps !== undefined) {\r\n        bid.royaltyBps = options.royaltyBps\r\n      }\r\n\r\n      setBidData(bid)\r\n      if (rendererChain?.name === auraEVMTestnet?.name) {\r\n        if ((wrappedBalance?.[0] || 0n) < totalBidAmount) {\r\n          triggerDepositWAura()\r\n        } else {\r\n          checkIsSetAllowance()\r\n        }\r\n\r\n        // check allowance or deposit aura\r\n        // if ((wrappedBalance?.[0] || 0n) < totalBidAmount) {\r\n        //   triggerDepositWAura()\r\n        // } else {\r\n        //   checkIsSetAllowance()\r\n        // }\r\n      } else {\r\n        client.actions\r\n          .placeBid({\r\n            chainId: rendererChain?.id,\r\n            wallet,\r\n            bids: [bid],\r\n            onProgress: (steps: Execute['steps']) => {\r\n              const executableSteps = steps.filter(\r\n                (step) => step.items && step.items.length > 0\r\n              )\r\n\r\n              let stepCount = executableSteps.length\r\n              let incompleteStepItemIndex: number | null = null\r\n              let incompleteStepIndex: number | null = null\r\n\r\n              executableSteps.find((step, i) => {\r\n                if (!step.items) {\r\n                  return false\r\n                }\r\n\r\n                incompleteStepItemIndex = step.items.findIndex(\r\n                  (item) => item.status == 'incomplete'\r\n                )\r\n                if (incompleteStepItemIndex !== -1) {\r\n                  incompleteStepIndex = i\r\n                  return true\r\n                }\r\n              })\r\n\r\n              if (incompleteStepIndex !== null) {\r\n                setStepData({\r\n                  totalSteps: stepCount,\r\n                  stepProgress: incompleteStepIndex,\r\n                  currentStep: executableSteps[incompleteStepIndex],\r\n                })\r\n              } else {\r\n                setBidStep(BidStep.Complete)\r\n              }\r\n            },\r\n          })\r\n          .catch((e: Error) => {\r\n            setTransactionError(e)\r\n          })\r\n      }\r\n    },\r\n    [\r\n      config,\r\n      tokenId,\r\n      rendererChain,\r\n      collectionId,\r\n      currency,\r\n      client,\r\n      wallet,\r\n      totalBidAmount,\r\n      expirationOption,\r\n      trait,\r\n      quantity,\r\n      feesBps,\r\n      exchange,\r\n      usePermit,\r\n    ]\r\n  )\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        token,\r\n        collection,\r\n        attributes,\r\n        usdPrice,\r\n        balance,\r\n        wrappedBalance,\r\n        wrappedContractName,\r\n        wrappedContractAddress,\r\n        convertLink,\r\n        canAutomaticallyConvert,\r\n        bidAmountPerUnit,\r\n        totalBidAmount,\r\n        quantity,\r\n        setQuantity,\r\n        bidData,\r\n        totalBidAmountUsd,\r\n        bidStep,\r\n        loading: !collection || !reservoirMarketplace,\r\n        hasEnoughNativeCurrency,\r\n        hasEnoughWrappedCurrency,\r\n        traitBidSupported,\r\n        collectionBidSupported,\r\n        partialBidSupported,\r\n        biddingSupported,\r\n        amountToWrap,\r\n        transactionError,\r\n        expirationOption,\r\n        expirationOptions,\r\n        stepData,\r\n        currencies: currencies || [defaultCurrency],\r\n        currency,\r\n        exchange,\r\n        feeBps,\r\n        setCurrency,\r\n        setBidStep,\r\n        setBidAmountPerUnit,\r\n        setExpirationOption,\r\n        setTrait,\r\n        trait,\r\n        placeBid,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n","const wrappedContractNames: Record<number, string> = {\r\n  1: 'WETH', //mainnet\r\n  5: 'WETH', //goerli\r\n  10: 'WETH', //optimism\r\n  56: 'WBNB', //bnb\r\n  204: 'WBNB', //opbnb\r\n  137: 'WMATIC', //polygon\r\n  1101: 'WETH ', // zkEVM\r\n  324: 'WETH', //weth\r\n  42161: 'WETH', //arbitrum\r\n  42170: 'WETH', //arbitrum nova\r\n  43114: 'WAVAX', //avalance\r\n  59144: 'WETH',\r\n  999: 'WETH', //zoratestnet\r\n  80001: 'WMATIC', //mumbai\r\n  8453: 'WETH', //base\r\n  84531: 'WETH', //base goerli\r\n  84532: 'WETH', //base sepolia\r\n  534353: 'WETH', //scrolltestnet\r\n  534352: 'WETH', //scroll\r\n  7777777: 'WETH', //zora\r\n  11155111: 'WETH', //sepolia\r\n  888888888: 'WETH', //ancient8\r\n  28122024: 'WETH', //ancient8 testnet\r\n  68840142: 'WETH', //frametestnet\r\n  168587773: 'WETH', //blast sepolia\r\n  70700: 'WETH', //apex pop\r\n  81457: 'WETH', //blast\r\n  1235: 'WAURA', //aura evm dev\r\n  1236: 'WAURA', //aura evm dev\r\n  6321: 'WAURA', //aura evm dev\r\n  6322: 'WAURA', //aura evm dev\r\n}\r\nexport default wrappedContractNames\r\n","import { useTokens, useCollections, useTimeSince } from '../../hooks'\r\nimport React, { FC } from 'react'\r\nimport {\r\n  ChainIcon,\r\n  Divider,\r\n  Flex,\r\n  FormatCryptoCurrency,\r\n  Img,\r\n  Text,\r\n} from '../../primitives'\r\nimport { ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { Currency } from '../../types/Currency'\r\nimport { ExpirationOption } from '../../types/ExpirationOption'\r\nimport { CSS } from '@stitches/react'\r\nimport { Trait } from './BidModalRenderer'\r\n\r\ntype Props = {\r\n  token?: NonNullable<NonNullable<ReturnType<typeof useTokens>>['data']>['0']\r\n  collection: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  chain?: ReservoirChain | null\r\n  price?: number | bigint\r\n  currency?: Currency\r\n  quantity?: number\r\n  trait?: Trait\r\n  expirationOption?: ExpirationOption\r\n  containerCss?: CSS\r\n}\r\n\r\nconst TokenInfo: FC<Props> = ({\r\n  token,\r\n  collection,\r\n  chain,\r\n  price,\r\n  currency,\r\n  quantity,\r\n  trait,\r\n  expirationOption,\r\n  containerCss,\r\n}) => {\r\n  const expirationDisplay =\r\n    expirationOption?.value === 'custom' && expirationOption.relativeTime\r\n      ? useTimeSince(expirationOption.relativeTime)\r\n      : `in ${expirationOption?.text.toLowerCase()}`\r\n\r\n  const floorAsk = token?.market?.floorAsk ?? collection?.floorAsk\r\n  const topBid = token?.market?.topBid ?? collection?.topBid\r\n\r\n  const tokenName = token?.token?.name\r\n    ? token?.token?.name\r\n    : `#${token?.token?.tokenId}`\r\n\r\n  return (\r\n    <Flex\r\n      align=\"center\"\r\n      justify=\"between\"\r\n      css={{ p: '$4', gap: '$4', ...containerCss }}\r\n    >\r\n      <Flex align=\"center\" css={{ gap: '$3', overflow: 'hidden' }}>\r\n        <Img\r\n          src={token?.token?.imageSmall || collection?.image}\r\n          alt={token?.token?.name || collection?.name}\r\n          css={{ width: 56, height: 56, borderRadius: 4, aspectRatio: '1/1' }}\r\n        />\r\n        <Flex direction=\"column\" css={{ gap: '$1', overflow: 'hidden' }}>\r\n          <Text style=\"h6\" ellipsify>\r\n            {token ? tokenName : collection?.name}\r\n          </Text>\r\n          <Flex align=\"center\" css={{ gap: '$1' }}>\r\n            <Text style=\"subtitle2\" color=\"subtle\" ellipsify>\r\n              {token ? collection?.name : null}\r\n            </Text>\r\n            {chain && !expirationOption ? (\r\n              <>\r\n                {token ? <Divider direction=\"vertical\" /> : null}\r\n                <ChainIcon\r\n                  chainId={chain.id}\r\n                  height={12}\r\n                  css={{ alignItems: 'center', width: '12px' }}\r\n                />\r\n                <Text style=\"subtitle2\" color=\"subtle\" ellipsify>\r\n                  {chain.name}\r\n                </Text>\r\n              </>\r\n            ) : null}\r\n          </Flex>\r\n          <Flex css={{ gap: '$1' }}>\r\n            {trait ? (\r\n              <Flex\r\n                css={{\r\n                  width: 'max-content',\r\n                  backgroundColor: '$neutralBg',\r\n                  borderRadius: 4,\r\n                  py: '$1',\r\n                  px: '$2',\r\n                }}\r\n              >\r\n                <Text style=\"body3\" color=\"subtle\" ellipsify>\r\n                  {trait?.key}: {trait?.value}\r\n                </Text>\r\n              </Flex>\r\n            ) : null}\r\n            {quantity && quantity > 1 ? (\r\n              <Flex\r\n                css={{\r\n                  width: 'max-content',\r\n                  backgroundColor: '$neutralBg',\r\n                  borderRadius: 4,\r\n                  py: '$1',\r\n                  px: '$2',\r\n                }}\r\n              >\r\n                <Text style=\"body3\" color=\"subtle\" ellipsify>\r\n                  {quantity} items\r\n                </Text>\r\n              </Flex>\r\n            ) : null}\r\n          </Flex>\r\n        </Flex>\r\n      </Flex>\r\n\r\n      {!price ? (\r\n        <Flex\r\n          align=\"center\"\r\n          css={{\r\n            gap: '$2',\r\n            flexShrink: 0,\r\n            flexDirection: 'column',\r\n            '@bp1': { flexDirection: 'row' },\r\n          }}\r\n        >\r\n          {floorAsk?.price ? (\r\n            <Flex css={{ gap: '$1' }}>\r\n              <Text style=\"subtitle2\" color=\"subtle\">\r\n                Floor Price\r\n              </Text>\r\n              <FormatCryptoCurrency\r\n                amount={floorAsk?.price?.amount?.decimal}\r\n                address={floorAsk?.price?.currency?.contract}\r\n                symbol={floorAsk?.price?.currency?.symbol}\r\n                decimals={floorAsk?.price?.currency?.decimals}\r\n                textStyle=\"subtitle2\"\r\n              />\r\n            </Flex>\r\n          ) : null}\r\n          {floorAsk?.price && topBid?.price ? (\r\n            <Divider\r\n              direction=\"vertical\"\r\n              css={{ display: 'none', '@bp1': { display: 'block' } }}\r\n            />\r\n          ) : null}\r\n          {topBid?.price ? (\r\n            <Flex css={{ gap: '$1' }}>\r\n              <Text style=\"subtitle2\" color=\"subtle\">\r\n                Best Offer\r\n              </Text>\r\n              <FormatCryptoCurrency\r\n                amount={topBid?.price?.amount?.decimal}\r\n                address={topBid?.price?.currency?.contract}\r\n                symbol={topBid?.price?.currency?.symbol}\r\n                decimals={topBid?.price?.currency?.decimals}\r\n                textStyle=\"subtitle2\"\r\n              />\r\n            </Flex>\r\n          ) : null}\r\n        </Flex>\r\n      ) : (\r\n        <Flex direction=\"column\" align=\"end\" css={{ gap: '$1', flexShrink: 0 }}>\r\n          {price && currency ? (\r\n            <FormatCryptoCurrency\r\n              amount={price}\r\n              address={currency?.contract}\r\n              symbol={currency?.symbol}\r\n              textStyle=\"h6\"\r\n            />\r\n          ) : null}\r\n          {expirationOption ? (\r\n            <Text style=\"body2\" color=\"subtle\">\r\n              Expires {expirationDisplay}\r\n            </Text>\r\n          ) : null}\r\n        </Flex>\r\n      )}\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default TokenInfo\r\n","import { useEffect, useState } from 'react'\r\nimport dayjs from 'dayjs'\r\nimport relativeTime from 'dayjs/plugin/relativeTime.js'\r\n\r\ndayjs.extend(relativeTime)\r\n\r\nexport default function (timestamp?: number) {\r\n  const [timeSince, setTimeSince] = useState('')\r\n\r\n  useEffect(() => {\r\n    if (timestamp) {\r\n      setTimeSince(dayjs.unix(timestamp).fromNow())\r\n    } else {\r\n      setTimeSince('')\r\n    }\r\n  }, [timestamp])\r\n\r\n  return timeSince\r\n}\r\n","import { Box, Flex } from '../primitives'\r\nimport React, { FC, ComponentPropsWithoutRef } from 'react'\r\nimport { styled, keyframes } from '../../stitches.config'\r\n\r\ntype Props = {\r\n  fromImg: string\r\n  toImgs: string[]\r\n} & ComponentPropsWithoutRef<typeof Flex>\r\n\r\nconst Img = styled('img', {\r\n  width: 56,\r\n  height: 56,\r\n  borderRadius: 4,\r\n  objectFit: 'cover',\r\n  '& + img': {\r\n    ml: -20,\r\n  },\r\n})\r\n\r\nconst ProgressDot = styled(Box, {\r\n  borderRadius: '50%',\r\n  width: 5,\r\n  height: 5,\r\n})\r\n\r\nconst loadingStart = keyframes({\r\n  '0%': { transform: 'scale(0.8)', backgroundColor: '$neutralSolid' },\r\n  '20%': { transform: 'scale(1)', backgroundColor: '$accentText' },\r\n  '100%': { transform: 'scale(0.8)', backgroundColor: '$neutralSolid' },\r\n})\r\n\r\nconst loadingMiddle = keyframes({\r\n  '0%': { transform: 'scale(0.8)', backgroundColor: '$neutralSolid' },\r\n  '20%': { transform: 'scale(0.8)', backgroundColor: '$neutralSolid' },\r\n  '40%': { transform: 'scale(1)', backgroundColor: '$accentText' },\r\n  '100%': { transform: 'scale(0.8)', backgroundColor: '$neutralSolid' },\r\n})\r\n\r\nconst loadingEnd = keyframes({\r\n  '0%': { transform: 'scale(0.8)', backgroundColor: '$neutralSolid' },\r\n  '40%': { transform: 'scale(0.8)', backgroundColor: '$neutralSolid' },\r\n  '60%': { transform: 'scale(1)', backgroundColor: '$accentText' },\r\n  '100%': { transform: 'scale(0.8)', backgroundColor: '$neutralSolid' },\r\n})\r\n\r\nconst TransactionProgress: FC<Props> = ({ fromImg, toImgs, ...props }) => {\r\n  return (\r\n    <Flex {...props} align=\"center\">\r\n      <Img src={fromImg} />\r\n      <Flex css={{ gap: '$1', mx: 23 }}>\r\n        <ProgressDot\r\n          css={{ animation: `${loadingStart} 1s ease-in-out infinite` }}\r\n        />\r\n        <ProgressDot\r\n          css={{ animation: `${loadingMiddle} 1s ease-in-out infinite` }}\r\n        />\r\n        <ProgressDot\r\n          css={{ animation: `${loadingEnd} 1s ease-in-out infinite` }}\r\n        />\r\n      </Flex>\r\n      {toImgs.map((src, i) => (\r\n        <Img key={i} src={src} />\r\n      ))}\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default TransactionProgress\r\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport React, { FC, useEffect, useState } from 'react'\r\nimport { Flex, FormatCryptoCurrency, Input, Text } from '../../primitives'\r\nimport ScrollArea from '../../primitives/ScrollArea'\r\nimport { Trait } from './BidModalRenderer'\r\nimport faMagnifyingGlass from '@fortawesome/free-solid-svg-icons/faMagnifyingGlass'\r\n\r\nimport { useAttributes } from '../../hooks'\r\n\r\ntype Props = {\r\n  attributes?: NonNullable<ReturnType<typeof useAttributes>['data']>\r\n  tokenCount?: number\r\n  chainId?: number\r\n  setTrait: React.Dispatch<React.SetStateAction<Trait>>\r\n  setOpen: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nconst AttributeSelector: FC<Props> = ({\r\n  attributes,\r\n  chainId,\r\n  setTrait,\r\n  setOpen,\r\n  tokenCount,\r\n}) => {\r\n  const [results, setResults] = useState<Props['attributes']>([])\r\n  const [query, setQuery] = useState('')\r\n\r\n  useEffect(() => {\r\n    if (query === '') {\r\n      setResults(attributes)\r\n    } else {\r\n      let results: Props['attributes'] = []\r\n      attributes?.forEach((attribute) => {\r\n        const values = attribute.values?.filter(({ value }) =>\r\n          value.toLowerCase().includes(query.toLowerCase())\r\n        )\r\n        if (values && values.length > 0) {\r\n          results?.push({\r\n            ...attribute,\r\n            values: values,\r\n          })\r\n        }\r\n      })\r\n      setResults(results ? [...results] : [])\r\n    }\r\n  }, [query])\r\n\r\n  if (!attributes) return null\r\n\r\n  return (\r\n    <Flex\r\n      direction=\"column\"\r\n      css={{\r\n        width: '100%',\r\n        maxWidth: 484,\r\n        maxHeight: 250,\r\n        '@bp1': { maxHeight: 500 },\r\n        zIndex: 1000,\r\n        padding: '$4',\r\n        overflowY: 'auto',\r\n        borderRadius: '$space$2',\r\n        backgroundColor: '$contentBackground',\r\n        border: '1px solid $borderColor',\r\n      }}\r\n    >\r\n      <Input\r\n        css={{ marginBottom: '$4', padding: '$space$4 $space$4 $space$4 48px' }}\r\n        placeholder=\"Filter attribute\"\r\n        value={query}\r\n        onChange={(e) => setQuery(e.target.value)}\r\n        iconCss={{ top: '26px', color: '$neutralText' }}\r\n        icon={\r\n          <FontAwesomeIcon icon={faMagnifyingGlass} width={16} height={16} />\r\n        }\r\n      />\r\n      <Flex\r\n        justify=\"between\"\r\n        align=\"center\"\r\n        css={{\r\n          borderBottom: '1px solid $borderColor',\r\n          pb: '$2',\r\n          mb: '$4',\r\n          width: '100%',\r\n        }}\r\n      >\r\n        <Text color=\"subtle\" style=\"subtitle3\">\r\n          Trait\r\n        </Text>\r\n        <Text color=\"subtle\" style=\"subtitle3\">\r\n          Floor\r\n        </Text>\r\n      </Flex>\r\n      <ScrollArea\r\n        css={{ width: '100%', minWidth: '80vw', '@bp1': { minWidth: 468 } }}\r\n      >\r\n        {results?.map(({ key, values }) => {\r\n          if (values?.length === 0) return null\r\n\r\n          return (\r\n            <Flex\r\n              direction=\"column\"\r\n              key={key}\r\n              css={{ gap: '$2', marginBottom: '$3', width: '100%' }}\r\n            >\r\n              <Text style=\"subtitle2\" color=\"accent\" as=\"div\">\r\n                {key}\r\n              </Text>\r\n              <Flex direction=\"column\" css={{ width: '100%' }}>\r\n                {values?.map(({ value, count, floorAskPrice }) => (\r\n                  <Flex\r\n                    key={value}\r\n                    justify=\"between\"\r\n                    align=\"center\"\r\n                    css={{\r\n                      cursor: 'pointer',\r\n                      borderRadius: '$space$2',\r\n                      width: '100%',\r\n                      py: '$3',\r\n                      backgroundColor: '$contentBackground',\r\n                      transition: 'background-color 0.25s ease-in-out',\r\n                      '&:hover': {\r\n                        backgroundColor: '$neutralBgHover',\r\n                      },\r\n                    }}\r\n                    as=\"button\"\r\n                    onClick={() => {\r\n                      setTrait({\r\n                        key,\r\n                        value,\r\n                        floorAskPrice: floorAskPrice?.amount?.decimal,\r\n                      })\r\n                      setOpen(false)\r\n                    }}\r\n                  >\r\n                    <Flex\r\n                      justify=\"between\"\r\n                      css={{\r\n                        gap: '$2',\r\n                      }}\r\n                    >\r\n                      <Text ellipsify style=\"subtitle2\">\r\n                        {value}\r\n                      </Text>\r\n                      <Text style=\"body2\" color=\"subtle\">\r\n                        {count && tokenCount\r\n                          ? `${Math.round((count / tokenCount) * 100)}%`\r\n                          : '-'}\r\n                      </Text>\r\n                    </Flex>\r\n\r\n                    <FormatCryptoCurrency\r\n                      chainId={chainId}\r\n                      amount={floorAskPrice?.amount?.decimal}\r\n                      logoWidth={10}\r\n                      maximumFractionDigits={1}\r\n                      textStyle=\"subtitle2\"\r\n                      css={{ pr: '$4' }}\r\n                    />\r\n                  </Flex>\r\n                ))}\r\n              </Flex>\r\n            </Flex>\r\n          )\r\n        })}\r\n      </ScrollArea>\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default AttributeSelector\r\n","import { CSSProps, styled } from '../../stitches.config'\r\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area'\r\nimport React from 'react'\r\n\r\nconst SCROLLBAR_SIZE = 10\r\n\r\nconst ScrollArea = styled(ScrollAreaPrimitive.Root, {\r\n  height: 322,\r\n  borderRadius: '$space$2',\r\n  overflow: 'hidden',\r\n  boxShadow: `0 2px 10px $inputBackground`,\r\n})\r\ntype ScrollAreaProps = ScrollAreaPrimitive.ScrollAreaProps & CSSProps\r\n\r\nconst ScrollAreaViewport = styled(ScrollAreaPrimitive.Viewport, {\r\n  backgroundColor: 'transparent',\r\n  width: '100%',\r\n  height: '100%',\r\n  borderRadius: 'inherit',\r\n})\r\n\r\nconst ScrollAreaScrollbar = styled(ScrollAreaPrimitive.Scrollbar, {\r\n  display: 'flex',\r\n  // ensures no selection\r\n  userSelect: 'none',\r\n  // disable browser handling of all panning and zooming gestures on touch devices\r\n  touchAction: 'none',\r\n  padding: 2,\r\n  background: '$inputBackground',\r\n  transition: 'background 160ms ease-out',\r\n  '&:hover': { background: '$inputBackground' },\r\n  '&[data-orientation=\"vertical\"]': { width: SCROLLBAR_SIZE },\r\n  '&[data-orientation=\"horizontal\"]': {\r\n    flexDirection: 'column',\r\n    height: SCROLLBAR_SIZE,\r\n  },\r\n})\r\n\r\nconst ScrollAreaThumb = styled(ScrollAreaPrimitive.Thumb, {\r\n  flex: 1,\r\n  background: '$wellBackground',\r\n  borderRadius: SCROLLBAR_SIZE,\r\n  // increase target size for touch devices https://www.w3.org/WAI/WCAG21/Understanding/target-size.html\r\n  position: 'relative',\r\n  '&::before': {\r\n    content: '\"\"',\r\n    position: 'absolute',\r\n    top: '50%',\r\n    left: '50%',\r\n    transform: 'translate(-50%, -50%)',\r\n    width: '100%',\r\n    height: '100%',\r\n    minWidth: 44,\r\n    minHeight: 44,\r\n  },\r\n})\r\n\r\nconst ScrollAreaCorner = styled(ScrollAreaPrimitive.Corner, {\r\n  background: '$wellBackground',\r\n})\r\n\r\nconst RKScrollArea = ({ children, ...props }: ScrollAreaProps) => {\r\n  return (\r\n    <ScrollArea {...props}>\r\n      <ScrollAreaViewport>{children}</ScrollAreaViewport>\r\n      <ScrollAreaScrollbar orientation=\"vertical\">\r\n        <ScrollAreaThumb />\r\n      </ScrollAreaScrollbar>\r\n      <ScrollAreaScrollbar orientation=\"horizontal\">\r\n        <ScrollAreaThumb />\r\n      </ScrollAreaScrollbar>\r\n      <ScrollAreaCorner />\r\n    </ScrollArea>\r\n  )\r\n}\r\n\r\nRKScrollArea.Root = ScrollArea\r\nRKScrollArea.Viewport = ScrollAreaViewport\r\nRKScrollArea.Scrollbar = ScrollAreaScrollbar\r\nRKScrollArea.Thumb = ScrollAreaThumb\r\nRKScrollArea.Corner = ScrollAreaCorner\r\n\r\nexport default RKScrollArea\r\n","import React, {\r\n  ComponentPropsWithoutRef,\r\n  Dispatch,\r\n  ReactElement,\r\n  SetStateAction,\r\n  useEffect,\r\n  useMemo,\r\n} from 'react'\r\nimport {\r\n  Flex,\r\n  Text,\r\n  Button,\r\n  FormatCurrency,\r\n  Loader,\r\n  FormatCryptoCurrency,\r\n  Box,\r\n  Anchor,\r\n  ErrorWell,\r\n  ChainIcon,\r\n  Divider,\r\n  CryptoCurrencyIcon,\r\n} from '../../primitives'\r\n\r\nimport { Modal } from '../Modal'\r\nimport {\r\n  faCircleExclamation,\r\n  faChevronDown,\r\n  faCube,\r\n  faCircleCheck,\r\n  faEnvelopeOpen,\r\n} from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport {\r\n  AcceptBidStep,\r\n  AcceptBidModalRenderer,\r\n  AcceptBidStepData,\r\n  AcceptBidTokenData,\r\n  EnhancedAcceptBidTokenData,\r\n} from './AcceptBidModalRenderer'\r\nimport {\r\n  useBids,\r\n  useDynamicTokens,\r\n  useFallbackState,\r\n  useReservoirClient,\r\n} from '../../hooks'\r\nimport AcceptBidLineItem from './AcceptBidLineItem'\r\nimport { Collapsible } from '../../primitives/Collapsible'\r\nimport { ApproveBidCollapsible } from './ApproveBidCollapsible'\r\nimport SigninStep from '../SigninStep'\r\nimport AcceptBidSummaryLineItem from './AcceptBidSummaryLineItem'\r\nimport { truncateAddress } from '../../lib/truncate'\r\nimport { WalletClient } from 'viem'\r\nimport { ReservoirWallet, SellPath } from '@sh-reservoir0x/reservoir-sdk'\r\nimport getChainBlockExplorerUrl from '../../lib/getChainBlockExplorerUrl'\r\nimport { Dialog } from '../../primitives/Dialog'\r\n\r\ntype BidData = {\r\n  tokens?: EnhancedAcceptBidTokenData[]\r\n  bids?: NonNullable<ReturnType<typeof useBids>['data']>\r\n  txHash?: string\r\n  maker?: string\r\n}\r\n\r\nconst ModalCopy = {\r\n  title: 'Accept Offer',\r\n  ctaAccept: 'Accept',\r\n  ctaAwaitingApproval: 'Waiting for approval...',\r\n  ctaClose: 'Close',\r\n  ctaDone: 'Done',\r\n}\r\n\r\ntype Props = Pick<Parameters<typeof Modal>['0'], 'trigger'> & {\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  tokens: AcceptBidTokenData[]\r\n  chainId?: number\r\n  currency?: string\r\n  normalizeRoyalties?: boolean\r\n  copyOverrides?: Partial<typeof ModalCopy>\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  feesOnTopBps?: string[] | null\r\n  feesOnTopCustom?: (data: SellPath) => string[] | null\r\n  onBidAccepted?: (data: BidData) => void\r\n  onClose?: (\r\n    data: BidData,\r\n    stepData: AcceptBidStepData | null,\r\n    currentStep: AcceptBidStep\r\n  ) => void\r\n  onBidAcceptError?: (error: Error, data: BidData) => void\r\n  onCurrentStepUpdate?: (data: AcceptBidStepData) => void\r\n  onPointerDownOutside?: ComponentPropsWithoutRef<\r\n    typeof Dialog\r\n  >['onPointerDownOutside']\r\n  isAcceptHighestBid?: boolean\r\n}\r\n\r\nexport function AcceptBidModal({\r\n  openState,\r\n  trigger,\r\n  chainId,\r\n  tokens,\r\n  normalizeRoyalties,\r\n  copyOverrides,\r\n  walletClient,\r\n  feesOnTopBps,\r\n  feesOnTopCustom,\r\n  onBidAccepted,\r\n  onClose,\r\n  onBidAcceptError,\r\n  onCurrentStepUpdate,\r\n  onPointerDownOutside,\r\n  currency,\r\n}: Props): ReactElement {\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n\r\n  const copy: typeof ModalCopy = { ...ModalCopy, ...copyOverrides }\r\n\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n  const baseApiUrl = currentChain?.baseApiUrl\r\n\r\n  const modalChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  return (\r\n    <AcceptBidModalRenderer\r\n      currency={currency}\r\n      open={open}\r\n      chainId={modalChain?.id}\r\n      tokens={tokens}\r\n      normalizeRoyalties={normalizeRoyalties}\r\n      walletClient={walletClient}\r\n      feesOnTopBps={feesOnTopBps}\r\n      feesOnTopCustom={feesOnTopCustom}\r\n    >\r\n      {({\r\n        loading,\r\n        acceptBidStep,\r\n        transactionError,\r\n        txHash,\r\n        usdPrices,\r\n        prices,\r\n        tokensData,\r\n        swapCurrency,\r\n        address,\r\n        stepData,\r\n        acceptBid,\r\n      }) => {\r\n        useEffect(() => {\r\n          if (acceptBidStep === AcceptBidStep.Complete && onBidAccepted) {\r\n            const data: BidData = {\r\n              tokens: tokensData,\r\n              maker: address,\r\n            }\r\n            if (txHash) {\r\n              data.txHash = txHash\r\n            }\r\n            onBidAccepted(data)\r\n          }\r\n        }, [acceptBidStep])\r\n\r\n        useEffect(() => {\r\n          if (transactionError && onBidAcceptError) {\r\n            const data: BidData = {\r\n              tokens: tokensData,\r\n              maker: address,\r\n            }\r\n            onBidAcceptError(transactionError, data)\r\n          }\r\n        }, [transactionError])\r\n\r\n        useEffect(() => {\r\n          if (stepData && onCurrentStepUpdate) {\r\n            onCurrentStepUpdate(stepData)\r\n          }\r\n        }, [stepData])\r\n\r\n        const bidCount = useMemo(\r\n          () =>\r\n            tokensData.reduce(\r\n              (total, tokenData) => (total += tokenData.bidsPath.length),\r\n              0\r\n            ),\r\n          [tokensData]\r\n        )\r\n\r\n        const saleStep = stepData?.steps.find((step) => step.id === 'sale')\r\n        const swapStep = stepData?.steps.find((step) => step.id === 'swap')\r\n\r\n        const transfersTxHashes =\r\n          saleStep?.items?.reduce((txHashes, item) => {\r\n            item.transfersData?.forEach((transferData) => {\r\n              if (transferData.txHash) {\r\n                txHashes.add(transferData.txHash)\r\n              }\r\n            })\r\n            return txHashes\r\n          }, new Set<string>()) || []\r\n        const totalSales = Array.from(transfersTxHashes).length\r\n        const failedSales = totalSales - (saleStep?.items?.length || 0)\r\n\r\n        const successfulSales = totalSales - failedSales\r\n\r\n        return (\r\n          <Modal\r\n            trigger={trigger}\r\n            title={copy.title}\r\n            open={open}\r\n            onOpenChange={(open) => {\r\n              if (!open && onClose) {\r\n                const data: BidData = {\r\n                  tokens: tokensData,\r\n                  maker: address,\r\n                }\r\n                onClose(data, stepData, acceptBidStep)\r\n              }\r\n              setOpen(open)\r\n            }}\r\n            loading={loading}\r\n            onPointerDownOutside={(e) => {\r\n              if (onPointerDownOutside) {\r\n                onPointerDownOutside(e)\r\n              }\r\n            }}\r\n          >\r\n            {acceptBidStep === AcceptBidStep.Unavailable && !loading && (\r\n              <Flex\r\n                direction=\"column\"\r\n                align=\"center\"\r\n                css={{ p: '$4', gap: '$5' }}\r\n              >\r\n                <Box css={{ color: '$neutralSolid', mt: 48 }}>\r\n                  <FontAwesomeIcon\r\n                    icon={faEnvelopeOpen}\r\n                    style={{ height: 32, width: 32 }}\r\n                  />\r\n                </Box>\r\n                <Text style=\"h6\" css={{ mb: '$3', textAlign: 'center' }}>\r\n                  {tokens.length > 1 ? 'Offers are ' : 'Offer is '} no longer\r\n                  available\r\n                </Text>\r\n                <Button\r\n                  onClick={() => setOpen(false)}\r\n                  css={{\r\n                    width: '100%',\r\n                  }}\r\n                >\r\n                  {copy.ctaClose}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n\r\n            {acceptBidStep === AcceptBidStep.Checkout && !loading && (\r\n              <Flex direction=\"column\">\r\n                {transactionError && <ErrorWell error={transactionError} />}\r\n                <Flex css={{ px: '$4', pt: '$4' }} align=\"center\">\r\n                  <Text style=\"subtitle3\" color=\"subtle\">\r\n                    {`${bidCount} ${bidCount > 1 ? 'Items' : 'Item'}`}\r\n                  </Text>\r\n                  <Divider direction=\"vertical\" css={{ maxHeight: 12 }} />\r\n                  <ChainIcon\r\n                    chainId={modalChain?.id}\r\n                    height={12}\r\n                    css={{ alignItems: 'center', width: '12px', mr: 5 }}\r\n                  />\r\n                  <Text style=\"subtitle3\" color=\"subtle\">\r\n                    {modalChain?.name}\r\n                  </Text>\r\n                </Flex>\r\n                {tokensData.map(({ tokenData, bidsPath }, i) => {\r\n                  if (!bidsPath || !bidsPath.length) {\r\n                    return (\r\n                      <AcceptBidLineItem\r\n                        chainId={modalChain?.id}\r\n                        key={i}\r\n                        token={{\r\n                          name: tokenData?.token?.name || '',\r\n                          id: tokenData?.token?.tokenId || '',\r\n                        }}\r\n                        collection={{\r\n                          id: tokenData?.token?.collection?.id || '',\r\n                          name: tokenData?.token?.collection?.name || '',\r\n                        }}\r\n                        img={\r\n                          tokenData?.token?.imageSmall ||\r\n                          tokenData?.token?.collection?.image ||\r\n                          ''\r\n                        }\r\n                      />\r\n                    )\r\n                  } else {\r\n                    return bidsPath.map((bidPath) => (\r\n                      <AcceptBidLineItem\r\n                        key={i}\r\n                        chainId={modalChain?.id}\r\n                        token={{\r\n                          name: tokenData?.token?.name || '',\r\n                          id: tokenData?.token?.tokenId || '',\r\n                        }}\r\n                        collection={{\r\n                          id: tokenData?.token?.collection?.id || '',\r\n                          name: tokenData?.token?.collection?.name || '',\r\n                        }}\r\n                        img={\r\n                          tokenData?.token?.imageSmall ||\r\n                          tokenData?.token?.collection?.image ||\r\n                          ''\r\n                        }\r\n                        netAmount={bidPath.quote}\r\n                        price={bidPath.totalPrice}\r\n                        fees={bidPath.builtInFees}\r\n                        currency={swapCurrency?.contract || bidPath.currency}\r\n                        decimals={\r\n                          swapCurrency?.decimals || bidPath.currencyDecimals\r\n                        }\r\n                        // sourceImg={\r\n                        //   bidPath.source\r\n                        //     ? `${baseApiUrl}/redirect/sources/${bidPath.source}/logo/v2`\r\n                        //     : ''\r\n                        // }\r\n                      />\r\n                    ))\r\n                  }\r\n                })}\r\n\r\n                {prices.map((price, i) => (\r\n                  <Collapsible\r\n                    key={i}\r\n                    trigger={\r\n                      <Flex justify=\"between\" css={{ p: '$4' }}>\r\n                        <Text style=\"h6\">\r\n                          {price.currency?.symbol} You Get{' '}\r\n                          <Text css={{ color: '$neutralSolidHover', ml: '$2' }}>\r\n                            <FontAwesomeIcon\r\n                              icon={faChevronDown}\r\n                              width={16}\r\n                              height={16}\r\n                            />\r\n                          </Text>\r\n                        </Text>\r\n                        <Flex direction=\"column\" css={{ gap: '$1' }}>\r\n                          <FormatCryptoCurrency\r\n                            chainId={modalChain?.id}\r\n                            amount={price.netAmount}\r\n                            decimals={price.currency?.decimals}\r\n                            address={price.currency?.contract}\r\n                            symbol={price.currency?.symbol}\r\n                            textStyle=\"h6\"\r\n                          />\r\n                          {price.currency?.symbol &&\r\n                          (usdPrices[price.currency.symbol] ||\r\n                            usdPrices['AURA']) ? (\r\n                            <FormatCurrency\r\n                              color=\"subtle\"\r\n                              style=\"tiny\"\r\n                              amount={\r\n                                (usdPrices['AURA'].price\r\n                                  ? usdPrices['AURA'].price\r\n                                  : usdPrices[price.currency.symbol].price) *\r\n                                price.netAmount\r\n                              }\r\n                              css={{ textAlign: 'end' }}\r\n                            />\r\n                          ) : null}\r\n                        </Flex>\r\n                      </Flex>\r\n                    }\r\n                  >\r\n                    <Flex\r\n                      css={{\r\n                        gap: '$2',\r\n                        padding: '$4',\r\n                        paddingTop: 0,\r\n                      }}\r\n                      direction=\"column\"\r\n                    >\r\n                      <Flex justify=\"between\">\r\n                        <Text style=\"subtitle3\" color=\"subtle\">\r\n                          Total {price.currency?.symbol} Offer Value\r\n                        </Text>\r\n                        <FormatCryptoCurrency\r\n                          chainId={modalChain?.id}\r\n                          amount={price.amount}\r\n                          decimals={price.currency?.decimals}\r\n                          address={price.currency?.contract}\r\n                          symbol={price.currency?.symbol}\r\n                          maximumFractionDigits={\r\n                            price.currency?.symbol === 'AURA' ||\r\n                            price.currency?.symbol === 'WAURA'\r\n                              ? 2\r\n                              : 4\r\n                          }\r\n                          textStyle=\"subtitle3\"\r\n                        />\r\n                      </Flex>\r\n                      {price.royalty > 0 ? (\r\n                        <Flex justify=\"between\">\r\n                          <Text style=\"subtitle3\" color=\"subtle\">\r\n                            Creator Royalties\r\n                          </Text>\r\n                          <Text\r\n                            css={{ ml: 'auto' }}\r\n                            style=\"subtitle3\"\r\n                            color=\"subtle\"\r\n                          >\r\n                            -\r\n                          </Text>\r\n                          <FormatCryptoCurrency\r\n                            chainId={modalChain?.id}\r\n                            amount={price.royalty}\r\n                            decimals={price.currency?.decimals}\r\n                            address={price.currency?.contract}\r\n                            symbol={price.currency?.symbol}\r\n                            maximumFractionDigits={\r\n                              price.currency?.symbol === 'AURA' ||\r\n                              price.currency?.symbol === 'WAURA'\r\n                                ? 2\r\n                                : 4\r\n                            }\r\n                            textStyle=\"subtitle3\"\r\n                          />\r\n                        </Flex>\r\n                      ) : null}\r\n                      {/* {price.marketplaceFee > 0 ? (\r\n                        <Flex justify=\"between\">\r\n                          <Text style=\"subtitle3\" color=\"subtle\">\r\n                            Marketplace Fee\r\n                          </Text>\r\n                          <Text\r\n                            css={{ ml: 'auto' }}\r\n                            style=\"subtitle3\"\r\n                            color=\"subtle\"\r\n                          >\r\n                            -\r\n                          </Text>\r\n                          <FormatCryptoCurrency\r\n                            chainId={modalChain?.id}\r\n                            amount={price.marketplaceFee}\r\n                            decimals={price.currency?.decimals}\r\n                            address={price.currency?.contract}\r\n                            symbol={price.currency?.symbol}\r\n                            textStyle=\"subtitle3\"\r\n                          />\r\n                        </Flex>\r\n                      ) : null} */}\r\n                      <Flex justify=\"between\">\r\n                        <Text style=\"subtitle3\" color=\"subtle\">\r\n                          Marketplace Fee\r\n                        </Text>\r\n                        <Text\r\n                          css={{ ml: 'auto' }}\r\n                          style=\"subtitle3\"\r\n                          color=\"subtle\"\r\n                        >\r\n                          -\r\n                        </Text>\r\n                        <FormatCryptoCurrency\r\n                          chainId={modalChain?.id}\r\n                          amount={price.marketplaceFee}\r\n                          decimals={price.currency?.decimals}\r\n                          address={price.currency?.contract}\r\n                          symbol={price.currency?.symbol}\r\n                          maximumFractionDigits={\r\n                            price.currency?.symbol === 'AURA' ||\r\n                            price.currency?.symbol === 'WAURA'\r\n                              ? 2\r\n                              : 4\r\n                          }\r\n                          textStyle=\"subtitle3\"\r\n                        />\r\n                      </Flex>\r\n                      {price.feesOnTop > 0 ? (\r\n                        <Flex justify=\"between\">\r\n                          <Text style=\"subtitle3\" color=\"subtle\">\r\n                            Referral Fee\r\n                          </Text>\r\n                          <Text\r\n                            css={{ ml: 'auto' }}\r\n                            style=\"subtitle3\"\r\n                            color=\"subtle\"\r\n                          >\r\n                            -\r\n                          </Text>\r\n                          <FormatCryptoCurrency\r\n                            chainId={modalChain?.id}\r\n                            amount={price.feesOnTop}\r\n                            decimals={price.currency?.decimals}\r\n                            address={price.currency?.contract}\r\n                            symbol={price.currency?.symbol}\r\n                            maximumFractionDigits={\r\n                              price.currency?.symbol === 'AURA' ||\r\n                              price.currency?.symbol === 'WAURA'\r\n                                ? 2\r\n                                : 4\r\n                            }\r\n                            textStyle=\"subtitle3\"\r\n                          />\r\n                        </Flex>\r\n                      ) : null}\r\n                    </Flex>\r\n                  </Collapsible>\r\n                ))}\r\n\r\n                <Button\r\n                  css={{\r\n                    flex: 1,\r\n                    m: '$4',\r\n                  }}\r\n                  color=\"primary\"\r\n                  onClick={acceptBid}\r\n                >\r\n                  {copy.ctaAccept}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n            {acceptBidStep === AcceptBidStep.Auth && !loading && (\r\n              <Flex direction=\"column\">\r\n                <AcceptBidSummaryLineItem\r\n                  tokensData={tokensData}\r\n                  usdPrices={usdPrices}\r\n                  prices={prices}\r\n                  chain={modalChain}\r\n                />\r\n                <SigninStep css={{ mt: 48, mb: 60, gap: 20 }} />\r\n                <Button disabled={true} css={{ m: '$4' }}>\r\n                  <Loader />\r\n                  {copy.ctaAwaitingApproval}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n            {acceptBidStep === AcceptBidStep.ApproveMarketplace && !loading && (\r\n              <Flex direction=\"column\">\r\n                <AcceptBidSummaryLineItem\r\n                  tokensData={tokensData}\r\n                  usdPrices={usdPrices}\r\n                  prices={prices}\r\n                  chain={modalChain}\r\n                />\r\n                <Text style=\"h6\" css={{ m: '$4', textAlign: 'center' }}>\r\n                  Confirm Selling\r\n                </Text>\r\n                {stepData?.steps.map((step) =>\r\n                  step?.items && step.items.length > 0 ? (\r\n                    <ApproveBidCollapsible\r\n                      key={step.id}\r\n                      step={step}\r\n                      tokensData={tokensData}\r\n                      chain={modalChain}\r\n                      isCurrentStep={stepData.currentStep.id === step.id}\r\n                      open={stepData.currentStep.id === step.id}\r\n                    />\r\n                  ) : null\r\n                )}\r\n\r\n                <Button disabled={true} css={{ m: '$4' }}>\r\n                  <Loader />\r\n                  {copy.ctaAwaitingApproval}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n\r\n            {acceptBidStep === AcceptBidStep.TokenSwap && !loading && (\r\n              <Flex direction=\"column\">\r\n                <Flex\r\n                  justify=\"between\"\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ width: '100%', p: '$4', gap: 24 }}\r\n                >\r\n                  {transactionError && (\r\n                    <ErrorWell\r\n                      error={transactionError}\r\n                      css={{ width: '100%' }}\r\n                    />\r\n                  )}\r\n                  {stepData && (\r\n                    <>\r\n                      <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                        {stepData.currentStep.action}\r\n                      </Text>\r\n                      <Flex align=\"center\" justify=\"center\">\r\n                        <Flex\r\n                          css={{\r\n                            background: '$neutralLine',\r\n                            borderRadius: 8,\r\n                          }}\r\n                        >\r\n                          <CryptoCurrencyIcon\r\n                            chainId={modalChain?.id}\r\n                            css={{ height: 56, width: 56 }}\r\n                            address={swapCurrency?.contract as string}\r\n                          />\r\n                        </Flex>\r\n                      </Flex>\r\n                      <Text\r\n                        css={{\r\n                          textAlign: 'center',\r\n                          mt: 24,\r\n                          maxWidth: 395,\r\n                          mx: 'auto',\r\n                          mb: '$4',\r\n                        }}\r\n                        style=\"body2\"\r\n                        color=\"subtle\"\r\n                      >\r\n                        {stepData?.currentStep.description}\r\n                      </Text>\r\n                    </>\r\n                  )}\r\n                  {!stepData && (\r\n                    <Flex\r\n                      css={{ height: '100%', py: '$5' }}\r\n                      justify=\"center\"\r\n                      align=\"center\"\r\n                    >\r\n                      <Loader />\r\n                    </Flex>\r\n                  )}\r\n                  {!transactionError && (\r\n                    <Button css={{ width: '100%', mt: 'auto' }} disabled={true}>\r\n                      <Loader />\r\n                      {copy.ctaAwaitingApproval}\r\n                    </Button>\r\n                  )}\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n\r\n            {acceptBidStep === AcceptBidStep.Finalizing && !loading && (\r\n              <Flex\r\n                direction=\"column\"\r\n                justify=\"center\"\r\n                css={{\r\n                  gap: '$4',\r\n                  pb: '$5',\r\n                }}\r\n              >\r\n                <AcceptBidSummaryLineItem\r\n                  tokensData={tokensData}\r\n                  usdPrices={usdPrices}\r\n                  prices={prices}\r\n                  chain={modalChain}\r\n                />\r\n                <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                  Finalizing on blockchain\r\n                </Text>\r\n                <Text\r\n                  style=\"subtitle3\"\r\n                  color=\"subtle\"\r\n                  css={{ textAlign: 'center', px: '$4' }}\r\n                >\r\n                  You can close this modal while it finalizes on the blockchain.\r\n                  The transaction will continue in the background.\r\n                </Text>\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ gap: '$2', mb: '$3', width: '100%' }}\r\n                >\r\n                  {[...(swapStep?.items ?? []), ...(saleStep?.items ?? [])].map(\r\n                    (item, itemIndex) => {\r\n                      if (\r\n                        Array.isArray(item?.txHashes) &&\r\n                        item?.txHashes.length > 0\r\n                      ) {\r\n                        return item.txHashes.map((hash, txHashIndex) => {\r\n                          const truncatedTxHash = truncateAddress(hash.txHash)\r\n                          const blockExplorerBaseUrl = getChainBlockExplorerUrl(\r\n                            hash.chainId\r\n                          )\r\n                          return (\r\n                            <Anchor\r\n                              key={`${itemIndex}-${txHashIndex}`}\r\n                              href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                              color=\"primary\"\r\n                              weight=\"medium\"\r\n                              target=\"_blank\"\r\n                              css={{ fontSize: 12 }}\r\n                            >\r\n                              View transaction: {truncatedTxHash}\r\n                            </Anchor>\r\n                          )\r\n                        })\r\n                      } else {\r\n                        return null\r\n                      }\r\n                    }\r\n                  )}\r\n                </Flex>\r\n                <Box\r\n                  css={{\r\n                    color: '$neutralSolid',\r\n                    width: 32,\r\n                    height: 32,\r\n                    m: '0 auto',\r\n                  }}\r\n                >\r\n                  <FontAwesomeIcon\r\n                    icon={faCube}\r\n                    style={{ width: 32, height: 32 }}\r\n                  />\r\n                </Box>\r\n              </Flex>\r\n            )}\r\n\r\n            {acceptBidStep === AcceptBidStep.Complete && !loading && (\r\n              <Flex direction=\"column\">\r\n                <Flex\r\n                  css={{\r\n                    p: '$4',\r\n                    py: '$5',\r\n                    flexDirection: 'column',\r\n                    alignItems: 'center',\r\n                    textAlign: 'center',\r\n                  }}\r\n                >\r\n                  <Box\r\n                    css={{\r\n                      color:\r\n                        failedSales > 0 ? '$errorAccent' : '$successAccent',\r\n                    }}\r\n                  >\r\n                    <FontAwesomeIcon\r\n                      icon={\r\n                        failedSales > 0 ? faCircleExclamation : faCircleCheck\r\n                      }\r\n                      fontSize={32}\r\n                    />\r\n                  </Box>\r\n                  <Text style=\"h5\" css={{ my: 24 }}>\r\n                    {failedSales > 0\r\n                      ? `${successfulSales} ${\r\n                          successfulSales > 1 ? 'items' : 'item'\r\n                        } sold, ${failedSales} ${\r\n                          failedSales > 1 ? 'items' : 'item'\r\n                        } failed`\r\n                      : `${totalSales > 1 ? 'Offers' : 'Offer'} accepted!`}\r\n                  </Text>\r\n                  <Flex direction=\"column\" css={{ gap: '$2', mb: '$3' }}>\r\n                    {[\r\n                      ...(swapStep?.items ?? []),\r\n                      ...(saleStep?.items ?? []),\r\n                    ]?.map((item, itemIndex) => {\r\n                      if (\r\n                        Array.isArray(item?.txHashes) &&\r\n                        item?.txHashes.length > 0\r\n                      ) {\r\n                        return item.txHashes.map((hash, txHashIndex) => {\r\n                          const truncatedTxHash = truncateAddress(hash.txHash)\r\n                          const blockExplorerBaseUrl = getChainBlockExplorerUrl(\r\n                            hash.chainId\r\n                          )\r\n                          return (\r\n                            <Anchor\r\n                              key={`${itemIndex}-${txHashIndex}`}\r\n                              href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                              color=\"primary\"\r\n                              weight=\"medium\"\r\n                              target=\"_blank\"\r\n                              css={{ fontSize: 12 }}\r\n                            >\r\n                              View transaction: {truncatedTxHash}\r\n                            </Anchor>\r\n                          )\r\n                        })\r\n                      } else {\r\n                        return null\r\n                      }\r\n                    })}\r\n                  </Flex>\r\n                </Flex>\r\n                <Flex\r\n                  css={{\r\n                    p: '$4',\r\n                    flexDirection: 'column',\r\n                    gap: '$3',\r\n                    '@bp1': {\r\n                      flexDirection: 'row',\r\n                    },\r\n                  }}\r\n                >\r\n                  <Button\r\n                    css={{ width: '100%' }}\r\n                    onClick={() => {\r\n                      setOpen(false)\r\n                    }}\r\n                  >\r\n                    {copy.ctaDone}\r\n                  </Button>\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n          </Modal>\r\n        )\r\n      }}\r\n    </AcceptBidModalRenderer>\r\n  )\r\n}\r\n\r\nAcceptBidModal.Custom = AcceptBidModalRenderer\r\n","import React, {\r\n  FC,\r\n  useEffect,\r\n  useState,\r\n  useCallback,\r\n  ReactNode,\r\n  useMemo,\r\n} from 'react'\r\nimport {\r\n  useTokens,\r\n  useCoinConversion,\r\n  useReservoirClient,\r\n  useBids,\r\n} from '../../hooks'\r\nimport { useAccount, useConfig, useWalletClient } from 'wagmi'\r\nimport {\r\n  Execute,\r\n  ExpectedPrice,\r\n  ReservoirClientActions,\r\n  ReservoirWallet,\r\n  SellPath,\r\n  axios,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport { Currency } from '../../types/Currency'\r\nimport {\r\n  WalletClient,\r\n  createPublicClient,\r\n  formatUnits,\r\n  http,\r\n  parseUnits,\r\n  zeroAddress,\r\n} from 'viem'\r\nimport { getAccount, switchChain } from 'wagmi/actions'\r\nimport { customChains } from '@sh-reservoir0x/reservoir-sdk'\r\nimport * as allChains from 'viem/chains'\r\nimport { ChainConfig, ContractConfig } from '../../constants/common'\r\nimport { BidStep } from '../bid/BidModalRenderer'\r\nimport wrappedContractNames from '../../constants/wrappedContractNames'\r\nimport wrappedContracts from '../../constants/wrappedContracts'\r\n\r\nexport enum AcceptBidStep {\r\n  Checkout,\r\n  Auth,\r\n  ApproveMarketplace,\r\n  Finalizing,\r\n  Complete,\r\n  Unavailable,\r\n  TokenSwap,\r\n}\r\n\r\nexport type AcceptBidTokenData = {\r\n  tokenId: string\r\n  collectionId: string\r\n  bidIds?: string[]\r\n  bidsPath?: NonNullable<SellPath>\r\n  royalty?: number\r\n}\r\n\r\nexport type EnhancedAcceptBidTokenData = Required<AcceptBidTokenData> & {\r\n  tokenData?: ReturnType<typeof useTokens>['data'][0]\r\n}\r\n\r\nexport type AcceptBidPrice = {\r\n  netAmount: number\r\n  amount: number\r\n  currency: Currency\r\n  royalty: number\r\n  marketplaceFee: number\r\n  feesOnTop: number\r\n}\r\n\r\nexport type AcceptBidStepData = {\r\n  totalSteps: number\r\n  steps: Execute['steps']\r\n  currentStep: Execute['steps'][0]\r\n  currentStepItem?: NonNullable<Execute['steps'][0]['items']>[0]\r\n}\r\n\r\ntype ChildrenProps = {\r\n  loading: boolean\r\n  tokensData: EnhancedAcceptBidTokenData[]\r\n  acceptBidStep: AcceptBidStep\r\n  transactionError?: Error | null\r\n  txHash: string | null\r\n  usdPrices: Record<string, ReturnType<typeof useCoinConversion>[0]>\r\n  prices: AcceptBidPrice[]\r\n  address?: string\r\n  blockExplorerBaseUrl: string\r\n  stepData: AcceptBidStepData | null\r\n  acceptBid: () => void\r\n  swapCurrency: Omit<Currency, 'coinGeckoId'> | null\r\n  setAcceptBidStep: React.Dispatch<React.SetStateAction<AcceptBidStep>>\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  tokens: AcceptBidTokenData[]\r\n  chainId?: number\r\n  currency?: string\r\n  normalizeRoyalties?: boolean\r\n  children: (props: ChildrenProps) => ReactNode\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  feesOnTopBps?: string[] | null\r\n  feesOnTopCustom?: (data: SellPath) => string[] | null\r\n}\r\n\r\nexport const AcceptBidModalRenderer: FC<Props> = ({\r\n  open,\r\n  tokens,\r\n  chainId,\r\n  normalizeRoyalties,\r\n  children,\r\n  walletClient,\r\n  feesOnTopBps,\r\n  feesOnTopCustom,\r\n  currency,\r\n}) => {\r\n  const [stepData, setStepData] = useState<AcceptBidStepData | null>(null)\r\n  const [prices, setPrices] = useState<AcceptBidPrice[]>([])\r\n  const [acceptBidStep, setAcceptBidStep] = useState<AcceptBidStep>(\r\n    AcceptBidStep.Checkout\r\n  )\r\n  const [transactionError, setTransactionError] = useState<Error | null>()\r\n  const [txHash, setTxHash] = useState<string | null>(null)\r\n\r\n  const client = useReservoirClient()\r\n  const currentChain = client?.currentChain()\r\n  const config = useConfig()\r\n\r\n  const [publicClient, setPublicClient] = useState<any>(undefined)\r\n\r\n  const auraEVMTestnet = ChainConfig[chainId ? chainId : 1235]\r\n\r\n  useEffect(() => {\r\n    setPublicClient(\r\n      createPublicClient({\r\n        chain: ChainConfig[chainId ? chainId : 1235],\r\n        transport: http(),\r\n      })\r\n    )\r\n  }, [])\r\n\r\n  const rendererChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const wagmiChain: allChains.Chain | undefined = Object.values({\r\n    ...allChains,\r\n    ...customChains,\r\n  }).find(({ id }) => rendererChain?.id === id)\r\n  const { data: wagmiWallet } = useWalletClient({ chainId: rendererChain?.id })\r\n\r\n  const wallet = walletClient || wagmiWallet\r\n\r\n  const blockExplorerBaseUrl =\r\n    wagmiChain?.blockExplorers?.default?.url || 'https://etherscan.io'\r\n\r\n  const [isFetchingBidPath, setIsFetchingBidPath] = useState(false)\r\n  const [bidsPath, setBidsPath] = useState<SellPath | null>(null)\r\n  const [feesOnTop, setFeesOnTop] = useState<string[] | null>(null)\r\n  const [isApproveModule, setIsApproveModule] = useState(false)\r\n  const [isApproveAll, setIsApproveAll] = useState(false)\r\n\r\n  const _tokenIds = tokens.map((token) => {\r\n    const contract = (token?.collectionId || '').split(':')[0]\r\n    return `${contract}:${token.tokenId}`\r\n  })\r\n  const {\r\n    data: tokensData,\r\n    mutate: mutateTokens,\r\n    isValidating: isFetchingTokenData,\r\n  } = useTokens(\r\n    open &&\r\n      _tokenIds &&\r\n      _tokenIds.length > 0 && {\r\n        tokens: _tokenIds,\r\n        normalizeRoyalties,\r\n      },\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    rendererChain?.id\r\n  )\r\n\r\n  const enhancedTokens = useMemo(() => {\r\n    const tokensDataMap = tokensData.reduce((map, data) => {\r\n      map[`${data.token?.contract}:${data.token?.tokenId}`] = data\r\n      return map\r\n    }, {} as Record<string, (typeof tokensData)[0]>)\r\n    const tokensBidPathMap =\r\n      bidsPath?.reduce((map, path) => {\r\n        const key = `${path.contract}:${path.tokenId}`\r\n        const mapPath = map[key]\r\n        if (!mapPath) {\r\n          map[key] = [path]\r\n        } else {\r\n          mapPath.push(path)\r\n        }\r\n        return map\r\n      }, {} as Record<string, NonNullable<AcceptBidTokenData['bidsPath']>>) ||\r\n      {}\r\n\r\n    return tokens.reduce((enhancedTokens, token) => {\r\n      const contract = token.collectionId.split(':')[0]\r\n      const dataMapKey = `${contract}:${token.tokenId}`\r\n      const tokenData = tokensDataMap[dataMapKey]\r\n      const bidIds = token.bidIds?.filter((bidId) => bidId.length > 0) || []\r\n      const bidsPath: NonNullable<AcceptBidTokenData['bidsPath']> =\r\n        tokensBidPathMap[dataMapKey] ? tokensBidPathMap[dataMapKey] : []\r\n      if (!bidIds.length) {\r\n        enhancedTokens.push({\r\n          ...token,\r\n          bidIds: tokenData?.market?.topBid?.id\r\n            ? [tokenData.market.topBid.id]\r\n            : [],\r\n          tokenData,\r\n          bidsPath,\r\n        })\r\n      } else {\r\n        enhancedTokens.push({\r\n          ...token,\r\n          bidIds: token.bidIds || [],\r\n          tokenData,\r\n          bidsPath,\r\n        })\r\n      }\r\n      return enhancedTokens\r\n    }, [] as any[])\r\n    // }, [] as EnhancedAcceptBidTokenData[])\r\n  }, [tokensData, tokens, bidsPath])\r\n\r\n  const { data: bids } = useBids(\r\n    {\r\n      ids:\r\n        enhancedTokens?.length > 0 && enhancedTokens[0]?.bidIds?.length > 0\r\n          ? enhancedTokens[0]?.bidIds\r\n          : [],\r\n      normalizeRoyalties,\r\n      includeCriteriaMetadata: true,\r\n      includeRawData: true,\r\n    },\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    open && enhancedTokens?.length > 0 && enhancedTokens[0]?.bidIds?.length > 0\r\n      ? true\r\n      : false,\r\n    rendererChain?.id\r\n  )\r\n\r\n  const bid = bids && bids[0] ? bids[0] : undefined\r\n\r\n  const checkIsApproveForAll = () => {\r\n    publicClient\r\n      ?.readContract({\r\n        abi: [\r\n          {\r\n            inputs: [\r\n              { internalType: 'address', name: '_user', type: 'address' },\r\n              { internalType: 'address', name: '_module', type: 'address' },\r\n            ],\r\n            name: 'isApprovedForAll',\r\n            outputs: [{ internalType: 'bool', name: '', type: 'bool' }],\r\n            stateMutability: 'view',\r\n            type: 'function',\r\n          },\r\n        ],\r\n        address:\r\n          enhancedTokens?.length > 0\r\n            ? (enhancedTokens[0].collectionId as `0x${string}`)\r\n            : '',\r\n        functionName: 'isApprovedForAll',\r\n        args: [\r\n          address as `0x${string}`,\r\n          ContractConfig[chainId ? chainId : 1235]\r\n            ?.ERC721TRANSFERHELPER as `0x${string}`,\r\n        ],\r\n      })\r\n      .then((res: any) => {\r\n        if (res) {\r\n          setIsApproveAll(true)\r\n        }\r\n      })\r\n      .catch((err: any) => {\r\n        setIsApproveAll(false)\r\n        setAcceptBidStep(AcceptBidStep.Checkout)\r\n      })\r\n  }\r\n\r\n  const checkIsApproveForModule = () => {\r\n    publicClient\r\n      ?.readContract({\r\n        abi: [\r\n          {\r\n            type: 'function',\r\n            name: 'isModuleApproved',\r\n            inputs: [\r\n              {\r\n                name: '_user',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n              {\r\n                name: '_module',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n            ],\r\n            outputs: [\r\n              {\r\n                name: '',\r\n                type: 'bool',\r\n                internalType: 'bool',\r\n              },\r\n            ],\r\n            stateMutability: 'view',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.OFFER_MODULE_MANAGER as `0x${string}`,\r\n        functionName: 'isModuleApproved',\r\n        args: [\r\n          address as `0x${string}`,\r\n          ContractConfig[chainId ? chainId : 1235]\r\n            ?.OFFERS_OMNIBUS as `0x${string}`,\r\n        ],\r\n      })\r\n      .then((res: any) => {\r\n        if (res) {\r\n          setIsApproveModule(true)\r\n        }\r\n      })\r\n      .catch((err: any) => {\r\n        setIsApproveModule(false)\r\n        setAcceptBidStep(AcceptBidStep.Checkout)\r\n      })\r\n  }\r\n\r\n  useEffect(() => {\r\n    if (publicClient) {\r\n      checkIsApproveForAll()\r\n      checkIsApproveForModule()\r\n    }\r\n  }, [publicClient])\r\n\r\n  const triggerSetApproveForModule = () => {\r\n    const steps: Execute['steps'] = [\r\n      {\r\n        error: '',\r\n        errorData: [],\r\n        action: '',\r\n        description: '',\r\n        kind: 'transaction',\r\n        id: 'sale',\r\n        items: [\r\n          {\r\n            status: 'complete',\r\n            transfersData: [\r\n              {\r\n                amount: '1',\r\n              },\r\n            ],\r\n          },\r\n        ],\r\n      },\r\n    ]\r\n\r\n    if (\r\n      steps &&\r\n      steps?.length > 0 &&\r\n      steps[0]?.items &&\r\n      steps[0]?.items?.length > 0\r\n    ) {\r\n      setStepData({\r\n        totalSteps: 1,\r\n        currentStep: steps[0],\r\n        currentStepItem: steps[0]?.items[0],\r\n        steps: steps,\r\n      })\r\n    }\r\n\r\n    setAcceptBidStep(AcceptBidStep.ApproveMarketplace)\r\n    // setStepData({\r\n    //   totalSteps: 1,\r\n    //   currentStep: {\r\n    //     kind: 'transaction',\r\n    //     action: '',\r\n    //     description:\r\n    //       'Please approve the collection(s) from your wallet. Each collection only needs to be approved once.',\r\n    //     id: '1',\r\n    //   },\r\n    //   steps: [],\r\n    // })\r\n    // set allowance\r\n    wagmiWallet\r\n      ?.writeContract({\r\n        abi: [\r\n          {\r\n            type: 'function',\r\n            name: 'setApprovalForModule',\r\n            inputs: [\r\n              {\r\n                name: '_module',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n              {\r\n                name: '_approved',\r\n                type: 'bool',\r\n                internalType: 'bool',\r\n              },\r\n            ],\r\n            outputs: [],\r\n            stateMutability: 'nonpayable',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.OFFER_MODULE_MANAGER as `0x${string}`,\r\n        functionName: 'setApprovalForModule',\r\n        args: [\r\n          ContractConfig[chainId ? chainId : 1235]\r\n            ?.OFFERS_OMNIBUS as `0x${string}`,\r\n          true,\r\n        ],\r\n        gas: 500000n,\r\n      })\r\n      .then((hash) => {\r\n        publicClient\r\n          .waitForTransactionReceipt({ hash })\r\n          .then(() => {\r\n            triggerAcceptBidContract()\r\n          })\r\n          .catch((error: any) => {\r\n            triggerAcceptBidContract()\r\n            setTransactionError(error)\r\n          })\r\n      })\r\n      .catch((err) => {\r\n        setTransactionError(err)\r\n        setAcceptBidStep(AcceptBidStep.Checkout)\r\n      })\r\n  }\r\n\r\n  const triggerAcceptBidContract = () => {\r\n    const steps: Execute['steps'] = [\r\n      {\r\n        error: '',\r\n        errorData: [],\r\n        action: '',\r\n        description: '',\r\n        kind: 'transaction',\r\n        id: 'sale',\r\n        items: [\r\n          {\r\n            status: 'complete',\r\n            transfersData: [\r\n              {\r\n                amount: '1',\r\n              },\r\n            ],\r\n          },\r\n        ],\r\n      },\r\n    ]\r\n\r\n    if (\r\n      steps &&\r\n      steps?.length > 0 &&\r\n      steps[0]?.items &&\r\n      steps[0]?.items?.length > 0\r\n    ) {\r\n      setStepData({\r\n        totalSteps: 1,\r\n        currentStep: steps[0],\r\n        currentStepItem: steps[0]?.items[0],\r\n        steps: steps,\r\n      })\r\n    }\r\n\r\n    setAcceptBidStep(AcceptBidStep.ApproveMarketplace)\r\n    const token =\r\n      enhancedTokens?.length > 0\r\n        ? enhancedTokens[0].tokenData?.token\r\n        : undefined\r\n    // Fill token\r\n    wagmiWallet\r\n      ?.writeContract({\r\n        abi: [\r\n          {\r\n            type: 'function',\r\n            name: 'fillOffer',\r\n            inputs: [\r\n              {\r\n                name: '_tokenContract',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n              {\r\n                name: '_tokenId',\r\n                type: 'uint256',\r\n                internalType: 'uint256',\r\n              },\r\n              {\r\n                name: '_offerId',\r\n                type: 'uint256',\r\n                internalType: 'uint256',\r\n              },\r\n              {\r\n                name: '_amount',\r\n                type: 'uint256',\r\n                internalType: 'uint256',\r\n              },\r\n              {\r\n                name: '_currency',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n              {\r\n                name: '_finder',\r\n                type: 'address',\r\n                internalType: 'address',\r\n              },\r\n            ],\r\n            outputs: [],\r\n            stateMutability: 'nonpayable',\r\n          },\r\n        ],\r\n        address: ContractConfig[chainId ? chainId : 1235]\r\n          ?.OFFERS_OMNIBUS as `0x${string}`,\r\n        functionName: 'fillOffer',\r\n        args: [\r\n          token ? (token?.contract as `0x${string}`) : ('' as `0x${string}`),\r\n          BigInt(Number(token?.tokenId)),\r\n          BigInt(Number(bid?.rawData?.offerId || 0)),\r\n          BigInt(Number(bid?.rawData?.askPrice) || 0),\r\n          wrappedContracts[chainId ? chainId : 1235] as `0x${string}`,\r\n          zeroAddress,\r\n        ],\r\n        gas: 500000n,\r\n      })\r\n      .then((hash) => {\r\n        const steps: Execute['steps'] = [\r\n          {\r\n            error: '',\r\n            errorData: [],\r\n            action: '',\r\n            description: '',\r\n            kind: 'transaction',\r\n            id: 'sale',\r\n            items: [\r\n              {\r\n                status: 'complete',\r\n                transfersData: [\r\n                  {\r\n                    amount: '1',\r\n                    txHash: hash,\r\n                  },\r\n                ],\r\n                txHashes: [\r\n                  {\r\n                    txHash: hash,\r\n                    chainId: chainId ? chainId : 1235,\r\n                  },\r\n                ],\r\n              },\r\n            ],\r\n          },\r\n        ]\r\n\r\n        if (\r\n          steps &&\r\n          steps?.length > 0 &&\r\n          steps[0]?.items &&\r\n          steps[0]?.items?.length > 0\r\n        ) {\r\n          setStepData({\r\n            totalSteps: 1,\r\n            currentStep: steps[0],\r\n            currentStepItem: steps[0]?.items[0],\r\n            steps: steps,\r\n          })\r\n        }\r\n        setAcceptBidStep(AcceptBidStep.Finalizing)\r\n        publicClient\r\n          .waitForTransactionReceipt({ hash })\r\n          .then((res: any) => {\r\n            if (res?.status === 'success') {\r\n              setTimeout(() => {\r\n                const steps: Execute['steps'] = [\r\n                  {\r\n                    error: '',\r\n                    errorData: [],\r\n                    action: '',\r\n                    description: '',\r\n                    kind: 'transaction',\r\n                    id: 'sale',\r\n                    items: [\r\n                      {\r\n                        status: 'complete',\r\n                        transfersData: [\r\n                          {\r\n                            amount: '1',\r\n                          },\r\n                        ],\r\n                        txHashes: [\r\n                          {\r\n                            txHash: hash,\r\n                            chainId: chainId ? chainId : 1235,\r\n                          },\r\n                        ],\r\n                      },\r\n                    ],\r\n                  },\r\n                ]\r\n\r\n                if (\r\n                  steps &&\r\n                  steps?.length > 0 &&\r\n                  steps[0]?.items &&\r\n                  steps[0]?.items?.length > 0\r\n                ) {\r\n                  setStepData({\r\n                    totalSteps: 1,\r\n                    currentStep: steps[0],\r\n                    currentStepItem: steps[0]?.items[0],\r\n                    steps: steps,\r\n                  })\r\n                }\r\n\r\n                setAcceptBidStep(AcceptBidStep.Complete)\r\n              }, 5000)\r\n            } else {\r\n              setAcceptBidStep(AcceptBidStep.Checkout)\r\n            }\r\n          })\r\n          .catch((error: any) => {\r\n            setAcceptBidStep(AcceptBidStep.Checkout)\r\n            setTransactionError(error)\r\n          })\r\n      })\r\n      .catch((err) => {\r\n        setTransactionError(err)\r\n        setAcceptBidStep(AcceptBidStep.Checkout)\r\n      })\r\n  }\r\n\r\n  const bidTokenMap = useMemo(\r\n    () =>\r\n      enhancedTokens.reduce((map, token) => {\r\n        token.bidIds.forEach((bidId: any) => {\r\n          map[bidId] = token\r\n        })\r\n        return map\r\n      }, {} as Record<string, (typeof enhancedTokens)[0]>),\r\n    [enhancedTokens]\r\n  )\r\n\r\n  const fetchBidsPath = useCallback(\r\n    async (tokens: AcceptBidTokenData[]) => {\r\n      if (!wallet || !client) {\r\n        setIsFetchingBidPath(false)\r\n        return\r\n      }\r\n      setIsFetchingBidPath(true)\r\n      type AcceptOfferOptions = Parameters<\r\n        ReservoirClientActions['acceptOffer']\r\n      >['0']['options']\r\n      let options: AcceptOfferOptions = {\r\n        onlyPath: true,\r\n        ...(currency && { currency }),\r\n        partial: true,\r\n      }\r\n      if (normalizeRoyalties !== undefined) {\r\n        options.normalizeRoyalties = normalizeRoyalties\r\n      }\r\n\r\n      type AcceptBidItems = Parameters<\r\n        ReservoirClientActions['acceptOffer']\r\n      >[0]['items']\r\n      const items: AcceptBidItems = tokens?.reduce((items, token) => {\r\n        if (tokens) {\r\n          const contract = token.collectionId.split(':')[0]\r\n          const bids = token.bidIds\r\n            ? token.bidIds.filter((bid) => bid.length > 0)\r\n            : []\r\n          if (bids && bids.length > 0) {\r\n            bids.forEach((bidId) => {\r\n              items.push({\r\n                orderId: bidId,\r\n                token: `${contract}:${token.tokenId}`,\r\n              })\r\n            })\r\n          } else {\r\n            items.push({\r\n              token: `${contract}:${token.tokenId}`,\r\n            })\r\n          }\r\n        }\r\n        return items\r\n      }, [] as AcceptBidItems)\r\n\r\n      const acceptOfferParams = {\r\n        chainId: rendererChain?.id,\r\n        items: items,\r\n        wallet,\r\n        options,\r\n        precheck: true,\r\n        onProgress: () => {},\r\n      }\r\n\r\n      client.actions\r\n        .acceptOffer(acceptOfferParams)\r\n        .then((data) => {\r\n          if (feesOnTopBps || feesOnTopCustom) {\r\n            const bidsPath =\r\n              'path' in (data as any)\r\n                ? ((data as Execute)['path'] as SellPath)\r\n                : null\r\n            if (bidsPath) {\r\n              let feesOnTop: string[] = []\r\n              if (feesOnTopBps) {\r\n                const total = bidsPath.reduce((total, path) => {\r\n                  return (total += BigInt(path.totalRawPrice || 0n))\r\n                }, 0n)\r\n                feesOnTop = feesOnTopBps.map((feeOnTop) => {\r\n                  const [recipient, fee] = feeOnTop.split(':')\r\n                  return `${recipient}:${formatUnits(\r\n                    (BigInt(fee) * total) / 10000n,\r\n                    0\r\n                  )}`\r\n                })\r\n              } else if (feesOnTopCustom) {\r\n                feesOnTop = feesOnTopCustom(bidsPath) || []\r\n              }\r\n\r\n              if (feesOnTop) {\r\n                acceptOfferParams.options.feesOnTop = feesOnTop\r\n                setFeesOnTop(feesOnTop)\r\n              }\r\n\r\n              return client.actions.acceptOffer(acceptOfferParams)\r\n            }\r\n          } else {\r\n            return data\r\n          }\r\n        })\r\n        .then((data) => {\r\n          setBidsPath(\r\n            'path' in (data as any)\r\n              ? ((data as Execute)['path'] as SellPath)\r\n              : null\r\n          )\r\n        })\r\n        .finally(() => {\r\n          setIsFetchingBidPath(false)\r\n        })\r\n    },\r\n    [\r\n      currency,\r\n      client,\r\n      wallet,\r\n      rendererChain,\r\n      normalizeRoyalties,\r\n      feesOnTopBps,\r\n      feesOnTopCustom,\r\n    ]\r\n  )\r\n\r\n  useEffect(() => {\r\n    if (open) {\r\n      fetchBidsPath(tokens)\r\n    }\r\n  }, [client, tokens, open])\r\n\r\n  const currencySymbols = useMemo(\r\n    () =>\r\n      Array.from(\r\n        enhancedTokens.reduce((symbols, { bidsPath }) => {\r\n          bidsPath.forEach(({ sellOutCurrencySymbol, currencySymbol }: any) => {\r\n            if (sellOutCurrencySymbol) {\r\n              symbols.add(sellOutCurrencySymbol)\r\n            }\r\n\r\n            if (currencySymbol) {\r\n              symbols.add(currencySymbol)\r\n            }\r\n          })\r\n          return symbols\r\n        }, new Set() as Set<string>)\r\n      ).join(','),\r\n    [enhancedTokens]\r\n  )\r\n\r\n  const conversions = useCoinConversion(\r\n    open && currencySymbols.length > 0 ? 'USD' : undefined,\r\n    currencySymbols\r\n  )\r\n\r\n  const usdPrices = useMemo(\r\n    () =>\r\n      conversions.reduce((map, price) => {\r\n        map[price.symbol] = price\r\n        return map\r\n      }, {} as ChildrenProps['usdPrices']),\r\n    [conversions]\r\n  )\r\n\r\n  const acceptBid = useCallback(async () => {\r\n    setTransactionError(null)\r\n    if (!wallet) {\r\n      const error = new Error('Missing a wallet/signer')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    let activeWalletChain = getAccount(config).chain\r\n    if (rendererChain?.id !== activeWalletChain?.id) {\r\n      activeWalletChain = await switchChain(config, {\r\n        chainId: rendererChain?.id as number,\r\n      })\r\n    }\r\n\r\n    if (rendererChain?.id !== activeWalletChain?.id) {\r\n      const error = new Error(`Mismatching chainIds`)\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!bidsPath) {\r\n      const error = new Error('Missing bids to accept')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!client) {\r\n      const error = new Error('ReservoirClient was not initialized')\r\n      setTransactionError(error)\r\n      setTransactionError(null)\r\n      throw error\r\n    }\r\n\r\n    type AcceptOfferOptions = Parameters<\r\n      ReservoirClientActions['acceptOffer']\r\n    >['0']['options']\r\n    let options: AcceptOfferOptions = {\r\n      partial: true,\r\n      ...(currency && { currency }),\r\n    }\r\n\r\n    if (normalizeRoyalties !== undefined) {\r\n      options.normalizeRoyalties = normalizeRoyalties\r\n    }\r\n\r\n    if (feesOnTop) {\r\n      options.feesOnTop = feesOnTop\r\n    }\r\n\r\n    setAcceptBidStep(AcceptBidStep.ApproveMarketplace)\r\n\r\n    type AcceptBidItems = Parameters<\r\n      ReservoirClientActions['acceptOffer']\r\n    >[0]['items']\r\n    const items: AcceptBidItems = bidsPath.map(\r\n      ({ orderId, tokenId, contract }) => ({\r\n        orderId: orderId,\r\n        token: `${contract}:${tokenId}`,\r\n      })\r\n    )\r\n\r\n    const expectedPrice: Record<string, ExpectedPrice> = {}\r\n    for (let currency in prices) {\r\n      expectedPrice[currency] = {\r\n        amount: prices[currency].netAmount,\r\n        raw: parseUnits(\r\n          `${prices[currency].netAmount}`,\r\n          prices[currency].currency.decimals || 18\r\n        ),\r\n        currencyAddress: prices[currency].currency.contract,\r\n        currencyDecimals: prices[currency].currency.decimals || 18,\r\n      }\r\n    }\r\n\r\n    let hasError = false\r\n\r\n    if (rendererChain?.name === auraEVMTestnet?.name) {\r\n      if (!isApproveAll) {\r\n        const steps: Execute['steps'] = [\r\n          {\r\n            error: '',\r\n            errorData: [],\r\n            action: '',\r\n            description: '',\r\n            kind: 'transaction',\r\n            id: 'sale',\r\n            items: [\r\n              {\r\n                status: 'complete',\r\n                transfersData: [\r\n                  {\r\n                    amount: '1',\r\n                  },\r\n                ],\r\n              },\r\n            ],\r\n          },\r\n        ]\r\n\r\n        if (\r\n          steps &&\r\n          steps?.length > 0 &&\r\n          steps[0]?.items &&\r\n          steps[0]?.items?.length > 0\r\n        ) {\r\n          setStepData({\r\n            totalSteps: 1,\r\n            currentStep: steps[0],\r\n            currentStepItem: steps[0]?.items[0],\r\n            steps: steps,\r\n          })\r\n        }\r\n\r\n        setAcceptBidStep(AcceptBidStep.ApproveMarketplace)\r\n        // setStepData({\r\n        //   totalSteps: 1,\r\n        //   currentStep: {\r\n        //     kind: 'transaction',\r\n        //     action: 'approval',\r\n        //     description:\r\n        //       'You will be prompted to grant approval for selling on the marketplace. You only need to approve it once for the first time.',\r\n        //     id: '1',\r\n        //   },\r\n        //   steps: [],\r\n        // })\r\n        // approve module\r\n        await wagmiWallet\r\n          ?.writeContract({\r\n            abi: [\r\n              {\r\n                inputs: [\r\n                  {\r\n                    internalType: 'address',\r\n                    name: '_module',\r\n                    type: 'address',\r\n                  },\r\n                  { internalType: 'bool', name: '_approved', type: 'bool' },\r\n                ],\r\n                name: 'setApprovalForAll',\r\n                outputs: [],\r\n                stateMutability: 'nonpayable',\r\n                type: 'function',\r\n              },\r\n            ],\r\n            address:\r\n              enhancedTokens?.length > 0\r\n                ? (enhancedTokens[0].tokenData?.token\r\n                    ?.contract as `0x${string}`)\r\n                : ('' as `0x${string}`),\r\n            functionName: 'setApprovalForAll',\r\n            args: [\r\n              ContractConfig[chainId ? chainId : 1235]\r\n                ?.ERC721TRANSFERHELPER as `0x${string}`,\r\n              true,\r\n            ],\r\n            gas: 500000n,\r\n          })\r\n          .then((hash) => {\r\n            publicClient\r\n              .waitForTransactionReceipt({ hash })\r\n              .then((res: any) => {\r\n                triggerSetApproveForModule()\r\n              })\r\n              .catch((error: any) => {\r\n                triggerSetApproveForModule()\r\n                setTransactionError(error)\r\n              })\r\n          })\r\n          .catch((err) => {\r\n            setTransactionError(err)\r\n            setAcceptBidStep(AcceptBidStep.Checkout)\r\n          })\r\n\r\n        return\r\n      }\r\n\r\n      if (!isApproveModule) {\r\n        triggerSetApproveForModule()\r\n      } else {\r\n        triggerAcceptBidContract()\r\n      }\r\n    } else {\r\n      client.actions\r\n        .acceptOffer({\r\n          chainId: rendererChain?.id,\r\n          expectedPrice,\r\n          wallet,\r\n          items,\r\n          onProgress: (steps: Execute['steps'], path: Execute['path']) => {\r\n            if (!steps || hasError) return\r\n            setBidsPath(path)\r\n            const executableSteps = steps.filter(\r\n              (step) => step.items && step.items.length > 0\r\n            )\r\n\r\n            let stepCount = executableSteps.length\r\n\r\n            let currentStepItem:\r\n              | NonNullable<Execute['steps'][0]['items']>[0]\r\n              | undefined\r\n            let currentStepIndex: number = 0\r\n            executableSteps.find((step, index) => {\r\n              currentStepIndex = index\r\n              currentStepItem = step.items?.find(\r\n                (item) => item.status === 'incomplete'\r\n              )\r\n              return currentStepItem\r\n            })\r\n\r\n            const currentStep =\r\n              currentStepIndex > -1\r\n                ? executableSteps[currentStepIndex]\r\n                : executableSteps[stepCount - 1]\r\n\r\n            if (currentStepItem) {\r\n              setStepData({\r\n                totalSteps: stepCount,\r\n                currentStep,\r\n                currentStepItem,\r\n                steps,\r\n              })\r\n\r\n              if (currentStep.id === 'auth') {\r\n                setAcceptBidStep(AcceptBidStep.Auth)\r\n              } else if (currentStep.id === 'nft-approval') {\r\n                setAcceptBidStep(AcceptBidStep.ApproveMarketplace)\r\n              } else if (currentStep.id === 'sale') {\r\n                if (\r\n                  currentStep.items?.every(\r\n                    (item) => item.txHashes !== undefined\r\n                  )\r\n                ) {\r\n                  setAcceptBidStep(AcceptBidStep.Finalizing)\r\n                } else {\r\n                  setAcceptBidStep(AcceptBidStep.ApproveMarketplace)\r\n                }\r\n              } else if (currentStep.id === 'swap') {\r\n                setAcceptBidStep(AcceptBidStep.TokenSwap)\r\n              }\r\n            } else if (\r\n              executableSteps.every(\r\n                (step) =>\r\n                  !step.items ||\r\n                  step.items.length == 0 ||\r\n                  step.items?.every((item) => item.status === 'complete')\r\n              )\r\n            ) {\r\n              setAcceptBidStep(AcceptBidStep.Complete)\r\n\r\n              const lastStepItem = currentStep.items\r\n                ? currentStep.items[currentStep.items?.length - 1]\r\n                : undefined\r\n\r\n              if (lastStepItem) {\r\n                setStepData({\r\n                  totalSteps: stepCount,\r\n                  steps,\r\n                  currentStep,\r\n                  currentStepItem: lastStepItem,\r\n                })\r\n              }\r\n            }\r\n          },\r\n          options,\r\n        })\r\n        .catch((e: Error) => {\r\n          hasError = true\r\n          setTransactionError(e)\r\n          setAcceptBidStep(AcceptBidStep.Checkout)\r\n          setStepData(null)\r\n          fetchBidsPath(tokens)\r\n          mutateTokens()\r\n        })\r\n    }\r\n  }, [\r\n    currency,\r\n    config,\r\n    bidsPath,\r\n    bidTokenMap,\r\n    rendererChain,\r\n    client,\r\n    wallet,\r\n    prices,\r\n    feesOnTop,\r\n    mutateTokens,\r\n    bid,\r\n  ])\r\n\r\n  useEffect(() => {\r\n    if (bidsPath && bidsPath.length > 0) {\r\n      const prices: Record<string, AcceptBidPrice> = bidsPath.reduce(\r\n        (\r\n          map,\r\n          {\r\n            quote,\r\n            sellOutCurrency,\r\n            sellOutCurrencyDecimals,\r\n            sellOutCurrencySymbol,\r\n            sellOutQuote,\r\n            sellOutRawQuote,\r\n            currency,\r\n            currencyDecimals,\r\n            currencySymbol,\r\n            builtInFees,\r\n            feesOnTop,\r\n            totalPrice,\r\n          }\r\n        ) => {\r\n          const netAmount = sellOutQuote || quote || 0\r\n          const amount = totalPrice || 0\r\n          let royalty = tokens?.length > 0 ? tokens[0]?.royalty || 0 : 0\r\n          let marketplaceFee = 0\r\n\r\n          if (sellOutCurrency && sellOutCurrencySymbol) {\r\n            const referralFee =\r\n              feesOnTop?.reduce(\r\n                (total, fee) => total + (fee?.amount || 0),\r\n                0\r\n              ) || 0\r\n            builtInFees?.forEach((fee) => {\r\n              switch (fee.kind) {\r\n                case 'marketplace': {\r\n                  marketplaceFee = fee.amount || 0\r\n                  break\r\n                }\r\n                case 'royalty': {\r\n                  royalty = fee.amount || 0\r\n                  break\r\n                }\r\n              }\r\n            })\r\n            if (!map[sellOutCurrencySymbol]) {\r\n              map[sellOutCurrencySymbol] = {\r\n                netAmount: netAmount - referralFee,\r\n                amount,\r\n                currency: {\r\n                  contract: sellOutCurrency,\r\n                  symbol: sellOutCurrencySymbol,\r\n                  decimals: currencyDecimals,\r\n                },\r\n                royalty,\r\n                marketplaceFee,\r\n                feesOnTop: referralFee,\r\n              }\r\n            } else if (map[sellOutCurrencySymbol]) {\r\n              map[sellOutCurrencySymbol].netAmount += netAmount - referralFee\r\n              map[sellOutCurrencySymbol].amount += amount\r\n              map[sellOutCurrencySymbol].royalty += royalty\r\n              map[sellOutCurrencySymbol].marketplaceFee += marketplaceFee\r\n              map[sellOutCurrencySymbol].feesOnTop += referralFee\r\n            }\r\n          } else if (currency && currencySymbol) {\r\n            const referralFee =\r\n              feesOnTop?.reduce(\r\n                (total, fee) => total + (fee?.amount || 0),\r\n                0\r\n              ) || 0\r\n            builtInFees?.forEach((fee) => {\r\n              switch (fee.kind) {\r\n                case 'marketplace': {\r\n                  marketplaceFee = fee.amount || 0\r\n                  break\r\n                }\r\n                case 'royalty': {\r\n                  royalty = fee.amount || 0\r\n                  break\r\n                }\r\n              }\r\n            })\r\n            if (!map[currencySymbol]) {\r\n              map[currencySymbol] = {\r\n                netAmount:\r\n                  netAmount - marketplaceFee - netAmount * (royalty / 100),\r\n                amount,\r\n                currency: {\r\n                  contract: currency,\r\n                  symbol: currencySymbol,\r\n                  decimals: currencyDecimals,\r\n                },\r\n                royalty: netAmount * (royalty / 100),\r\n                marketplaceFee,\r\n                feesOnTop: referralFee,\r\n              }\r\n            } else if (map[currencySymbol]) {\r\n              map[currencySymbol].netAmount +=\r\n                netAmount - referralFee - netAmount * (royalty / 100)\r\n              map[currencySymbol].amount += amount\r\n              ;(map[currencySymbol].royalty += netAmount * (royalty / 100)),\r\n                (map[currencySymbol].marketplaceFee += marketplaceFee)\r\n              map[currencySymbol].feesOnTop += referralFee\r\n            }\r\n          } else {\r\n            map['WAURA'] = {\r\n              netAmount:\r\n                netAmount - marketplaceFee - netAmount * (royalty / 100),\r\n              amount: amount,\r\n              royalty: netAmount * (royalty / 100),\r\n              marketplaceFee: marketplaceFee,\r\n              feesOnTop: 0,\r\n              currency: {\r\n                contract: ContractConfig[chainId ? chainId : 1235]\r\n                  ?.WETH as `0x${string}`,\r\n                symbol: 'WAURA',\r\n                decimals: 18,\r\n              },\r\n            }\r\n          }\r\n          return map\r\n        },\r\n        {} as Record<string, AcceptBidPrice>\r\n      )\r\n\r\n      setPrices(Object.values(prices))\r\n\r\n      if (acceptBidStep === AcceptBidStep.Unavailable) {\r\n        setAcceptBidStep(AcceptBidStep.Checkout)\r\n      }\r\n    } else if (!isFetchingBidPath) {\r\n      setPrices([])\r\n      setAcceptBidStep(AcceptBidStep.Unavailable)\r\n    }\r\n  }, [client, bidsPath, isFetchingBidPath])\r\n\r\n  const swapCurrency = useMemo(() => {\r\n    const bidPath = bidsPath?.[0]\r\n    if (bidPath && bidPath.sellOutCurrency) {\r\n      return {\r\n        contract: bidPath.sellOutCurrency as string,\r\n        decimals: bidPath.sellOutCurrencyDecimals as number,\r\n        symbol: bidPath.sellOutCurrencySymbol as string,\r\n      }\r\n    } else return null\r\n  }, [bidsPath, currency])\r\n\r\n  const { address } = useAccount()\r\n\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setAcceptBidStep(AcceptBidStep.Checkout)\r\n      setTxHash(null)\r\n      setStepData(null)\r\n      setTransactionError(null)\r\n    }\r\n  }, [open])\r\n\r\n  open\r\n    ? (axios.defaults.headers.common['x-rkui-context'] =\r\n        'acceptBidModalRenderer')\r\n    : delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        swapCurrency,\r\n        loading: isFetchingBidPath || isFetchingTokenData,\r\n        tokensData: enhancedTokens,\r\n        acceptBidStep,\r\n        transactionError,\r\n        txHash,\r\n        usdPrices,\r\n        prices,\r\n        address,\r\n        blockExplorerBaseUrl,\r\n        acceptBid,\r\n        setAcceptBidStep,\r\n        stepData,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n","import React, { FC } from 'react'\r\nimport { styled } from '../../../stitches.config'\r\nimport { Flex, FormatCryptoCurrency, Text, Tooltip } from '../../primitives'\r\nimport { SellPath } from '@sh-reservoir0x/reservoir-sdk'\r\n\r\ntype Props = {\r\n  token: {\r\n    name?: string\r\n    id: string\r\n  }\r\n  collection?: {\r\n    name: string\r\n    id: string\r\n  }\r\n  fees?: NonNullable<SellPath>[0]['builtInFees']\r\n  img: string\r\n  sourceImg?: string\r\n  price?: number\r\n  netAmount?: number\r\n  currency?: string\r\n  decimals?: number\r\n  chainId?: number\r\n}\r\n\r\nconst Img = styled('img', {\r\n  height: 56,\r\n  width: 56,\r\n})\r\n\r\nconst AcceptBidLineItem: FC<Props> = ({\r\n  img,\r\n  token,\r\n  collection,\r\n  chainId,\r\n  sourceImg,\r\n  price,\r\n  netAmount,\r\n  fees,\r\n  currency,\r\n  decimals,\r\n}) => {\r\n  const royaltiesBps = fees?.reduce((total, fee) => {\r\n    if (fee?.kind === 'royalty') {\r\n      total += fee?.bps || 0\r\n    }\r\n    return total\r\n  }, 0)\r\n\r\n  const isUnavailable = !price\r\n\r\n  return (\r\n    <Flex css={{ p: '$4', borderBottom: '1px solid $borderColor', gap: '$2' }}>\r\n      <Img\r\n        src={img}\r\n        alt={'Token Image'}\r\n        css={{\r\n          borderRadius: 4,\r\n          overflow: 'hidden',\r\n          visibility: !img || img.length === 0 ? 'hidden' : 'visible',\r\n          flexShrink: 0,\r\n          objectFit: 'cover',\r\n          filter: isUnavailable ? 'grayscale(1)' : 'unset',\r\n        }}\r\n      />\r\n      <Flex\r\n        direction=\"column\"\r\n        align=\"start\"\r\n        justify=\"center\"\r\n        css={{ gap: 2, mr: 'auto' }}\r\n      >\r\n        <Text style=\"h6\" color={isUnavailable ? 'subtle' : 'base'}>\r\n          {token.name || `#${token.id}`}\r\n        </Text>\r\n        <Text style=\"body3\" color={isUnavailable ? 'subtle' : 'base'}>\r\n          {collection?.name}\r\n        </Text>\r\n        {royaltiesBps ? (\r\n          <Text style=\"body3\" color=\"subtle\">\r\n            Creator Royalties: {royaltiesBps / 100}%\r\n          </Text>\r\n        ) : null}\r\n      </Flex>\r\n      {isUnavailable ? (\r\n        <Text\r\n          color=\"error\"\r\n          style=\"body3\"\r\n          css={{ display: 'flex', alignItems: 'center', flexShrink: 0 }}\r\n        >\r\n          Offer no longer available\r\n        </Text>\r\n      ) : (\r\n        <Tooltip\r\n          side=\"left\"\r\n          content={\r\n            <Flex direction=\"column\" css={{ gap: '$2' }}>\r\n              <Flex css={{ gap: '$1' }} justify=\"between\">\r\n                <Text style=\"body3\">Total Offer Value</Text>\r\n                <FormatCryptoCurrency\r\n                  chainId={chainId}\r\n                  amount={price}\r\n                  address={currency}\r\n                  decimals={decimals}\r\n                  textStyle=\"subtitle3\"\r\n                />\r\n              </Flex>\r\n              {fees?.map((fee, i) => {\r\n                let feeName = 'Misc Fee'\r\n                switch (fee.kind) {\r\n                  case 'marketplace': {\r\n                    feeName = 'Marketplace Fee'\r\n                    break\r\n                  }\r\n                  case 'royalty': {\r\n                    feeName = 'Creator Royalties'\r\n                    break\r\n                  }\r\n                }\r\n                return (\r\n                  <Flex justify=\"between\" key={i}>\r\n                    <Text style=\"body3\" color=\"subtle\" css={{ mr: '$1' }}>\r\n                      {feeName}\r\n                    </Text>\r\n                    <Text style=\"body3\" color=\"subtle\" css={{ ml: 'auto' }}>\r\n                      -\r\n                    </Text>\r\n                    <FormatCryptoCurrency\r\n                      chainId={chainId}\r\n                      amount={fee.amount}\r\n                      address={currency}\r\n                      decimals={decimals}\r\n                      textStyle=\"subtitle3\"\r\n                    />\r\n                  </Flex>\r\n                )\r\n              })}\r\n              <Flex justify=\"between\" css={{ gap: '$1' }}>\r\n                <Text style=\"body3\">You Get</Text>\r\n                <FormatCryptoCurrency\r\n                  chainId={chainId}\r\n                  amount={netAmount}\r\n                  address={currency}\r\n                  decimals={decimals}\r\n                  textStyle=\"subtitle3\"\r\n                />\r\n              </Flex>\r\n            </Flex>\r\n          }\r\n        >\r\n          <Flex\r\n            direction=\"column\"\r\n            align=\"end\"\r\n            justify=\"center\"\r\n            css={{ gap: '$1', ml: 'auto', height: '100%' }}\r\n          >\r\n            {sourceImg && (\r\n              <Img src={sourceImg} css={{ height: 16, width: 16 }} />\r\n            )}\r\n            <FormatCryptoCurrency\r\n              chainId={chainId}\r\n              amount={price}\r\n              address={currency}\r\n              decimals={decimals}\r\n              textStyle=\"subtitle3\"\r\n            />\r\n          </Flex>\r\n        </Tooltip>\r\n      )}\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default AcceptBidLineItem\r\n","import React, { FC, useEffect, useMemo, useState } from 'react'\r\nimport { Execute, ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { ApproveCollapsible } from '../ApproveCollapisble'\r\nimport { EnhancedAcceptBidTokenData } from './AcceptBidModalRenderer'\r\nimport { Flex, Grid, Img, Loader, Text } from '../../primitives'\r\nimport { styled } from '@stitches/react'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\r\n\r\ntype Props = {\r\n  step: NonNullable<Execute['steps'][0]>\r\n  tokensData: EnhancedAcceptBidTokenData[]\r\n  chain?: ReservoirChain | null\r\n  open?: boolean\r\n  isCurrentStep?: boolean\r\n}\r\n\r\nconst StyledImg = styled(Img, {\r\n  width: 24,\r\n  height: 24,\r\n  borderRadius: 4,\r\n})\r\n\r\nconst Spinner = () => (\r\n  <Loader\r\n    css={{ display: 'flex', alignItems: 'center' }}\r\n    icon={\r\n      <Flex css={{ color: '$accentSolidHover' }}>\r\n        <FontAwesomeIcon icon={faCircleNotch} width={16} height={16} />\r\n      </Flex>\r\n    }\r\n  />\r\n)\r\n\r\nexport const ApproveBidCollapsible: FC<Props> = ({\r\n  step,\r\n  tokensData,\r\n  chain,\r\n  open,\r\n  isCurrentStep,\r\n}) => {\r\n  const [collapsibleOpen, setCollapsibleOpen] = useState(false)\r\n  const isComplete =\r\n    step && step.items?.every((item) => item?.status == 'complete')\r\n      ? true\r\n      : false\r\n\r\n  useEffect(() => {\r\n    if (open !== undefined && open !== collapsibleOpen) {\r\n      setCollapsibleOpen(open)\r\n    }\r\n  }, [open])\r\n\r\n  const pathMap = useMemo(\r\n    () =>\r\n      tokensData.reduce((paths, tokenData) => {\r\n        tokenData.bidsPath.forEach((bidPath) => {\r\n          if (bidPath.orderId) {\r\n            paths[bidPath.orderId] = bidPath\r\n          }\r\n        })\r\n        return paths\r\n      }, {} as Record<string, EnhancedAcceptBidTokenData['bidsPath'][0]>),\r\n    [tokensData]\r\n  )\r\n\r\n  const tokensMap = useMemo(\r\n    () =>\r\n      tokensData.reduce((map, tokenData) => {\r\n        const contract = (tokenData?.collectionId || '').split(':')[0]\r\n        map[`${contract}:${tokenData.tokenId}`] = tokenData\r\n        return map\r\n      }, {} as Record<string, EnhancedAcceptBidTokenData>),\r\n    []\r\n  )\r\n\r\n  if (step.id !== 'sale' && step.id !== 'nft-approval') {\r\n    return null\r\n  }\r\n\r\n  const title = step.id === 'sale' ? 'Confirm Sale' : 'Approve Collections'\r\n  const disabled = !step.items || !step.items.length\r\n  const baseApiUrl = chain?.baseApiUrl\r\n\r\n  return (\r\n    <ApproveCollapsible\r\n      title={title}\r\n      open={disabled ? false : collapsibleOpen}\r\n      onOpenChange={disabled ? () => {} : setCollapsibleOpen}\r\n      isInProgress={isCurrentStep}\r\n      isComplete={isComplete}\r\n      css={{ margin: 12 }}\r\n    >\r\n      <Grid\r\n        css={{\r\n          px: '$4',\r\n          pb: '$2',\r\n          gridTemplateColumns: 'auto 1fr 16px',\r\n          gridRowGap: 24,\r\n        }}\r\n      >\r\n        {step?.items?.map((item, i) => {\r\n          const paths = item.orderIds?.map((id) => pathMap[id]) || []\r\n          const marketplaces = Array.from(\r\n            paths.reduce((marketplaces, path) => {\r\n              if (path.source) {\r\n                marketplaces.add(path.source)\r\n              }\r\n              return marketplaces\r\n            }, new Set() as Set<string>)\r\n          ).join(',')\r\n          if (step.id === 'sale') {\r\n            const images = paths.reduce((images, path) => {\r\n              const tokenKey = `${path?.contract}:${path?.tokenId}`\r\n              const tokenData = tokensMap[tokenKey]?.tokenData\r\n              const image =\r\n                tokenData?.token?.imageSmall || baseApiUrl\r\n                  ? `${baseApiUrl}/redirect/tokens/${tokenKey}/image/v1?imageSize=small`\r\n                  : null\r\n              if (image && images.length < 4) {\r\n                images.push(image)\r\n              }\r\n              return images\r\n            }, [] as string[])\r\n\r\n            return (\r\n              <React.Fragment key={i}>\r\n                <Flex css={{ mr: '$2' }}>\r\n                  {images.map((image, i) => (\r\n                    <StyledImg\r\n                      key={i}\r\n                      src={image}\r\n                      css={{ marginLeft: i > 0 ? -14 : 0 }}\r\n                    />\r\n                  ))}\r\n                </Flex>\r\n                <Text\r\n                  style=\"body2\"\r\n                  color=\"subtle\"\r\n                  css={{ display: 'flex', alignItems: 'center' }}\r\n                >\r\n                  {/* Confirm sale of {paths.length}{' '} */}\r\n                  Confirm sale of 1{' '}\r\n                  {paths.length > 1 ? 'items' : 'item'} on{' '}\r\n                  {marketplaces.length > 0 ? marketplaces : 'SeekHYPE'}\r\n                </Text>\r\n                {isCurrentStep ? <Spinner /> : null}\r\n              </React.Fragment>\r\n            )\r\n          } else {\r\n            const path = paths.length > 0 ? paths[0] : null\r\n            const tokenKey = `${path?.contract}:${path?.tokenId}`\r\n            const collection = tokensMap[tokenKey]?.tokenData?.token?.collection\r\n            const collectionName = collection?.name || 'Collection'\r\n            const collectionImage =\r\n              collection?.image || baseApiUrl\r\n                ? `${baseApiUrl}/redirect/collections/${path?.contract}/image/v1`\r\n                : ''\r\n            const sourceImages = paths.map(\r\n              (path) => `${baseApiUrl}/redirect/sources/${path.source}/logo/v2`\r\n            )\r\n\r\n            return (\r\n              <React.Fragment key={i}>\r\n                <Flex css={{ mr: '$2' }}>\r\n                  <StyledImg src={collectionImage} />\r\n                  {sourceImages.map((src, i) => (\r\n                    <StyledImg key={i} src={src} css={{ marginLeft: -14 }} />\r\n                  ))}\r\n                </Flex>\r\n                <Text\r\n                  style=\"body2\"\r\n                  color=\"subtle\"\r\n                  css={{ display: 'flex', alignItems: 'center' }}\r\n                >\r\n                  Approve {collectionName} for{' '}\r\n                  {marketplaces.length > 0 ? marketplaces : 'trading'}\r\n                </Text>\r\n                {isCurrentStep ? <Spinner /> : null}\r\n              </React.Fragment>\r\n            )\r\n          }\r\n        })}\r\n      </Grid>\r\n    </ApproveCollapsible>\r\n  )\r\n}\r\n","import { faChevronDown } from '@fortawesome/free-solid-svg-icons'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport React, { FC, PropsWithChildren, useEffect } from 'react'\r\nimport { Flex, Box, Text } from '../primitives'\r\nimport { CollapsibleContent, CollapsibleRoot } from '../primitives/Collapsible'\r\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible'\r\nimport { CSS } from '@stitches/react'\r\n\r\ntype Props = {\r\n  title?: string\r\n  isInProgress?: boolean\r\n  isComplete: boolean\r\n  open: boolean\r\n  onOpenChange: (open: boolean) => void\r\n  css?: CSS\r\n} & PropsWithChildren\r\n\r\nexport const ApproveCollapsible: FC<Props> = ({\r\n  title,\r\n  isInProgress,\r\n  isComplete,\r\n  children,\r\n  open,\r\n  css,\r\n  onOpenChange,\r\n}) => {\r\n  useEffect(() => {\r\n    if (isComplete) {\r\n      onOpenChange(false)\r\n    }\r\n  }, [isComplete])\r\n\r\n  let backgroundColor = 'transparent'\r\n  let borderColor = '$neutralLine'\r\n\r\n  if (isComplete) {\r\n    backgroundColor = '$green6'\r\n    borderColor = '$green9'\r\n  } else if (isInProgress) {\r\n    backgroundColor = '$accentSolid'\r\n    borderColor = '$accentLine'\r\n  }\r\n\r\n  return (\r\n    <CollapsibleRoot\r\n      open={open}\r\n      onOpenChange={onOpenChange}\r\n      css={{ backgroundColor: '$gray3', ...css }}\r\n    >\r\n      <CollapsiblePrimitive.Trigger asChild>\r\n        <Flex justify=\"between\" css={{ p: '$4' }}>\r\n          <Flex align=\"center\" css={{ gap: '$3' }}>\r\n            <Box\r\n              css={{\r\n                width: 18,\r\n                height: 18,\r\n                backgroundColor: backgroundColor,\r\n                borderColor: borderColor,\r\n                borderStyle: 'solid',\r\n                borderWidth: 4,\r\n                borderRadius: 999,\r\n              }}\r\n            />\r\n            <Text\r\n              style=\"subtitle3\"\r\n              css={{ color: isComplete ? '$neutralText' : '$textColor' }}\r\n            >\r\n              {title}\r\n            </Text>\r\n          </Flex>\r\n          <Box\r\n            css={{\r\n              color: '$neutralSolid',\r\n              transform: open ? 'rotate(180deg)' : 'rotate(0)',\r\n              transition: '.3s',\r\n            }}\r\n          >\r\n            <FontAwesomeIcon icon={faChevronDown} />\r\n          </Box>\r\n        </Flex>\r\n      </CollapsiblePrimitive.Trigger>\r\n      <CollapsibleContent>{children}</CollapsibleContent>\r\n    </CollapsibleRoot>\r\n  )\r\n}\r\n","import { styled } from '../../stitches.config'\r\n\r\nexport default styled('div', {\r\n  display: 'grid',\r\n\r\n  variants: {\r\n    align: {\r\n      start: {\r\n        alignItems: 'start',\r\n      },\r\n      center: {\r\n        alignItems: 'center',\r\n      },\r\n      end: {\r\n        alignItems: 'end',\r\n      },\r\n      stretch: {\r\n        alignItems: 'stretch',\r\n      },\r\n      baseline: {\r\n        alignItems: 'baseline',\r\n      },\r\n    },\r\n    justify: {\r\n      start: {\r\n        justifyContent: 'start',\r\n      },\r\n      center: {\r\n        justifyContent: 'center',\r\n      },\r\n      end: {\r\n        justifyContent: 'end',\r\n      },\r\n      between: {\r\n        justifyContent: 'space-between',\r\n      },\r\n    },\r\n    flow: {\r\n      row: {\r\n        gridAutoFlow: 'row',\r\n      },\r\n      column: {\r\n        gridAutoFlow: 'column',\r\n      },\r\n      dense: {\r\n        gridAutoFlow: 'dense',\r\n      },\r\n      rowDense: {\r\n        gridAutoFlow: 'row dense',\r\n      },\r\n      columnDense: {\r\n        gridAutoFlow: 'column dense',\r\n      },\r\n    },\r\n  },\r\n})\r\n","import React, { FC, useMemo } from 'react'\r\nimport { styled } from '../../../stitches.config'\r\nimport {\r\n  Flex,\r\n  FormatCryptoCurrency,\r\n  FormatCurrency,\r\n  Text,\r\n} from '../../primitives'\r\nimport { ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\nimport {\r\n  AcceptBidPrice,\r\n  EnhancedAcceptBidTokenData,\r\n} from './AcceptBidModalRenderer'\r\nimport { useCoinConversion } from '../../hooks'\r\n\r\ntype Props = {\r\n  tokensData: EnhancedAcceptBidTokenData[]\r\n  prices: AcceptBidPrice[]\r\n  usdPrices: Record<string, ReturnType<typeof useCoinConversion>[0]>\r\n  chain?: ReservoirChain | null\r\n}\r\n\r\nconst Img = styled('img', {\r\n  height: 56,\r\n  width: 56,\r\n  borderRadius: 4,\r\n  overflow: 'hidden',\r\n  flexShrink: 0,\r\n  objectFit: 'cover',\r\n})\r\n\r\nconst AcceptBidSummaryLineItem: FC<Props> = ({\r\n  tokensData,\r\n  prices,\r\n  usdPrices,\r\n  chain,\r\n}) => {\r\n  const imgs = useMemo(() => {\r\n    if (!tokensData || tokensData.length <= 0) {\r\n      return []\r\n    }\r\n    const imgs: string[] = []\r\n    const baseApiUrl = chain?.baseApiUrl\r\n    for (var i = 0; i < tokensData.length; i++) {\r\n      const token = tokensData[i]\r\n      const contract = (token?.collectionId || '').split(':')[0]\r\n      const tokenId = `${contract}:${token?.tokenId}`\r\n      if (token?.tokenData?.token?.imageSmall || baseApiUrl) {\r\n        imgs.push(\r\n          `${baseApiUrl}/redirect/tokens/${tokenId}/image/v1?imageSize=small`\r\n        )\r\n      }\r\n      if (imgs.length > 2) {\r\n        break\r\n      }\r\n    }\r\n    return imgs\r\n  }, [tokensData, chain])\r\n\r\n  const itemCount = useMemo(\r\n    () =>\r\n      tokensData.reduce((total, tokenData) => {\r\n        tokenData.bidsPath.forEach((path) => {\r\n          total += path.quantity || 0\r\n        })\r\n        return total\r\n      }, 0),\r\n    [tokensData]\r\n  )\r\n  const usdPrice = useMemo(() => {\r\n    let missingConversion = false\r\n    const totalUsd = prices.reduce((total, { amount, currency }) => {\r\n      const conversion = usdPrices['AURA'] ? usdPrices['AURA'] : usdPrices[currency.symbol]\r\n      if (conversion) {\r\n        total += conversion.price * amount\r\n      } else {\r\n        missingConversion = true\r\n      }\r\n      return total\r\n    }, 0)\r\n    return missingConversion ? 0 : totalUsd\r\n  }, [prices, usdPrices])\r\n\r\n  return (\r\n    <Flex\r\n      direction=\"column\"\r\n      css={{ p: '$4', borderBottom: '1px solid $borderColor', gap: '$2' }}\r\n    >\r\n      <Flex justify=\"between\">\r\n        <Text color=\"subtle\" style=\"subtitle3\">\r\n          Item\r\n        </Text>\r\n        <Text color=\"subtle\" style=\"subtitle3\">\r\n          You Get\r\n        </Text>\r\n      </Flex>\r\n      <Flex align=\"center\">\r\n        <Flex css={{ mr: '$4', position: 'relative' }}>\r\n          <Img\r\n            src={imgs[0]}\r\n            alt={'Token Image'}\r\n            css={{\r\n              visibility: !imgs[0] ? 'hidden' : 'visible',\r\n              mr: itemCount > 1 && imgs[1] ? 8 : 0,\r\n            }}\r\n          />\r\n          {itemCount > 1 && imgs[1] ? (\r\n            <Img\r\n              src={imgs[1]}\r\n              alt={'Token Image'}\r\n              css={{\r\n                position: 'absolute',\r\n                right: -5,\r\n                zIndex: -1,\r\n                opacity: 0.5,\r\n              }}\r\n            />\r\n          ) : null}\r\n        </Flex>\r\n        <Text style=\"h6\">\r\n          {itemCount} {itemCount > 1 ? 'Items' : 'Item'}\r\n        </Text>\r\n\r\n        <Flex\r\n          align=\"end\"\r\n          justify=\"end\"\r\n          direction=\"column\"\r\n          css={{ ml: 'auto', gap: '$2' }}\r\n        >\r\n          <Flex align=\"center\">\r\n            {prices.map(({ netAmount, currency }, i) => {\r\n              return (\r\n                <span key={i}>\r\n                  {i > 0 ? (\r\n                    <Text color=\"subtle\" style=\"subtitle3\" css={{ mx: '$1' }}>\r\n                      +\r\n                    </Text>\r\n                  ) : null}\r\n                  <FormatCryptoCurrency\r\n                    chainId={chain?.id}\r\n                    amount={netAmount}\r\n                    address={currency.contract}\r\n                    decimals={currency.decimals}\r\n                    textStyle=\"h6\"\r\n                    logoWidth={19}\r\n                  />\r\n                </span>\r\n              )\r\n            })}\r\n          </Flex>\r\n          <FormatCurrency amount={usdPrice} style=\"tiny\" color=\"subtle\" />\r\n        </Flex>\r\n      </Flex>\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default AcceptBidSummaryLineItem\r\n","import {\r\n  useChainCurrency,\r\n  useFallbackState,\r\n  useReservoirClient,\r\n  useTimeSince,\r\n} from '../../hooks'\r\nimport React, {\r\n  ReactElement,\r\n  Dispatch,\r\n  SetStateAction,\r\n  useEffect,\r\n  ComponentPropsWithoutRef,\r\n} from 'react'\r\nimport {\r\n  Flex,\r\n  Text,\r\n  Box,\r\n  Button,\r\n  Loader,\r\n  Anchor,\r\n  ErrorWell,\r\n} from '../../primitives'\r\nimport { CancelBidModalRenderer, CancelStep } from './CancelBidModalRenderer'\r\nimport { Modal } from '../Modal'\r\nimport TokenPrimitive from '../../modal/TokenPrimitive'\r\nimport Progress from '../Progress'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faGasPump } from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport { truncateAddress } from '../../lib/truncate'\r\nimport { ReservoirWallet } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { WalletClient } from 'viem'\r\nimport getChainBlockExplorerUrl from '../../lib/getChainBlockExplorerUrl'\r\nimport { Dialog } from '../../primitives/Dialog'\r\nimport wrappedContracts from '../../constants/wrappedContracts'\r\nimport wrappedContractNames from '../../constants/wrappedContractNames'\r\n\r\nconst ModalCopy = {\r\n  title: 'Cancel Offer',\r\n  ctaCancel: 'Continue to Cancel',\r\n  ctaAwaitingApproval: 'Waiting for approval...',\r\n  ctaAwaitingValidation: 'Waiting for transaction to be validated',\r\n  ctaClose: 'Close',\r\n}\r\n\r\ntype Props = Pick<Parameters<typeof Modal>['0'], 'trigger'> & {\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  bidId?: string\r\n  chainId?: number\r\n  normalizeRoyalties?: boolean\r\n  copyOverrides?: Partial<typeof ModalCopy>\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  onClose?: (data: any, currentStep: CancelStep) => void\r\n  onCancelComplete?: (data: any) => void\r\n  onCancelError?: (error: Error, data: any) => void\r\n  onPointerDownOutside?: ComponentPropsWithoutRef<\r\n    typeof Dialog\r\n  >['onPointerDownOutside']\r\n}\r\n\r\nexport function CancelBidModal({\r\n  openState,\r\n  bidId,\r\n  chainId,\r\n  trigger,\r\n  normalizeRoyalties,\r\n  copyOverrides,\r\n  walletClient,\r\n  onClose,\r\n  onCancelComplete,\r\n  onCancelError,\r\n  onPointerDownOutside,\r\n}: Props): ReactElement {\r\n  const copy: typeof ModalCopy = { ...ModalCopy, ...copyOverrides }\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const modalChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  return (\r\n    <CancelBidModalRenderer\r\n      chainId={modalChain?.id}\r\n      bidId={bidId}\r\n      open={open}\r\n      normalizeRoyalties={normalizeRoyalties}\r\n      walletClient={walletClient}\r\n    >\r\n      {({\r\n        loading,\r\n        bid,\r\n        tokenId,\r\n        cancelStep,\r\n        transactionError,\r\n        stepData,\r\n        totalUsd,\r\n        blockExplorerName,\r\n        cancelOrder,\r\n      }) => {\r\n        const expires = useTimeSince(bid?.expiration)\r\n        const collectionId = bid?.criteria?.data?.collection?.id\r\n        const bidImg = tokenId\r\n          ? `${modalChain?.baseApiUrl}/redirect/tokens/${collectionId}:${tokenId}/image/v1?imageSize=small`\r\n          : `${modalChain?.baseApiUrl}/redirect/collections/${collectionId}/image/v1`\r\n        const isAttributeOffer = (bid?.criteria?.kind as any) === 'attribute'\r\n\r\n        useEffect(() => {\r\n          if (cancelStep === CancelStep.Complete && onCancelComplete) {\r\n            const data = {\r\n              bid,\r\n              stepData: stepData,\r\n            }\r\n            onCancelComplete(data)\r\n          }\r\n        }, [cancelStep])\r\n\r\n        useEffect(() => {\r\n          if (transactionError && onCancelError) {\r\n            const data = {\r\n              bid,\r\n              stepData: stepData,\r\n            }\r\n            onCancelError(transactionError, data)\r\n          }\r\n        }, [transactionError])\r\n\r\n        const isBidAvailable =\r\n          bid &&\r\n          (bid.status === 'active' || bid.status === 'inactive') &&\r\n          !loading\r\n\r\n        const isOracleOrder = bid?.isNativeOffChainCancellable\r\n\r\n        const rendererChain = chainId\r\n          ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n          : currentChain\r\n\r\n        const chainCurrency = useChainCurrency(rendererChain?.id)\r\n\r\n        const nativeWrappedContractAddress =\r\n          chainCurrency.chainId in wrappedContracts\r\n            ? wrappedContracts[chainCurrency.chainId]\r\n            : wrappedContracts[1]\r\n        const nativeWrappedContractName =\r\n          chainCurrency.chainId in wrappedContractNames\r\n            ? wrappedContractNames[chainCurrency.chainId]\r\n            : wrappedContractNames[1]\r\n\r\n        const defaultCurrency = {\r\n          contract: nativeWrappedContractAddress,\r\n          symbol: nativeWrappedContractName,\r\n        }\r\n\r\n        return (\r\n          <Modal\r\n            trigger={trigger}\r\n            title={copy.title}\r\n            open={open}\r\n            onOpenChange={(open) => {\r\n              if (!open && onClose) {\r\n                const data = {\r\n                  bid,\r\n                  stepData: stepData,\r\n                }\r\n                onClose(data, cancelStep)\r\n              }\r\n              setOpen(open)\r\n            }}\r\n            loading={loading}\r\n            onPointerDownOutside={(e) => {\r\n              if (onPointerDownOutside) {\r\n                onPointerDownOutside(e)\r\n              }\r\n            }}\r\n          >\r\n            {!isBidAvailable && !loading && (\r\n              <Flex\r\n                direction=\"column\"\r\n                justify=\"center\"\r\n                css={{ px: '$4', py: '$6' }}\r\n              >\r\n                <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                  Selected bid is no longer available\r\n                </Text>\r\n              </Flex>\r\n            )}\r\n            {isBidAvailable && cancelStep === CancelStep.Cancel && (\r\n              <Flex direction=\"column\">\r\n                {transactionError && <ErrorWell error={transactionError} />}\r\n\r\n                <Box css={{ p: '$4', borderBottom: '1px solid $borderColor' }}>\r\n                  <TokenPrimitive\r\n                    chain={modalChain}\r\n                    img={bidImg}\r\n                    name={bid?.criteria?.data?.token?.name}\r\n                    price={bid?.price?.amount?.decimal}\r\n                    usdPrice={totalUsd}\r\n                    collection={bid?.criteria?.data?.collection?.name || ''}\r\n                    currencyContract={bid?.price?.currency?.contract}\r\n                    currencyDecimals={bid?.price?.currency?.decimals}\r\n                    currencySymbol={bid?.price?.currency?.symbol}\r\n                    expires={expires}\r\n                    source={(bid?.source?.icon as string) || ''}\r\n                    priceSubtitle=\"Offer\"\r\n                  />\r\n                </Box>\r\n                <Text\r\n                  style=\"body2\"\r\n                  color=\"subtle\"\r\n                  css={{ mt: '$3', mr: '$3', ml: '$3', textAlign: 'center' }}\r\n                >\r\n                  {!isOracleOrder\r\n                    ? 'This action will cancel your offer. You will be prompted to confirm this cancellation from your wallet. A gas fee is required.'\r\n                    : 'This will cancel your offer for free. You will be prompted to confirm this cancellation from your wallet.'}\r\n                </Text>\r\n                <Button onClick={cancelOrder} css={{ m: '$4' }}>\r\n                  {!isOracleOrder && (\r\n                    <FontAwesomeIcon icon={faGasPump} width=\"16\" height=\"16\" />\r\n                  )}\r\n                  {copy.ctaCancel}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n            {cancelStep === CancelStep.Approving && (\r\n              <Flex direction=\"column\">\r\n                <Box css={{ p: '$4', borderBottom: '1px solid $borderColor' }}>\r\n                  <TokenPrimitive\r\n                    chain={modalChain}\r\n                    img={bidImg}\r\n                    name={bid?.criteria?.data?.token?.name}\r\n                    price={bid?.price?.amount?.decimal}\r\n                    usdPrice={totalUsd}\r\n                    collection={bid?.criteria?.data?.collection?.name || ''}\r\n                    currencyContract={bid?.price?.currency?.contract}\r\n                    currencyDecimals={bid?.price?.currency?.decimals}\r\n                    currencySymbol={bid?.price?.currency?.symbol}\r\n                    expires={expires}\r\n                    source={(bid?.source?.icon as string) || ''}\r\n                    priceSubtitle=\"Offer\"\r\n                  />\r\n                </Box>\r\n                {!stepData && <Loader css={{ height: 206 }} />}\r\n                {stepData && (\r\n                  <>\r\n                    <Progress\r\n                      title={\r\n                        stepData?.currentStepItem.txHashes\r\n                          ? 'Finalizing on blockchain'\r\n                          : 'Confirm cancelation in your wallet'\r\n                      }\r\n                      txHashes={stepData?.currentStepItem.txHashes}\r\n                    />\r\n                    {isAttributeOffer &&\r\n                      !stepData?.currentStepItem.txHashes && (\r\n                        <Flex justify=\"center\">\r\n                          <Text\r\n                            style=\"body2\"\r\n                            color=\"subtle\"\r\n                            css={{\r\n                              maxWidth: 400,\r\n                              textAlign: 'center',\r\n                              mx: '$3',\r\n                            }}\r\n                          >\r\n                            This will cancel your offer on all items that were\r\n                            included in this attribute offer.\r\n                          </Text>\r\n                        </Flex>\r\n                      )}\r\n                  </>\r\n                )}\r\n                <Button disabled={true} css={{ m: '$4' }}>\r\n                  <Loader />\r\n                  {stepData?.currentStepItem.txHashes\r\n                    ? copy.ctaAwaitingValidation\r\n                    : copy.ctaAwaitingApproval}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n            {cancelStep === CancelStep.Complete && (\r\n              <Flex direction=\"column\">\r\n                <Flex\r\n                  css={{\r\n                    p: '$4',\r\n                    py: '$5',\r\n                    flexDirection: 'column',\r\n                    alignItems: 'center',\r\n                    textAlign: 'center',\r\n                  }}\r\n                >\r\n                  <Text style=\"h5\" css={{ mb: '$2' }}>\r\n                    Offer Canceled!\r\n                  </Text>\r\n                  <Text style=\"body2\" color=\"subtle\" css={{ mb: 24 }}>\r\n                    <>\r\n                      Your{' '}\r\n                      {/* <Text style=\"body2\" color=\"accent\">\r\n                        {bid?.source?.name as string}\r\n                      </Text>{' '} */}\r\n                      offer for{' '}\r\n                      <Text style=\"body2\" color=\"accent\">\r\n                        {bid?.criteria?.data?.token?.name ||\r\n                          bid?.criteria?.data?.collection?.name}{' '}\r\n                      </Text>\r\n                      at {bid?.price?.amount?.decimal} {defaultCurrency?.symbol}{' '}\r\n                      has been canceled.\r\n                    </>\r\n                  </Text>\r\n\r\n                  <Flex direction=\"column\" align=\"center\" css={{ gap: '$2' }}>\r\n                    {stepData?.currentStepItem?.txHashes?.map((hash, index) => {\r\n                      const truncatedTxHash = truncateAddress(hash.txHash)\r\n                      const blockExplorerBaseUrl = getChainBlockExplorerUrl(\r\n                        hash.chainId\r\n                      )\r\n                      return (\r\n                        <Anchor\r\n                          key={index}\r\n                          href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                          color=\"primary\"\r\n                          weight=\"medium\"\r\n                          target=\"_blank\"\r\n                          css={{ fontSize: 12 }}\r\n                        >\r\n                          View transaction: {truncatedTxHash}\r\n                        </Anchor>\r\n                      )\r\n                    })}\r\n                  </Flex>\r\n                </Flex>\r\n                <Button\r\n                  onClick={() => {\r\n                    setOpen(false)\r\n                  }}\r\n                  css={{ m: '$4' }}\r\n                >\r\n                  {copy.ctaClose}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n          </Modal>\r\n        )\r\n      }}\r\n    </CancelBidModalRenderer>\r\n  )\r\n}\r\n\r\nCancelBidModal.Custom = CancelBidModalRenderer\r\n","import React, { FC, useEffect, useState, useCallback, ReactNode } from 'react'\r\nimport { useCoinConversion, useReservoirClient, useBids } from '../../hooks'\r\nimport { useConfig, useWalletClient } from 'wagmi'\r\nimport { Execute, ReservoirWallet, axios } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { getAccount, switchChain } from 'wagmi/actions'\r\nimport { customChains } from '@sh-reservoir0x/reservoir-sdk'\r\nimport * as allChains from 'viem/chains'\r\nimport { WalletClient, createPublicClient, http } from 'viem'\r\nimport { ChainConfig, ContractConfig } from '../../constants/common'\r\n\r\nexport enum CancelStep {\r\n  Cancel,\r\n  Approving,\r\n  Complete,\r\n}\r\n\r\nexport type CancelBidStepData = {\r\n  totalSteps: number\r\n  stepProgress: number\r\n  currentStep: Execute['steps'][0]\r\n  currentStepItem: NonNullable<Execute['steps'][0]['items']>[0]\r\n}\r\n\r\ntype ChildrenProps = {\r\n  loading: boolean\r\n  bid?: NonNullable<ReturnType<typeof useBids>['data']>[0]\r\n  tokenId?: string\r\n  cancelStep: CancelStep\r\n  transactionError?: Error | null\r\n  totalUsd: number\r\n  usdPrice: number\r\n  blockExplorerBaseUrl: string\r\n  blockExplorerName: string\r\n  steps: Execute['steps'] | null\r\n  stepData: CancelBidStepData | null\r\n  setCancelStep: React.Dispatch<React.SetStateAction<CancelStep>>\r\n  cancelOrder: () => void\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  bidId?: string\r\n  chainId?: number\r\n  normalizeRoyalties?: boolean\r\n  children: (props: ChildrenProps) => ReactNode\r\n  walletClient?: ReservoirWallet | WalletClient\r\n}\r\n\r\nexport const CancelBidModalRenderer: FC<Props> = ({\r\n  open,\r\n  chainId,\r\n  bidId,\r\n  normalizeRoyalties,\r\n  children,\r\n  walletClient,\r\n}) => {\r\n  const [cancelStep, setCancelStep] = useState<CancelStep>(CancelStep.Cancel)\r\n  const [transactionError, setTransactionError] = useState<Error | null>()\r\n  const [stepData, setStepData] = useState<CancelBidStepData | null>(null)\r\n  const [steps, setSteps] = useState<Execute['steps'] | null>(null)\r\n  const [publicClient, setPublicClient] = useState<any>(undefined)\r\n\r\n  const client = useReservoirClient()\r\n  const currentChain = client?.currentChain()\r\n  const config = useConfig()\r\n\r\n  const rendererChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const wagmiChain: allChains.Chain | undefined = Object.values({\r\n    ...allChains,\r\n    ...customChains,\r\n  }).find(({ id }) => rendererChain?.id === id)\r\n\r\n  const { data: wagmiWallet } = useWalletClient({ chainId: rendererChain?.id })\r\n\r\n  const wallet = walletClient || wagmiWallet\r\n\r\n  const blockExplorerBaseUrl =\r\n    wagmiChain?.blockExplorers?.default.url || 'https://etherscan.io'\r\n\r\n  const blockExplorerName =\r\n    wagmiChain?.blockExplorers?.default?.name || 'Etherscan'\r\n\r\n  const { data: bids, isFetchingPage } = useBids(\r\n    {\r\n      ids: bidId,\r\n      normalizeRoyalties,\r\n      includeCriteriaMetadata: true,\r\n      includeRawData: true,\r\n    },\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    open && bidId ? true : false,\r\n    rendererChain?.id\r\n  )\r\n\r\n  const bid = bids && bids[0] ? bids[0] : undefined\r\n  const currency = bid?.price?.currency\r\n\r\n  const coinConversion = useCoinConversion(\r\n    open && bid ? 'USD' : undefined,\r\n    currency?.symbol\r\n  )\r\n  const usdPrice = coinConversion.length > 0 ? coinConversion[0].price : 0\r\n  const totalUsd = usdPrice * (bid?.price?.amount?.decimal || 0)\r\n\r\n  const auraEVMTestnet = ChainConfig[chainId ? chainId : 1235]\r\n\r\n  useEffect(() => {\r\n    setPublicClient(\r\n      createPublicClient({\r\n        chain: ChainConfig[chainId ? chainId : 1235],\r\n        transport: http(),\r\n      })\r\n    )\r\n  }, [])\r\n\r\n  const cancelOrder = useCallback(async () => {\r\n    if (!wallet) {\r\n      const error = new Error('Missing a wallet/signer')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    let activeWalletChain = getAccount(config).chain\r\n    if (rendererChain?.id !== activeWalletChain?.id) {\r\n      activeWalletChain = await switchChain(config, {\r\n        chainId: rendererChain?.id as number,\r\n      })\r\n    }\r\n\r\n    if (rendererChain?.id !== activeWalletChain?.id) {\r\n      const error = new Error(`Mismatching chainIds`)\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!bidId) {\r\n      const error = new Error('Missing bid id to cancel')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!client) {\r\n      const error = new Error('ReservoirClient was not initialized')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    setCancelStep(CancelStep.Approving)\r\n\r\n    if (rendererChain?.name === auraEVMTestnet?.name) {\r\n      setStepData({\r\n        totalSteps: 1,\r\n        stepProgress: 1,\r\n        currentStep: {\r\n          kind: 'transaction',\r\n          action: '',\r\n          description: '',\r\n          id: '1',\r\n        },\r\n        currentStepItem: {\r\n          status: 'incomplete',\r\n        },\r\n      })\r\n      await wagmiWallet\r\n        ?.writeContract({\r\n          abi: [\r\n            {\r\n              type: 'function',\r\n              name: 'cancelOffer',\r\n              inputs: [\r\n                {\r\n                  name: '_tokenContract',\r\n                  type: 'address',\r\n                  internalType: 'address',\r\n                },\r\n                {\r\n                  name: '_tokenId',\r\n                  type: 'uint256',\r\n                  internalType: 'uint256',\r\n                },\r\n                {\r\n                  name: '_offerId',\r\n                  type: 'uint256',\r\n                  internalType: 'uint256',\r\n                },\r\n              ],\r\n              outputs: [],\r\n              stateMutability: 'nonpayable',\r\n            },\r\n          ],\r\n          address: ContractConfig[chainId ? chainId : 1235]\r\n            ?.OFFERS_OMNIBUS as `0x${string}`,\r\n          functionName: 'cancelOffer',\r\n          args: [\r\n            bid?.contract as `0x${string}`,\r\n            BigInt(Number(bid?.rawData?.tokenId || 0)),\r\n            BigInt(Number(bid?.rawData?.offerId || 0)),\r\n          ],\r\n          gas: 500000n,\r\n        })\r\n        .then((hash) => {\r\n          const steps: Execute['steps'] = [\r\n            {\r\n              error: '',\r\n              errorData: [],\r\n              action: '',\r\n              description: '',\r\n              kind: 'transaction',\r\n              id: '',\r\n              items: [\r\n                {\r\n                  status: 'complete',\r\n                  transfersData: [\r\n                    {\r\n                      amount: '1',\r\n                    },\r\n                  ],\r\n                  txHashes: [\r\n                    {\r\n                      txHash: hash,\r\n                      chainId: chainId ? chainId : 1235,\r\n                    },\r\n                  ],\r\n                },\r\n              ],\r\n            },\r\n          ]\r\n\r\n          if (\r\n            steps &&\r\n            steps?.length > 0 &&\r\n            steps[0]?.items &&\r\n            steps[0]?.items?.length > 0\r\n          ) {\r\n            setStepData({\r\n              totalSteps: 1,\r\n              stepProgress: 1,\r\n              currentStep: steps[0],\r\n              currentStepItem: steps[0]?.items[0],\r\n            })\r\n          }\r\n          publicClient\r\n            .waitForTransactionReceipt({ hash })\r\n            .then((res: any) => {\r\n              if (res?.status === 'success') {\r\n                setTimeout(() => {\r\n                  setCancelStep(CancelStep.Complete)\r\n                }, 5000)\r\n              }\r\n            })\r\n            .catch((error: any) => {\r\n              setCancelStep(CancelStep.Cancel)\r\n              setTransactionError(error)\r\n            })\r\n        })\r\n        .catch((err) => {\r\n          setCancelStep(CancelStep.Cancel)\r\n          setTransactionError(err)\r\n        })\r\n    } else {\r\n      client.actions\r\n        .cancelOrder({\r\n          chainId: rendererChain?.id,\r\n          ids: [bidId],\r\n          wallet,\r\n          onProgress: (steps: Execute['steps']) => {\r\n            if (!steps) {\r\n              return\r\n            }\r\n            setSteps(steps)\r\n\r\n            const executableSteps = steps.filter(\r\n              (step) => step.items && step.items.length > 0\r\n            )\r\n\r\n            let stepCount = executableSteps.length\r\n\r\n            let currentStepItem:\r\n              | NonNullable<Execute['steps'][0]['items']>[0]\r\n              | undefined\r\n\r\n            const currentStepIndex = executableSteps.findIndex((step) => {\r\n              currentStepItem = step.items?.find(\r\n                (item) => item.status === 'incomplete'\r\n              )\r\n              return currentStepItem\r\n            })\r\n\r\n            const currentStep =\r\n              currentStepIndex > -1\r\n                ? executableSteps[currentStepIndex]\r\n                : executableSteps[stepCount - 1]\r\n\r\n            if (currentStepItem) {\r\n              setStepData({\r\n                totalSteps: stepCount,\r\n                stepProgress: currentStepIndex,\r\n                currentStep,\r\n                currentStepItem,\r\n              })\r\n            } else if (\r\n              steps.every(\r\n                (step) =>\r\n                  !step.items ||\r\n                  step.items.length == 0 ||\r\n                  step.items?.every((item) => item.status === 'complete')\r\n              )\r\n            ) {\r\n              setCancelStep(CancelStep.Complete)\r\n            }\r\n          },\r\n        })\r\n        .catch((error: Error) => {\r\n          setTransactionError(error)\r\n          setCancelStep(CancelStep.Cancel)\r\n          setStepData(null)\r\n          setSteps(null)\r\n        })\r\n    }\r\n  }, [bidId, bid, client, rendererChain, wallet, config])\r\n\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setCancelStep(CancelStep.Cancel)\r\n      setTransactionError(null)\r\n      setStepData(null)\r\n      setSteps(null)\r\n    }\r\n  }, [open])\r\n\r\n  open\r\n    ? (axios.defaults.headers.common['x-rkui-context'] =\r\n        'cancelBidModalRenderer')\r\n    : delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  let tokenId\r\n\r\n  if (bid?.criteria?.kind === 'token') {\r\n    tokenId = bid?.tokenSetId?.split(':')[2]\r\n  }\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        loading: isFetchingPage !== undefined ? isFetchingPage : true,\r\n        bid,\r\n        tokenId,\r\n        cancelStep,\r\n        transactionError,\r\n        usdPrice,\r\n        totalUsd,\r\n        blockExplorerName,\r\n        blockExplorerBaseUrl,\r\n        steps,\r\n        stepData,\r\n        setCancelStep,\r\n        cancelOrder,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n","import { styled } from '../../stitches.config'\r\nimport React, { FC } from 'react'\r\nimport {\r\n  Box,\r\n  Flex,\r\n  Text,\r\n  Grid,\r\n  FormatCurrency,\r\n  FormatCryptoCurrency,\r\n  ChainIcon,\r\n  Divider,\r\n} from '../primitives'\r\nimport InfoTooltip from '../primitives/InfoTooltip'\r\nimport { ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\n\r\ntype Props = {\r\n  img?: string\r\n  name?: string\r\n  collection: string\r\n  currencyContract?: string\r\n  currencyDecimals?: number\r\n  currencySymbol?: string\r\n  source?: string\r\n  price?: number\r\n  usdPrice?: number | string\r\n  expires?: string\r\n  warning?: string\r\n  isOffer?: boolean\r\n  isUnavailable?: boolean\r\n  priceSubtitle?: string\r\n  royaltiesBps?: number\r\n  chain?: ReservoirChain | null\r\n  quantity?: number\r\n}\r\n\r\nconst Img = styled('img', {\r\n  height: 56,\r\n  width: 56,\r\n})\r\n\r\nconst TokenPrimitive: FC<Props> = ({\r\n  img,\r\n  name,\r\n  chain,\r\n  collection,\r\n  currencyContract,\r\n  currencyDecimals,\r\n  currencySymbol,\r\n  expires,\r\n  warning,\r\n  source,\r\n  usdPrice,\r\n  price,\r\n  isUnavailable,\r\n  priceSubtitle,\r\n  royaltiesBps,\r\n  quantity,\r\n}) => {\r\n  const royaltyPercent = royaltiesBps ? royaltiesBps / 100 : royaltiesBps\r\n\r\n  return (\r\n    <Box>\r\n      <Flex css={{ justifyContent: 'space-between', alignItems: 'center' }}>\r\n        <Text\r\n          style=\"subtitle3\"\r\n          color=\"subtle\"\r\n          css={{ mb: 10, display: 'block' }}\r\n        >\r\n          {name ? 'Item' : 'Collection'}\r\n        </Text>\r\n        {priceSubtitle && (\r\n          <Text\r\n            style=\"subtitle3\"\r\n            color=\"subtle\"\r\n            css={{ mb: 10, display: 'block' }}\r\n          >\r\n            {priceSubtitle}\r\n          </Text>\r\n        )}\r\n      </Flex>\r\n      <Flex justify=\"between\">\r\n        <Flex css={{ alignItems: 'center', gap: 8 }}>\r\n          <Img\r\n            src={img}\r\n            alt={name}\r\n            css={{\r\n              borderRadius: 4,\r\n              overflow: 'hidden',\r\n              visibility: !img || img.length === 0 ? 'hidden' : 'visible',\r\n              flexShrink: 0,\r\n              objectFit: 'cover',\r\n            }}\r\n          />\r\n          <Grid css={{ rowGap: 2 }}>\r\n            <Flex\r\n              align=\"center\"\r\n              css={{ gap: '$2', mr: '$4', overflow: 'hidden' }}\r\n            >\r\n              <Text\r\n                style=\"h6\"\r\n                ellipsify\r\n                color={isUnavailable ? 'subtle' : 'base'}\r\n              >\r\n                {name ? name : collection}\r\n              </Text>\r\n              {expires && quantity && quantity > 1 && !name ? (\r\n                <Flex align=\"center\">\r\n                  <ChainIcon\r\n                    chainId={chain?.id}\r\n                    height={12}\r\n                    css={{ mr: 5, alignItems: 'center', width: '12px' }}\r\n                  />\r\n                  <Text style=\"tiny\" color=\"subtle\">\r\n                    {chain?.name}\r\n                  </Text>\r\n                </Flex>\r\n              ) : null}\r\n              {expires && quantity && quantity > 1 ? (\r\n                <Flex\r\n                  css={{\r\n                    p: '$1 ',\r\n                    background: '$neutralBgHover',\r\n                    borderRadius: 4,\r\n                    mr: 'auto',\r\n                  }}\r\n                >\r\n                  <Text\r\n                    style=\"tiny\"\r\n                    color=\"base\"\r\n                    css={{ minWidth: 'max-content' }}\r\n                  >\r\n                    {quantity} items\r\n                  </Text>\r\n                </Flex>\r\n              ) : null}\r\n            </Flex>\r\n            {!name && !quantity && expires ? (\r\n              <Flex align=\"center\">\r\n                <ChainIcon\r\n                  chainId={chain?.id}\r\n                  height={12}\r\n                  css={{ mr: 5, alignItems: 'center', width: '12px' }}\r\n                />\r\n                <Text style=\"body3\" color=\"subtle\">\r\n                  {chain?.name}\r\n                </Text>\r\n              </Flex>\r\n            ) : null}\r\n            {name && (\r\n              <Flex\r\n                css={{\r\n                  maxWidth: '370px',\r\n                  alignItems: 'center',\r\n                }}\r\n              >\r\n                <Text ellipsify style=\"body3\" color=\"subtle\">\r\n                  {collection}\r\n                </Text>\r\n                <Divider direction=\"vertical\" />\r\n                <ChainIcon\r\n                  chainId={chain?.id}\r\n                  css={{ mr: 5, alignItems: 'center', width: '12px' }}\r\n                  height={12}\r\n                />\r\n                <Text style=\"body3\" color=\"subtle\">\r\n                  {chain?.name}\r\n                </Text>\r\n              </Flex>\r\n            )}\r\n            {!!expires && (\r\n              <Text style=\"tiny\" color=\"subtle\" css={{ color: '$neutralText' }}>\r\n                Expires {expires}\r\n              </Text>\r\n            )}\r\n            {!expires && quantity && quantity > 1 ? (\r\n              <Flex\r\n                css={{\r\n                  p: '$1 ',\r\n                  background: '$neutralBgHover',\r\n                  borderRadius: 4,\r\n                  mr: 'auto',\r\n                }}\r\n              >\r\n                <Text style=\"tiny\" color=\"base\">\r\n                  {quantity} {quantity > 1 ? 'items' : 'item'}\r\n                </Text>\r\n              </Flex>\r\n            ) : null}\r\n            {!expires && !quantity && royaltiesBps ? (\r\n              <Text\r\n                style=\"body3\"\r\n                color=\"subtle\"\r\n                css={{ display: 'flex', gap: '$1' }}\r\n              >\r\n                Creator Royalties: {royaltyPercent}%\r\n                <InfoTooltip\r\n                  side=\"right\"\r\n                  width={200}\r\n                  content=\"A fee on every order that goes to the collection creator.\"\r\n                />\r\n              </Text>\r\n            ) : null}\r\n          </Grid>\r\n        </Flex>\r\n        <Grid css={{ justifyItems: 'end', alignContent: 'start', rowGap: 4 }}>\r\n          {/* {source && (\r\n            <Img\r\n              src={source}\r\n              alt=\"Source Icon\"\r\n              css={{ w: 17, h: 17, borderRadius: 99999, overflow: 'hidden' }}\r\n            />\r\n          )} */}\r\n          {price ? (\r\n            <FormatCryptoCurrency\r\n              amount={price}\r\n              chainId={chain?.id}\r\n              textColor={isUnavailable ? 'subtle' : 'base'}\r\n              address={currencyContract}\r\n              decimals={currencyDecimals}\r\n              symbol={currencySymbol}\r\n              logoWidth={14.5}\r\n            />\r\n          ) : (\r\n            <Text style=\"subtitle3\" color={isUnavailable ? 'subtle' : 'base'}>\r\n              --\r\n            </Text>\r\n          )}\r\n          {usdPrice ? (\r\n            <FormatCurrency amount={usdPrice} style=\"tiny\" color=\"subtle\" />\r\n          ) : null}\r\n          {warning && (\r\n            <Text style=\"subtitle3\" color=\"error\">\r\n              {warning}\r\n            </Text>\r\n          )}\r\n        </Grid>\r\n      </Flex>\r\n    </Box>\r\n  )\r\n}\r\n\r\nexport default TokenPrimitive\r\n","import { useFallbackState, useReservoirClient, useTimeSince } from '../../hooks'\r\nimport React, {\r\n  ReactElement,\r\n  Dispatch,\r\n  SetStateAction,\r\n  useEffect,\r\n  ComponentPropsWithoutRef,\r\n} from 'react'\r\nimport {\r\n  Flex,\r\n  Text,\r\n  Box,\r\n  Button,\r\n  Loader,\r\n  Anchor,\r\n  ErrorWell,\r\n  CryptoCurrencyIcon,\r\n} from '../../primitives'\r\nimport {\r\n  CancelListingModalRenderer,\r\n  CancelStep,\r\n} from './CancelListingModalRenderer'\r\nimport { Modal } from '../Modal'\r\nimport TokenPrimitive from '../TokenPrimitive'\r\nimport Progress from '../Progress'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faGasPump } from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport { truncateAddress } from '../../lib/truncate'\r\nimport { WalletClient } from 'viem'\r\nimport { ReservoirWallet } from '@sh-reservoir0x/reservoir-sdk'\r\nimport getChainBlockExplorerUrl from '../../lib/getChainBlockExplorerUrl'\r\nimport { Dialog } from '../../primitives/Dialog'\r\n\r\nconst ModalCopy = {\r\n  title: 'Cancel Listing',\r\n  ctaCancel: 'Continue to Cancel',\r\n  ctaAwaitingApproval: 'Waiting for approval...',\r\n  ctaAwaitingValidation: 'Waiting for transaction to be validated',\r\n  ctaClose: 'Close',\r\n}\r\n\r\ntype Props = Pick<Parameters<typeof Modal>['0'], 'trigger'> & {\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  listingId?: string\r\n  chainId?: number\r\n  normalizeRoyalties?: boolean\r\n  copyOverrides?: Partial<typeof ModalCopy>\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  onClose?: (data: any, currentStep: CancelStep) => void\r\n  onCancelComplete?: (data: any) => void\r\n  onCancelError?: (error: Error, data: any) => void\r\n  onPointerDownOutside?: ComponentPropsWithoutRef<\r\n    typeof Dialog\r\n  >['onPointerDownOutside']\r\n}\r\n\r\nexport function CancelListingModal({\r\n  openState,\r\n  listingId,\r\n  chainId,\r\n  trigger,\r\n  normalizeRoyalties,\r\n  copyOverrides,\r\n  walletClient,\r\n  onClose,\r\n  onCancelComplete,\r\n  onCancelError,\r\n  onPointerDownOutside,\r\n}: Props): ReactElement {\r\n  const copy: typeof ModalCopy = { ...ModalCopy, ...copyOverrides }\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const modalChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  return (\r\n    <CancelListingModalRenderer\r\n      chainId={modalChain?.id}\r\n      listingId={listingId}\r\n      open={open}\r\n      normalizeRoyalties={normalizeRoyalties}\r\n      walletClient={walletClient}\r\n    >\r\n      {({\r\n        loading,\r\n        listing,\r\n        tokenId,\r\n        contract,\r\n        cancelStep,\r\n        transactionError,\r\n        stepData,\r\n        totalUsd,\r\n        blockExplorerName,\r\n        cancelOrder,\r\n      }) => {\r\n        const expires = useTimeSince(listing?.expiration)\r\n        const listingImg = tokenId\r\n          ? `${modalChain?.baseApiUrl}/redirect/tokens/${contract}:${tokenId}/image/v1?imageSize=small`\r\n          : `${modalChain?.baseApiUrl}/redirect/collections/${contract}/image/v1`\r\n\r\n        useEffect(() => {\r\n          if (cancelStep === CancelStep.Complete && onCancelComplete) {\r\n            const data = {\r\n              listing,\r\n              stepData: stepData,\r\n            }\r\n            onCancelComplete(data)\r\n          }\r\n        }, [cancelStep])\r\n\r\n        useEffect(() => {\r\n          if (transactionError && onCancelError) {\r\n            const data = {\r\n              listing,\r\n              stepData: stepData,\r\n            }\r\n            onCancelError(transactionError, data)\r\n          }\r\n        }, [transactionError])\r\n\r\n        const isListingAvailable =\r\n          listing &&\r\n          (listing.status === 'active' || listing.status === 'inactive') &&\r\n          !loading\r\n\r\n        const isOracleOrder = listing?.isNativeOffChainCancellable\r\n\r\n        return (\r\n          <Modal\r\n            trigger={trigger}\r\n            title={copy.title}\r\n            open={open}\r\n            onOpenChange={(open) => {\r\n              if (!open && onClose) {\r\n                const data = {\r\n                  listing,\r\n                  stepData: stepData,\r\n                }\r\n                onClose(data, cancelStep)\r\n              }\r\n              setOpen(open)\r\n            }}\r\n            loading={loading}\r\n            onPointerDownOutside={(e) => {\r\n              if (onPointerDownOutside) {\r\n                onPointerDownOutside(e)\r\n              }\r\n            }}\r\n          >\r\n            {!isListingAvailable && !loading && (\r\n              <Flex\r\n                direction=\"column\"\r\n                justify=\"center\"\r\n                css={{ px: '$4', py: '$6' }}\r\n              >\r\n                <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                  Selected listing is no longer available\r\n                </Text>\r\n              </Flex>\r\n            )}\r\n            {isListingAvailable && cancelStep === CancelStep.Cancel && (\r\n              <Flex direction=\"column\">\r\n                {transactionError && <ErrorWell error={transactionError} />}\r\n                <Box css={{ p: '$4', borderBottom: '1px solid $borderColor' }}>\r\n                  <TokenPrimitive\r\n                    chain={modalChain}\r\n                    img={listingImg}\r\n                    name={listing.criteria?.data?.token?.name}\r\n                    price={listing?.price?.amount?.decimal}\r\n                    usdPrice={totalUsd}\r\n                    collection={listing.criteria?.data?.collection?.name || ''}\r\n                    currencyContract={listing.price?.currency?.contract}\r\n                    currencyDecimals={listing?.price?.currency?.decimals}\r\n                    currencySymbol={listing?.price?.currency?.symbol}\r\n                    expires={expires}\r\n                    source={(listing?.source?.icon as string) || ''}\r\n                  />\r\n                </Box>\r\n                <Text\r\n                  style=\"body2\"\r\n                  color=\"subtle\"\r\n                  css={{ mt: '$3', mr: '$3', ml: '$3', textAlign: 'center' }}\r\n                >\r\n                  {!isOracleOrder\r\n                    ? 'This action will cancel your listing. You will be prompted to confirm this cancellation from your wallet. A gas fee is required.'\r\n                    : 'This will cancel your listing for free. You will be prompted to confirm this cancellation from your wallet.'}\r\n                </Text>\r\n                <Button onClick={cancelOrder} css={{ m: '$4' }}>\r\n                  {!isOracleOrder && (\r\n                    <FontAwesomeIcon icon={faGasPump} width=\"16\" height=\"16\" />\r\n                  )}\r\n                  {copy.ctaCancel}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n            {cancelStep === CancelStep.Approving && (\r\n              <Flex direction=\"column\">\r\n                <Box css={{ p: '$4', borderBottom: '1px solid $borderColor' }}>\r\n                  <TokenPrimitive\r\n                    chain={modalChain}\r\n                    img={listingImg}\r\n                    name={listing?.criteria?.data?.token?.name}\r\n                    price={listing?.price?.amount?.decimal}\r\n                    usdPrice={totalUsd}\r\n                    collection={listing?.criteria?.data?.collection?.name || ''}\r\n                    currencyContract={listing?.price?.currency?.contract}\r\n                    currencyDecimals={listing?.price?.currency?.decimals}\r\n                    currencySymbol={listing?.price?.currency?.symbol}\r\n                    expires={expires}\r\n                    source={(listing?.source?.icon as string) || ''}\r\n                  />\r\n                </Box>\r\n                {!stepData && <Loader css={{ height: 206 }} />}\r\n                {stepData && (\r\n                  <>\r\n                    <Progress\r\n                      title={\r\n                        stepData?.currentStepItem.txHashes\r\n                          ? 'Finalizing on blockchain'\r\n                          : 'Confirm cancelation in your wallet'\r\n                      }\r\n                      txHashes={stepData?.currentStepItem?.txHashes}\r\n                    />\r\n                  </>\r\n                )}\r\n                <Button disabled={true} css={{ m: '$4' }}>\r\n                  <Loader />\r\n                  {stepData?.currentStepItem.txHashes\r\n                    ? copy.ctaAwaitingValidation\r\n                    : copy.ctaAwaitingApproval}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n            {cancelStep === CancelStep.Complete && (\r\n              <Flex direction=\"column\">\r\n                <Flex\r\n                  css={{\r\n                    p: '$4',\r\n                    py: '$5',\r\n                    flexDirection: 'column',\r\n                    alignItems: 'center',\r\n                    textAlign: 'center',\r\n                  }}\r\n                >\r\n                  <Text style=\"h5\" css={{ mb: '$2' }}>\r\n                    Listing Canceled!\r\n                  </Text>\r\n                  <Text style=\"body2\" color=\"subtle\" css={{ mb: 24 }}>\r\n                    <>\r\n                      Your{' '}\r\n                      {/* <Text style=\"body2\" color=\"accent\">\r\n                        {listing?.source?.name as string}\r\n                      </Text>{' '} */}\r\n                      listing for{' '}\r\n                      <Text style=\"body2\" color=\"accent\">\r\n                        {listing?.criteria?.data?.token?.name ||\r\n                          listing?.criteria?.data?.collection?.name}{' '}\r\n                      </Text>\r\n                      <Flex align=\"center\" css={{ gap: '4px' }}>\r\n                        at\r\n                        <CryptoCurrencyIcon\r\n                          chainId={chainId}\r\n                          css={{ height: 18 }}\r\n                          address={''}\r\n                        />\r\n                        {listing?.price?.amount?.decimal}\r\n                        {listing?.price?.currency?.symbol} has been canceled.\r\n                      </Flex>\r\n                    </>\r\n                  </Text>\r\n                  <Flex direction=\"column\" align=\"center\" css={{ gap: '$2' }}>\r\n                    {stepData?.currentStepItem?.txHashes?.map((hash, index) => {\r\n                      const truncatedTxHash = truncateAddress(hash.txHash)\r\n                      const blockExplorerBaseUrl = getChainBlockExplorerUrl(\r\n                        hash.chainId\r\n                      )\r\n                      return (\r\n                        <Anchor\r\n                          key={index}\r\n                          href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                          color=\"primary\"\r\n                          weight=\"medium\"\r\n                          target=\"_blank\"\r\n                          css={{ fontSize: 12 }}\r\n                        >\r\n                          View transaction: {truncatedTxHash}\r\n                        </Anchor>\r\n                      )\r\n                    })}\r\n                  </Flex>\r\n                </Flex>\r\n                <Button\r\n                  onClick={() => {\r\n                    setOpen(false)\r\n                  }}\r\n                  css={{ m: '$4' }}\r\n                >\r\n                  {copy.ctaClose}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n          </Modal>\r\n        )\r\n      }}\r\n    </CancelListingModalRenderer>\r\n  )\r\n}\r\n\r\nCancelListingModal.Custom = CancelListingModalRenderer\r\n","import React, { FC, useEffect, useState, useCallback, ReactNode } from 'react'\r\nimport { useCoinConversion, useReservoirClient, useListings } from '../../hooks'\r\nimport { useConfig, useWalletClient } from 'wagmi'\r\nimport { Execute, ReservoirWallet, axios } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { getAccount, switchChain } from 'wagmi/actions'\r\nimport { customChains } from '@sh-reservoir0x/reservoir-sdk'\r\nimport * as allChains from 'viem/chains'\r\nimport { WalletClient, createPublicClient, http } from 'viem'\r\nimport { ChainConfig, ContractConfig } from '../../constants/common'\r\n\r\nexport enum CancelStep {\r\n  Cancel,\r\n  Approving,\r\n  Complete,\r\n}\r\n\r\nexport type CancelListingStepData = {\r\n  totalSteps: number\r\n  stepProgress: number\r\n  currentStep: Execute['steps'][0]\r\n  currentStepItem: NonNullable<Execute['steps'][0]['items']>[0]\r\n}\r\n\r\ntype ChildrenProps = {\r\n  loading: boolean\r\n  listing?: NonNullable<ReturnType<typeof useListings>['data']>[0]\r\n  tokenId?: string\r\n  contract?: string\r\n  cancelStep: CancelStep\r\n  transactionError?: Error | null\r\n  totalUsd: number\r\n  usdPrice: number\r\n  blockExplorerBaseUrl: string\r\n  blockExplorerName: string\r\n  steps: Execute['steps'] | null\r\n  stepData: CancelListingStepData | null\r\n  setCancelStep: React.Dispatch<React.SetStateAction<CancelStep>>\r\n  cancelOrder: () => void\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  listingId?: string\r\n  chainId?: number\r\n  normalizeRoyalties?: boolean\r\n  children: (props: ChildrenProps) => ReactNode\r\n  walletClient?: ReservoirWallet | WalletClient\r\n}\r\n\r\nexport const CancelListingModalRenderer: FC<Props> = ({\r\n  open,\r\n  listingId,\r\n  chainId,\r\n  normalizeRoyalties,\r\n  children,\r\n  walletClient,\r\n}) => {\r\n  const [cancelStep, setCancelStep] = useState<CancelStep>(CancelStep.Cancel)\r\n  const [transactionError, setTransactionError] = useState<Error | null>()\r\n  const [stepData, setStepData] = useState<CancelListingStepData | null>(null)\r\n  const [steps, setSteps] = useState<Execute['steps'] | null>(null)\r\n\r\n  const client = useReservoirClient()\r\n  const currentChain = client?.currentChain()\r\n  const config = useConfig()\r\n\r\n  const rendererChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const wagmiChain: allChains.Chain | undefined = Object.values({\r\n    ...allChains,\r\n    ...customChains,\r\n  }).find(({ id }) => rendererChain?.id === id)\r\n\r\n  const { data: wagmiWallet } = useWalletClient({ chainId: rendererChain?.id })\r\n\r\n  const auraEVMTestnet = ChainConfig[chainId ? chainId : 1235]\r\n  const publicClient = createPublicClient({\r\n    chain: auraEVMTestnet,\r\n    transport: http(),\r\n  })\r\n\r\n  const wallet = walletClient || wagmiWallet\r\n  const blockExplorerBaseUrl =\r\n    wagmiChain?.blockExplorers?.default.url || 'https://etherscan.io'\r\n\r\n  const blockExplorerName =\r\n    wagmiChain?.blockExplorers?.default?.name || 'Etherscan'\r\n\r\n  const { data: listings, isFetchingPage } = useListings(\r\n    {\r\n      ids: listingId,\r\n      normalizeRoyalties,\r\n      includeCriteriaMetadata: true,\r\n      includeRawData: true,\r\n    },\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    open && listingId ? true : false,\r\n    rendererChain?.id\r\n  )\r\n\r\n  const listing = listings && listings[0] ? listings[0] : undefined\r\n  const currency = listing?.price?.currency\r\n\r\n  const coinConversion = useCoinConversion(\r\n    open && listing ? 'USD' : undefined,\r\n    currency?.symbol\r\n  )\r\n  const usdPrice = coinConversion.length > 0 ? coinConversion[0].price : 0\r\n  const totalUsd = usdPrice * (listing?.price?.amount?.decimal || 0)\r\n\r\n  const tokenId = listing?.tokenSetId?.split(':')[2]\r\n  const contract = listing?.tokenSetId?.split(':')[1]\r\n\r\n  const cancelOrder = useCallback(async () => {\r\n    if (!wallet) {\r\n      const error = new Error('Missing a wallet/signer')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!listingId) {\r\n      const error = new Error('Missing list id to cancel')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!client) {\r\n      const error = new Error('ReservoirClient was not initialized')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    let activeWalletChain = getAccount(config).chain\r\n    if (rendererChain?.id !== activeWalletChain?.id) {\r\n      activeWalletChain = await switchChain(config, {\r\n        chainId: rendererChain?.id as number,\r\n      })\r\n    }\r\n\r\n    if (rendererChain?.id !== activeWalletChain?.id) {\r\n      const error = new Error(`Mismatching chainIds`)\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    setCancelStep(CancelStep.Approving)\r\n\r\n    if (rendererChain?.name === auraEVMTestnet?.name && tokenId) {\r\n      setStepData({\r\n        totalSteps: 1,\r\n        stepProgress: 1,\r\n        currentStep: {\r\n          kind: 'transaction',\r\n          action: '',\r\n          description: '',\r\n          id: '1',\r\n        },\r\n        currentStepItem: {\r\n          status: 'incomplete',\r\n        },\r\n      })\r\n      await wagmiWallet\r\n        ?.writeContract({\r\n          abi: [\r\n            {\r\n              inputs: [\r\n                {\r\n                  internalType: 'address',\r\n                  name: '_tokenContract',\r\n                  type: 'address',\r\n                },\r\n                { internalType: 'uint256', name: '_tokenId', type: 'uint256' },\r\n              ],\r\n              name: 'cancelAsk',\r\n              outputs: [],\r\n              stateMutability: 'nonpayable',\r\n              type: 'function',\r\n            },\r\n          ],\r\n          address: ContractConfig[chainId ? chainId : 1235]\r\n            ?.ASK1_1_MODULE_ADDRESS as `0x${string}`,\r\n          functionName: 'cancelAsk',\r\n          args: [contract as `0x${string}`, BigInt(Number(tokenId))],\r\n          gas: 500000n,\r\n        })\r\n        .then((hash) => {\r\n          const steps: Execute['steps'] = [\r\n            {\r\n              error: '',\r\n              errorData: [],\r\n              action: '',\r\n              description: '',\r\n              kind: 'transaction',\r\n              id: '',\r\n              items: [\r\n                {\r\n                  status: 'complete',\r\n                  transfersData: [\r\n                    {\r\n                      amount: '1',\r\n                    },\r\n                  ],\r\n                  txHashes: [\r\n                    {\r\n                      txHash: hash,\r\n                      chainId: chainId ? chainId : 1235,\r\n                    },\r\n                  ],\r\n                },\r\n              ],\r\n            },\r\n          ]\r\n\r\n          if (\r\n            steps &&\r\n            steps?.length > 0 &&\r\n            steps[0]?.items &&\r\n            steps[0]?.items?.length > 0\r\n          ) {\r\n            setStepData({\r\n              totalSteps: 1,\r\n              stepProgress: 1,\r\n              currentStep: steps[0],\r\n              currentStepItem: steps[0]?.items[0],\r\n            })\r\n          }\r\n          publicClient\r\n            .waitForTransactionReceipt({ hash })\r\n            .then((res) => {\r\n              if (res?.status === 'success') {\r\n                setTimeout(() => {\r\n                  setCancelStep(CancelStep.Complete)\r\n                }, 5000)\r\n              }\r\n            })\r\n            .catch((error) => {\r\n              setCancelStep(CancelStep.Cancel)\r\n              setTransactionError(error)\r\n            })\r\n        })\r\n        .catch((err) => {\r\n          setCancelStep(CancelStep.Cancel)\r\n          setTransactionError(err)\r\n        })\r\n    } else {\r\n      client.actions\r\n        .cancelOrder({\r\n          chainId: rendererChain?.id,\r\n          ids: [listingId],\r\n          wallet,\r\n          onProgress: (steps: Execute['steps']) => {\r\n            if (!steps) {\r\n              return\r\n            }\r\n            setSteps(steps)\r\n\r\n            const executableSteps = steps.filter(\r\n              (step) => step.items && step.items.length > 0\r\n            )\r\n\r\n            let stepCount = executableSteps.length\r\n\r\n            let currentStepItem:\r\n              | NonNullable<Execute['steps'][0]['items']>[0]\r\n              | undefined\r\n\r\n            const currentStepIndex = executableSteps.findIndex((step) => {\r\n              currentStepItem = step.items?.find(\r\n                (item) => item.status === 'incomplete'\r\n              )\r\n              return currentStepItem\r\n            })\r\n\r\n            const currentStep =\r\n              currentStepIndex > -1\r\n                ? executableSteps[currentStepIndex]\r\n                : executableSteps[stepCount - 1]\r\n\r\n            if (currentStepItem) {\r\n              setStepData({\r\n                totalSteps: stepCount,\r\n                stepProgress: currentStepIndex,\r\n                currentStep,\r\n                currentStepItem,\r\n              })\r\n            } else if (\r\n              steps.every(\r\n                (step) =>\r\n                  !step.items ||\r\n                  step.items.length == 0 ||\r\n                  step.items?.every((item) => item.status === 'complete')\r\n              )\r\n            ) {\r\n              setCancelStep(CancelStep.Complete)\r\n            }\r\n          },\r\n        })\r\n        .catch((error: Error) => {\r\n          setTransactionError(error)\r\n          setCancelStep(CancelStep.Cancel)\r\n          setStepData(null)\r\n          setSteps(null)\r\n        })\r\n    }\r\n  }, [listingId, client, rendererChain, wallet, config, tokenId, contract])\r\n\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setCancelStep(CancelStep.Cancel)\r\n      setTransactionError(null)\r\n      setStepData(null)\r\n      setSteps(null)\r\n    }\r\n  }, [open])\r\n\r\n  open\r\n    ? (axios.defaults.headers.common['x-rkui-context'] =\r\n        'cancelListingRenderer')\r\n    : delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        loading: isFetchingPage !== undefined ? isFetchingPage : true,\r\n        listing,\r\n        tokenId,\r\n        blockExplorerName,\r\n        contract,\r\n        cancelStep,\r\n        transactionError,\r\n        usdPrice,\r\n        totalUsd,\r\n        blockExplorerBaseUrl,\r\n        steps,\r\n        stepData,\r\n        setCancelStep,\r\n        cancelOrder,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n","import { useFallbackState, useReservoirClient } from '../../hooks'\r\nimport React, {\r\n  ReactElement,\r\n  Dispatch,\r\n  SetStateAction,\r\n  useEffect,\r\n  useState,\r\n  ComponentPropsWithoutRef,\r\n  useContext,\r\n} from 'react'\r\nimport {\r\n  Flex,\r\n  Text,\r\n  Box,\r\n  Button,\r\n  Loader,\r\n  Select,\r\n  FormatWrappedCurrency,\r\n  Popover,\r\n  FormatCryptoCurrency,\r\n  CryptoCurrencyIcon,\r\n  Input,\r\n  FormatCurrency,\r\n  ErrorWell,\r\n} from '../../primitives'\r\nimport PseudoInput from '../../primitives/PseudoInput'\r\nimport AttributeSelector from '../bid/AttributeSelector'\r\nimport { EditBidModalRenderer, EditBidStep } from './EditBidModalRenderer'\r\nimport { Modal } from '../Modal'\r\nimport getLocalMarketplaceData from '../../lib/getLocalMarketplaceData'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport faCheckCircle from '@fortawesome/free-solid-svg-icons/faCheckCircle'\r\nimport faClose from '@fortawesome/free-solid-svg-icons/faClose'\r\n\r\nimport { ReservoirWallet } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { WalletClient, formatUnits } from 'viem'\r\nimport { formatNumber } from '../../lib/numbers'\r\nimport { Dialog } from '../../primitives/Dialog'\r\nimport TokenInfo from '../bid/TokenInfo'\r\nimport { ProviderOptionsContext } from '../../ReservoirKitProvider'\r\nimport TransactionProgress from '../TransactionProgress'\r\nimport QuantitySelector from '../QuantitySelector'\r\nimport { Currency } from '../../types/Currency'\r\n\r\nconst ModalCopy = {\r\n  title: 'Edit Offer',\r\n  ctaClose: 'Close',\r\n  ctaConfirm: 'Confirm',\r\n  ctaDisabled: 'Enter a Price',\r\n  ctaEditOffer: 'Edit Offer',\r\n  ctaRetry: 'Retry',\r\n  ctaConvertManually: 'Convert Manually',\r\n  ctaConvertAutomatically: '',\r\n  ctaAwaitingApproval: 'Waiting for approval...',\r\n  ctaAwaitingValidation: 'Waiting for transaction to be validated',\r\n}\r\n\r\ntype Props = Pick<Parameters<typeof Modal>['0'], 'trigger'> & {\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  bidId?: string\r\n  tokenId?: string\r\n  chainId?: number\r\n  collectionId?: string\r\n  normalizeRoyalties?: boolean\r\n  enableOnChainRoyalties?: boolean\r\n  copyOverrides?: Partial<typeof ModalCopy>\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  onClose?: (data: any, currentStep: EditBidStep) => void\r\n  onEditBidComplete?: (data: any) => void\r\n  onEditBidError?: (error: Error, data: any) => void\r\n  onPointerDownOutside?: ComponentPropsWithoutRef<\r\n    typeof Dialog\r\n  >['onPointerDownOutside']\r\n}\r\n\r\nconst MINIMUM_AMOUNT = 0.000001\r\nconst MAXIMUM_AMOUNT = Infinity\r\n\r\nexport function EditBidModal({\r\n  openState,\r\n  bidId,\r\n  tokenId,\r\n  chainId,\r\n  collectionId,\r\n  trigger,\r\n  normalizeRoyalties,\r\n  copyOverrides,\r\n  walletClient,\r\n  onClose,\r\n  onEditBidComplete,\r\n  onEditBidError,\r\n  onPointerDownOutside,\r\n}: Props): ReactElement {\r\n  const copy: typeof ModalCopy = { ...ModalCopy, ...copyOverrides }\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const modalChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  return (\r\n    <EditBidModalRenderer\r\n      chainId={modalChain?.id}\r\n      bidId={bidId}\r\n      tokenId={tokenId}\r\n      collectionId={collectionId}\r\n      open={open}\r\n      normalizeRoyalties={normalizeRoyalties}\r\n      walletClient={walletClient}\r\n    >\r\n      {({\r\n        loading,\r\n        bid,\r\n        attributes,\r\n        trait,\r\n        isOracleOrder,\r\n        isTokenBid,\r\n        quantity,\r\n        bidAmountPerUnit,\r\n        totalBidAmount,\r\n        totalBidAmountUsd,\r\n        token,\r\n        collection,\r\n        editBidStep,\r\n        transactionError,\r\n        hasEnoughNativeCurrency,\r\n        hasEnoughWrappedCurrency,\r\n        amountToWrap,\r\n        balance,\r\n        wrappedBalance,\r\n        wrappedContractName,\r\n        wrappedContractAddress,\r\n        canAutomaticallyConvert,\r\n        convertLink,\r\n        royaltyBps,\r\n        expirationOptions,\r\n        expirationOption,\r\n        usdPrice,\r\n        stepData,\r\n        exchange,\r\n        traitBidSupported,\r\n        partialBidSupported,\r\n        currency,\r\n        setQuantity,\r\n        setTrait,\r\n        setBidAmountPerUnit,\r\n        setExpirationOption,\r\n        setEditBidStep,\r\n        editBid,\r\n      }) => {\r\n        const providerOptionsContext = useContext(ProviderOptionsContext)\r\n\r\n        const [attributeSelectorOpen, setAttributeSelectorOpen] =\r\n          useState(false)\r\n\r\n        const [attributesSelectable, setAttributesSelectable] = useState(false)\r\n        const tokenCount = collection?.tokenCount\r\n          ? +collection.tokenCount\r\n          : undefined\r\n\r\n        const itemImage = isTokenBid\r\n          ? bid?.criteria?.data?.token?.image || token?.token?.imageSmall\r\n          : bid?.criteria?.data?.collection?.image || collection?.image\r\n\r\n        const quantityEnabled =\r\n          partialBidSupported &&\r\n          (!tokenId ||\r\n            (token?.token?.kind === 'erc1155' &&\r\n              Number(token?.token?.supply) > 1))\r\n\r\n        const [localMarketplace, setLocalMarketplace] = useState<ReturnType<\r\n          typeof getLocalMarketplaceData\r\n        > | null>(null)\r\n\r\n        useEffect(() => {\r\n          setLocalMarketplace(getLocalMarketplaceData())\r\n        }, [])\r\n\r\n        useEffect(() => {\r\n          if (editBidStep === EditBidStep.Complete && onEditBidComplete) {\r\n            const data = {\r\n              bid,\r\n              stepData: stepData,\r\n            }\r\n            onEditBidComplete(data)\r\n          }\r\n        }, [editBidStep])\r\n\r\n        useEffect(() => {\r\n          if (transactionError && onEditBidError) {\r\n            const data = {\r\n              bid,\r\n              stepData: stepData,\r\n            }\r\n            onEditBidError(transactionError, data)\r\n          }\r\n        }, [transactionError])\r\n\r\n        useEffect(() => {\r\n          if (open && attributes) {\r\n            let attributeCount = 0\r\n            for (let i = 0; i < attributes.length; i++) {\r\n              attributeCount += attributes[i].attributeCount || 0\r\n              if (attributeCount >= 2000) {\r\n                break\r\n              }\r\n            }\r\n            if (attributeCount >= 2000) {\r\n              setAttributesSelectable(false)\r\n            } else {\r\n              setAttributesSelectable(true)\r\n            }\r\n          } else {\r\n            setAttributesSelectable(false)\r\n          }\r\n        }, [open, attributes])\r\n\r\n        const isBidAvailable = bid && bid.status === 'active' && !loading\r\n\r\n        const isBidEditable =\r\n          bid && bid.status === 'active' && !loading && isOracleOrder\r\n\r\n        const minimumAmount = exchange?.minPriceRaw\r\n          ? Number(\r\n              formatUnits(\r\n                BigInt(exchange.minPriceRaw),\r\n                currency?.decimals || 18\r\n              )\r\n            )\r\n          : MINIMUM_AMOUNT\r\n        const maximumAmount = exchange?.maxPriceRaw\r\n          ? Number(\r\n              formatUnits(\r\n                BigInt(exchange.maxPriceRaw),\r\n                currency?.decimals || 18\r\n              )\r\n            )\r\n          : MAXIMUM_AMOUNT\r\n\r\n        const withinPricingBounds =\r\n          totalBidAmount !== 0 &&\r\n          totalBidAmount <= maximumAmount &&\r\n          totalBidAmount >= minimumAmount\r\n\r\n        const canPurchase = totalBidAmount !== 0 && withinPricingBounds\r\n\r\n        return (\r\n          <Modal\r\n            trigger={trigger}\r\n            title={copy.title}\r\n            open={open}\r\n            onOpenChange={(open) => {\r\n              if (!open && onClose) {\r\n                const data = {\r\n                  bid,\r\n                  stepData: stepData,\r\n                }\r\n                onClose(data, editBidStep)\r\n              }\r\n              setOpen(open)\r\n            }}\r\n            loading={loading}\r\n            onPointerDownOutside={(e) => {\r\n              if (onPointerDownOutside) {\r\n                onPointerDownOutside(e)\r\n              }\r\n            }}\r\n          >\r\n            {!isBidAvailable && !loading && (\r\n              <Flex\r\n                direction=\"column\"\r\n                justify=\"center\"\r\n                css={{ px: '$4', py: '$6' }}\r\n              >\r\n                <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                  Selected offer is no longer available\r\n                </Text>\r\n              </Flex>\r\n            )}\r\n            {!isBidEditable && isBidAvailable && (\r\n              <Flex\r\n                direction=\"column\"\r\n                justify=\"center\"\r\n                css={{ px: '$4', py: '$6' }}\r\n              >\r\n                <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                  Selected offer is not an oracle order, so cannot be edited.\r\n                </Text>\r\n              </Flex>\r\n            )}\r\n            {editBidStep === EditBidStep.Edit &&\r\n              isBidEditable &&\r\n              collection && (\r\n                <Flex direction=\"column\">\r\n                  <TokenInfo\r\n                    chain={modalChain}\r\n                    token={token ? token : undefined}\r\n                    collection={collection}\r\n                    containerCss={{\r\n                      borderBottom: '1px solid',\r\n                      borderBottomColor: '$neutralLine',\r\n                      borderColor: '$neutralLine',\r\n                    }}\r\n                  />\r\n                  <Flex\r\n                    justify=\"between\"\r\n                    direction=\"column\"\r\n                    align=\"center\"\r\n                    css={{\r\n                      width: '100%',\r\n                      p: '$4',\r\n                      gap: 24,\r\n                      overflow: 'hidden',\r\n                    }}\r\n                  >\r\n                    <Flex direction=\"column\" css={{ gap: '$2', width: '100%' }}>\r\n                      <Flex justify=\"between\" css={{ gap: '$3' }}>\r\n                        <Text style=\"subtitle2\">Offer Price</Text>\r\n                        <Text\r\n                          as={Flex}\r\n                          css={{ gap: '$1' }}\r\n                          align=\"center\"\r\n                          style=\"subtitle3\"\r\n                        >\r\n                          Balance:{' '}\r\n                          <FormatWrappedCurrency\r\n                            chainId={modalChain?.id}\r\n                            logoWidth={10}\r\n                            textStyle=\"tiny\"\r\n                            amount={wrappedBalance?.[0]}\r\n                            address={wrappedContractAddress}\r\n                            decimals={wrappedBalance?.[1]}\r\n                            symbol={wrappedBalance?.[2]}\r\n                          />{' '}\r\n                        </Text>\r\n                      </Flex>\r\n\r\n                      <Flex css={{ mt: '$2', gap: 20 }}>\r\n                        <Text\r\n                          as={Flex}\r\n                          css={{ gap: '$2', flexShrink: 0 }}\r\n                          align=\"center\"\r\n                          style=\"body1\"\r\n                          color=\"subtle\"\r\n                        >\r\n                          <CryptoCurrencyIcon\r\n                            chainId={modalChain?.id}\r\n                            css={{ height: 20 }}\r\n                            address={wrappedContractAddress}\r\n                          />\r\n                          {wrappedContractName}\r\n                        </Text>\r\n                        <Input\r\n                          type=\"number\"\r\n                          value={bidAmountPerUnit}\r\n                          onChange={(e) => {\r\n                            setBidAmountPerUnit(e.target.value)\r\n                          }}\r\n                          placeholder=\"Enter price\"\r\n                          containerCss={{\r\n                            width: '100%',\r\n                          }}\r\n                          css={{\r\n                            textAlign: 'center',\r\n                            '@bp1': {\r\n                              textAlign: 'left',\r\n                            },\r\n                          }}\r\n                        />\r\n                      </Flex>\r\n\r\n                      {totalBidAmount !== 0 && !withinPricingBounds && (\r\n                        <Box>\r\n                          <Text style=\"body2\" color=\"error\">\r\n                            {maximumAmount !== Infinity\r\n                              ? `Amount must be between ${formatNumber(\r\n                                  minimumAmount\r\n                                )} - ${formatNumber(maximumAmount)}`\r\n                              : `Amount must be higher than ${formatNumber(\r\n                                  minimumAmount\r\n                                )}`}\r\n                          </Text>\r\n                        </Box>\r\n                      )}\r\n\r\n                      {attributes &&\r\n                        attributes.length > 0 &&\r\n                        (attributesSelectable || trait) &&\r\n                        !tokenId &&\r\n                        traitBidSupported && (\r\n                          <>\r\n                            <Popover.Root\r\n                              open={attributeSelectorOpen}\r\n                              onOpenChange={\r\n                                attributesSelectable\r\n                                  ? setAttributeSelectorOpen\r\n                                  : undefined\r\n                              }\r\n                            >\r\n                              <Popover.Trigger asChild>\r\n                                {trait ? (\r\n                                  <PseudoInput css={{ py: '$3' }}>\r\n                                    <Flex\r\n                                      justify=\"between\"\r\n                                      css={{\r\n                                        gap: '$2',\r\n                                        alignItems: 'center',\r\n                                        color: '$neutralText',\r\n                                      }}\r\n                                    >\r\n                                      <Box\r\n                                        css={{\r\n                                          maxWidth: 385,\r\n                                          overflow: 'hidden',\r\n                                          textOverflow: 'ellipsis',\r\n                                          whiteSpace: 'nowrap',\r\n                                        }}\r\n                                      >\r\n                                        <Text color=\"accent\" style=\"subtitle1\">\r\n                                          {trait?.key}:{' '}\r\n                                        </Text>\r\n                                        <Text style=\"subtitle1\">\r\n                                          {trait?.value}\r\n                                        </Text>\r\n                                      </Box>\r\n                                      <Flex\r\n                                        css={{\r\n                                          alignItems: 'center',\r\n                                          gap: '$2',\r\n                                        }}\r\n                                      >\r\n                                        {trait?.floorAskPrice && (\r\n                                          <Box css={{ flex: 'none' }}>\r\n                                            <FormatCryptoCurrency\r\n                                              amount={trait?.floorAskPrice}\r\n                                              maximumFractionDigits={2}\r\n                                              logoWidth={11}\r\n                                              textStyle=\"body1\"\r\n                                            />\r\n                                          </Box>\r\n                                        )}\r\n                                        <FontAwesomeIcon\r\n                                          style={{\r\n                                            cursor: 'pointer',\r\n                                          }}\r\n                                          onClick={(e) => {\r\n                                            e.preventDefault()\r\n                                            setTrait(undefined)\r\n                                          }}\r\n                                          icon={faClose}\r\n                                          width={16}\r\n                                          height={16}\r\n                                        />\r\n                                      </Flex>\r\n                                    </Flex>\r\n                                  </PseudoInput>\r\n                                ) : (\r\n                                  <Button\r\n                                    color=\"ghost\"\r\n                                    css={{\r\n                                      color: '$accentText',\r\n                                      fontWeight: 500,\r\n                                      fontSize: 14,\r\n                                      maxWidth: 'max-content',\r\n                                    }}\r\n                                    size=\"none\"\r\n                                  >\r\n                                    + Add Attribute\r\n                                  </Button>\r\n                                )}\r\n                              </Popover.Trigger>\r\n                              <Popover.Content\r\n                                side=\"bottom\"\r\n                                align=\"start\"\r\n                                sideOffset={-20}\r\n                                style={{ maxWidth: '100vw' }}\r\n                              >\r\n                                <AttributeSelector\r\n                                  attributes={attributes}\r\n                                  tokenCount={tokenCount}\r\n                                  setTrait={setTrait}\r\n                                  setOpen={setAttributeSelectorOpen}\r\n                                />\r\n                              </Popover.Content>\r\n                            </Popover.Root>\r\n                          </>\r\n                        )}\r\n                    </Flex>\r\n\r\n                    {quantityEnabled ? (\r\n                      <Flex\r\n                        justify=\"between\"\r\n                        align=\"center\"\r\n                        css={{ gap: '$5', width: '100%' }}\r\n                      >\r\n                        <Flex\r\n                          direction=\"column\"\r\n                          align=\"start\"\r\n                          css={{ gap: '$2', flexShrink: 0 }}\r\n                        >\r\n                          <Text style=\"subtitle2\">Quantity</Text>\r\n                          <Text\r\n                            color=\"subtle\"\r\n                            style=\"body3\"\r\n                            css={{\r\n                              display: 'none',\r\n                              '@bp1': {\r\n                                display: 'block',\r\n                              },\r\n                            }}\r\n                          >\r\n                            Offers can be accepted separately\r\n                          </Text>\r\n                        </Flex>\r\n                        <QuantitySelector\r\n                          quantity={quantity}\r\n                          setQuantity={setQuantity}\r\n                          min={1}\r\n                          max={999999}\r\n                          css={{\r\n                            justifyContent: 'space-between',\r\n                            width: '100%',\r\n                          }}\r\n                        />\r\n                      </Flex>\r\n                    ) : null}\r\n\r\n                    <Flex direction=\"column\" css={{ gap: '$2', width: '100%' }}>\r\n                      <Text as={Box} style=\"subtitle2\">\r\n                        Expiration Date\r\n                      </Text>\r\n                      <Select\r\n                        css={{\r\n                          flex: 1,\r\n                          width: '100%',\r\n                        }}\r\n                        value={expirationOption?.text || ''}\r\n                        onValueChange={(value: string) => {\r\n                          const option = expirationOptions.find(\r\n                            (option) => option.value == value\r\n                          )\r\n                          if (option) {\r\n                            setExpirationOption(option)\r\n                          }\r\n                        }}\r\n                      >\r\n                        {expirationOptions\r\n                          .filter(({ value }) => value !== 'custom')\r\n                          .map((option) => (\r\n                            <Select.Item key={option.text} value={option.value}>\r\n                              <Select.ItemText>{option.text}</Select.ItemText>\r\n                            </Select.Item>\r\n                          ))}\r\n                      </Select>\r\n                    </Flex>\r\n\r\n                    <Flex\r\n                      justify=\"between\"\r\n                      align=\"center\"\r\n                      css={{ gap: '$4', width: '100%' }}\r\n                    >\r\n                      <Text style=\"h6\">Total Offer Price</Text>\r\n                      <Flex direction=\"column\" align=\"end\">\r\n                        <FormatWrappedCurrency\r\n                          chainId={modalChain?.id}\r\n                          logoWidth={16}\r\n                          textStyle=\"h6\"\r\n                          amount={totalBidAmount}\r\n                          address={currency?.contract}\r\n                          decimals={currency?.decimals}\r\n                          symbol={currency?.symbol}\r\n                        />\r\n                        <FormatCurrency\r\n                          style=\"subtitle3\"\r\n                          color=\"subtle\"\r\n                          amount={totalBidAmountUsd}\r\n                        />\r\n                      </Flex>\r\n                    </Flex>\r\n                    <Box css={{ width: '100%', mt: 'auto' }}>\r\n                      {!canPurchase && (\r\n                        <Button disabled={true} css={{ width: '100%' }}>\r\n                          {copy.ctaDisabled}\r\n                        </Button>\r\n                      )}\r\n                      {canPurchase && hasEnoughWrappedCurrency && (\r\n                        <Button onClick={editBid} css={{ width: '100%' }}>\r\n                          {copy.ctaConfirm}\r\n                        </Button>\r\n                      )}\r\n                      {canPurchase && !hasEnoughWrappedCurrency && (\r\n                        <>\r\n                          {!hasEnoughNativeCurrency && (\r\n                            <Flex css={{ gap: '$2', mt: 10 }} justify=\"center\">\r\n                              <Text style=\"body3\" color=\"error\">\r\n                                {balance?.symbol || 'ETH'} Balance\r\n                              </Text>\r\n                              <FormatCryptoCurrency\r\n                                chainId={modalChain?.id}\r\n                                amount={balance?.value}\r\n                                symbol={balance?.symbol}\r\n                              />\r\n                            </Flex>\r\n                          )}\r\n                          <Flex\r\n                            css={{\r\n                              gap: '$2',\r\n                              mt: 10,\r\n                              overflow: 'hidden',\r\n                              flexDirection: 'column-reverse',\r\n                              '@bp1': {\r\n                                flexDirection: 'row',\r\n                              },\r\n                            }}\r\n                          >\r\n                            <Button\r\n                              disabled={\r\n                                providerOptionsContext.disableJumperLink\r\n                              }\r\n                              css={{ flex: '1 0 auto' }}\r\n                              color=\"secondary\"\r\n                              onClick={() => {\r\n                                window.open(convertLink, '_blank')\r\n                              }}\r\n                            >\r\n                              {providerOptionsContext.disableJumperLink\r\n                                ? copy.ctaConfirm\r\n                                : copy.ctaConvertManually}\r\n                            </Button>\r\n                            {canAutomaticallyConvert && (\r\n                              <Button\r\n                                css={{ flex: 1, maxHeight: 44 }}\r\n                                disabled={!hasEnoughNativeCurrency}\r\n                                onClick={editBid}\r\n                              >\r\n                                <Text style=\"h6\" color=\"button\" ellipsify>\r\n                                  {copy.ctaConvertAutomatically.length > 0\r\n                                    ? copy.ctaConvertAutomatically\r\n                                    : `Convert ${amountToWrap} ${\r\n                                        balance?.symbol || 'ETH'\r\n                                      } for me`}\r\n                                </Text>\r\n                              </Button>\r\n                            )}\r\n                          </Flex>\r\n                        </>\r\n                      )}\r\n                    </Box>\r\n                  </Flex>\r\n                </Flex>\r\n              )}\r\n            {editBidStep === EditBidStep.Approving && collection && (\r\n              <Flex direction=\"column\">\r\n                <TokenInfo\r\n                  chain={modalChain}\r\n                  token={token ? token : undefined}\r\n                  collection={collection}\r\n                  price={totalBidAmount}\r\n                  currency={currency as Currency}\r\n                  quantity={quantity}\r\n                  trait={trait}\r\n                  expirationOption={expirationOption}\r\n                  containerCss={{\r\n                    borderBottom: '1px solid',\r\n                    borderBottomColor: '$neutralLine',\r\n                    borderColor: '$neutralLine',\r\n                  }}\r\n                />\r\n                <Flex\r\n                  justify=\"between\"\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ width: '100%', p: '$4', gap: 24 }}\r\n                >\r\n                  {transactionError && (\r\n                    <ErrorWell\r\n                      error={transactionError}\r\n                      css={{ width: '100%' }}\r\n                    />\r\n                  )}\r\n                  {stepData && (\r\n                    <>\r\n                      <Text css={{ textAlign: 'center' }} style=\"subtitle1\">\r\n                        {stepData.currentStep.action}\r\n                      </Text>\r\n                      {stepData.currentStep.kind === 'signature' && (\r\n                        <TransactionProgress\r\n                          justify=\"center\"\r\n                          fromImg={itemImage || ''}\r\n                          toImgs={[localMarketplace?.icon || '']}\r\n                        />\r\n                      )}\r\n                      {stepData.currentStep.kind !== 'signature' && (\r\n                        <Flex align=\"center\" justify=\"center\">\r\n                          <Flex\r\n                            css={{\r\n                              background: '$neutralLine',\r\n                              borderRadius: 8,\r\n                            }}\r\n                          >\r\n                            <CryptoCurrencyIcon\r\n                              chainId={modalChain?.id}\r\n                              css={{ height: 56, width: 56 }}\r\n                              address={wrappedContractAddress}\r\n                            />\r\n                          </Flex>\r\n                        </Flex>\r\n                      )}\r\n                      <Text\r\n                        css={{\r\n                          textAlign: 'center',\r\n                          mt: 24,\r\n                          maxWidth: 395,\r\n                          mx: 'auto',\r\n                          mb: '$4',\r\n                        }}\r\n                        style=\"body2\"\r\n                        color=\"subtle\"\r\n                      >\r\n                        {stepData?.currentStep.description}\r\n                      </Text>\r\n                    </>\r\n                  )}\r\n                  {!stepData && (\r\n                    <Flex\r\n                      css={{ height: '100%', py: '$5' }}\r\n                      justify=\"center\"\r\n                      align=\"center\"\r\n                    >\r\n                      <Loader />\r\n                    </Flex>\r\n                  )}\r\n                  {!transactionError && (\r\n                    <Button css={{ width: '100%', mt: 'auto' }} disabled={true}>\r\n                      <Loader />\r\n                      {copy.ctaAwaitingApproval}\r\n                    </Button>\r\n                  )}\r\n                  {transactionError && (\r\n                    <Flex css={{ mt: 'auto', gap: 10, width: '100%' }}>\r\n                      <Button\r\n                        color=\"secondary\"\r\n                        css={{ flex: 1 }}\r\n                        onClick={() => setEditBidStep(EditBidStep.Edit)}\r\n                      >\r\n                        {copy.ctaEditOffer}\r\n                      </Button>\r\n                      <Button css={{ flex: 1 }} onClick={editBid}>\r\n                        {copy.ctaRetry}\r\n                      </Button>\r\n                    </Flex>\r\n                  )}\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n            {editBidStep === EditBidStep.Complete && (\r\n              <Flex direction=\"column\" align=\"center\" css={{ p: '$4' }}>\r\n                <Box css={{ color: '$successAccent', mt: 48 }}>\r\n                  <FontAwesomeIcon\r\n                    icon={faCheckCircle}\r\n                    style={{ width: '32px', height: '32px' }}\r\n                  />\r\n                </Box>\r\n                <Text style=\"h5\" css={{ textAlign: 'center', mt: 36, mb: 80 }}>\r\n                  Offer Updated!\r\n                </Text>\r\n\r\n                <Button\r\n                  css={{ width: '100%' }}\r\n                  onClick={() => {\r\n                    setOpen(false)\r\n                  }}\r\n                >\r\n                  {copy.ctaClose}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n          </Modal>\r\n        )\r\n      }}\r\n    </EditBidModalRenderer>\r\n  )\r\n}\r\n\r\nEditBidModal.Custom = EditBidModalRenderer\r\n","import React, {\r\n  FC,\r\n  useEffect,\r\n  useState,\r\n  useCallback,\r\n  ReactNode,\r\n  useMemo,\r\n} from 'react'\r\nimport {\r\n  useCoinConversion,\r\n  useReservoirClient,\r\n  useTokens,\r\n  useCollections,\r\n  useChainCurrency,\r\n  useBids,\r\n  useAttributes,\r\n  useMarketplaces,\r\n} from '../../hooks'\r\nimport {\r\n  useWalletClient,\r\n  useAccount,\r\n  useBalance,\r\n  useConfig,\r\n  useReadContracts,\r\n} from 'wagmi'\r\nimport { mainnet, goerli } from 'wagmi/chains'\r\n\r\nimport { Execute, ReservoirWallet, axios } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { ExpirationOption } from '../../types/ExpirationOption'\r\nimport expirationOptions from '../../lib/defaultExpirationOptions'\r\nimport dayjs from 'dayjs'\r\nimport wrappedContractNames from '../../constants/wrappedContractNames'\r\nimport wrappedContracts from '../../constants/wrappedContracts'\r\nimport {\r\n  BidData,\r\n  FetchBalanceResult,\r\n  Trait,\r\n  Traits,\r\n} from '../bid/BidModalRenderer'\r\nimport { formatBN } from '../../lib/numbers'\r\nimport { Address, WalletClient, erc20Abi, parseUnits } from 'viem'\r\nimport { getAccount, switchChain } from 'wagmi/actions'\r\nimport { customChains } from '@sh-reservoir0x/reservoir-sdk'\r\nimport * as allChains from 'viem/chains'\r\nimport { Marketplace } from '../../hooks/useMarketplaces'\r\n\r\ntype Exchange = NonNullable<Marketplace['exchanges']>['string']\r\n\r\nexport enum EditBidStep {\r\n  Edit,\r\n  Approving,\r\n  Complete,\r\n}\r\n\r\nexport type EditBidStepData = {\r\n  totalSteps: number\r\n  stepProgress: number\r\n  currentStep: Execute['steps'][0]\r\n  currentStepItem: NonNullable<Execute['steps'][0]['items']>[0]\r\n}\r\n\r\ntype ChildrenProps = {\r\n  loading: boolean\r\n  bid?: NonNullable<ReturnType<typeof useBids>['data']>[0]\r\n  attributes?: Traits\r\n  trait: Trait\r\n  tokenId?: string\r\n  contract?: string\r\n  isOracleOrder: boolean\r\n  isTokenBid: boolean\r\n  quantity: number\r\n  setQuantity: React.Dispatch<React.SetStateAction<number>>\r\n  bidAmountPerUnit: string\r\n  totalBidAmount: number\r\n  totalBidAmountUsd: number\r\n  usdPrice: number | null\r\n  token?: NonNullable<NonNullable<ReturnType<typeof useTokens>>['data']>[0]\r\n  currency: NonNullable<\r\n    NonNullable<ReturnType<typeof useBids>['data']>[0]['price']\r\n  >['currency']\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  editBidStep: EditBidStep\r\n  transactionError?: Error | null\r\n  hasEnoughNativeCurrency: boolean\r\n  hasEnoughWrappedCurrency: boolean\r\n  balance?: FetchBalanceResult\r\n  wrappedBalance?: [bigint, number, string]\r\n  wrappedContractName: string\r\n  wrappedContractAddress: string\r\n  amountToWrap: string\r\n  canAutomaticallyConvert: boolean\r\n  convertLink: string\r\n  royaltyBps?: number\r\n  expirationOptions: ExpirationOption[]\r\n  expirationOption: ExpirationOption\r\n  steps: Execute['steps'] | null\r\n  stepData: EditBidStepData | null\r\n  exchange?: Exchange\r\n  traitBidSupported: boolean\r\n  collectionBidSupported: boolean\r\n  partialBidSupported: boolean\r\n  setTrait: React.Dispatch<React.SetStateAction<Trait>>\r\n  setBidAmountPerUnit: React.Dispatch<React.SetStateAction<string>>\r\n  setExpirationOption: React.Dispatch<React.SetStateAction<ExpirationOption>>\r\n  setEditBidStep: React.Dispatch<React.SetStateAction<EditBidStep>>\r\n  editBid: () => void\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  bidId?: string\r\n  chainId?: number\r\n  tokenId?: string\r\n  attribute?: Trait\r\n  collectionId?: string\r\n  normalizeRoyalties?: boolean\r\n  children: (props: ChildrenProps) => ReactNode\r\n  walletClient?: ReservoirWallet | WalletClient\r\n}\r\n\r\nexport const EditBidModalRenderer: FC<Props> = ({\r\n  open,\r\n  bidId,\r\n  chainId,\r\n  tokenId,\r\n  collectionId,\r\n  attribute,\r\n  normalizeRoyalties,\r\n  walletClient,\r\n  children,\r\n}) => {\r\n  const client = useReservoirClient()\r\n  const currentChain = client?.currentChain()\r\n  const config = useConfig()\r\n\r\n  const rendererChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const wagmiChain: allChains.Chain | undefined = Object.values({\r\n    ...allChains,\r\n    ...customChains,\r\n  }).find(({ id }) => rendererChain?.id === id)\r\n\r\n  const { data: wallet } = useWalletClient({ chainId: rendererChain?.id })\r\n\r\n  const [editBidStep, setEditBidStep] = useState<EditBidStep>(EditBidStep.Edit)\r\n  const [transactionError, setTransactionError] = useState<Error | null>()\r\n  const [stepData, setStepData] = useState<EditBidStepData | null>(null)\r\n  const [steps, setSteps] = useState<Execute['steps'] | null>(null)\r\n\r\n  const [bidAmountPerUnit, setBidAmountPerUnit] = useState<string>('')\r\n  const [quantity, setQuantity] = useState(1)\r\n\r\n  const [expirationOption, setExpirationOption] = useState<ExpirationOption>(\r\n    expirationOptions[5]\r\n  )\r\n  const [hasEnoughNativeCurrency, setHasEnoughNativeCurrency] = useState(false)\r\n  const [hasEnoughWrappedCurrency, setHasEnoughWrappedCurrency] =\r\n    useState(false)\r\n  const [amountToWrap, setAmountToWrap] = useState('')\r\n  const [trait, setTrait] = useState<Trait>(attribute)\r\n  const [attributes, setAttributes] = useState<Traits>()\r\n  const chainCurrency = useChainCurrency(rendererChain?.id)\r\n\r\n  const nativeWrappedContractAddress =\r\n    chainCurrency.chainId in wrappedContracts\r\n      ? wrappedContracts[chainCurrency.chainId]\r\n      : wrappedContracts[1]\r\n  const nativeWrappedContractName =\r\n    chainCurrency.chainId in wrappedContractNames\r\n      ? wrappedContractNames[chainCurrency.chainId]\r\n      : wrappedContractNames[1]\r\n\r\n  const { data: bids } = useBids(\r\n    {\r\n      ids: bidId,\r\n      normalizeRoyalties,\r\n      includeCriteriaMetadata: true,\r\n      includeRawData: true,\r\n    },\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    open && bidId ? true : false,\r\n    rendererChain?.id\r\n  )\r\n\r\n  const bid = bids && bids[0] ? bids[0] : undefined\r\n\r\n  const [allMarketplaces] = useMarketplaces(\r\n    collectionId,\r\n    tokenId,\r\n    undefined,\r\n    undefined,\r\n    rendererChain?.id,\r\n    open\r\n  )\r\n\r\n  const reservoirMarketplace = useMemo(\r\n    () =>\r\n      allMarketplaces.find(\r\n        (marketplace) => marketplace.orderbook === 'reservoir'\r\n      ),\r\n    [allMarketplaces]\r\n  )\r\n\r\n  const exchange = useMemo(() => {\r\n    const exchanges: Record<string, Exchange> =\r\n      reservoirMarketplace?.exchanges || {}\r\n\r\n    const exchange = Object.values(exchanges).find(\r\n      (exchange) => exchange?.orderKind === bid?.kind\r\n    )\r\n\r\n    return exchange?.enabled ? exchange : undefined\r\n  }, [reservoirMarketplace, bid])\r\n\r\n  const traitBidSupported = Boolean(exchange?.traitBidSupported)\r\n  const collectionBidSupported = Boolean(exchange?.collectionBidSupported)\r\n  const partialBidSupported = Boolean(exchange?.partialOrderSupported)\r\n\r\n  const contract = bid?.tokenSetId?.split(':')[1]\r\n  const currency = bid?.price?.currency\r\n\r\n  const isOracleOrder = bid?.isNativeOffChainCancellable as boolean\r\n\r\n  const wrappedContractAddress = currency\r\n    ? (currency.contract as string)\r\n    : nativeWrappedContractAddress\r\n  const wrappedContractName = currency\r\n    ? (currency.symbol as string)\r\n    : nativeWrappedContractName\r\n\r\n  useEffect(() => {\r\n    if (bid?.price?.amount?.decimal) {\r\n      setBidAmountPerUnit(bid?.price?.amount?.decimal.toString())\r\n    }\r\n    if (bid?.quantityRemaining && bid?.quantityRemaining > 1) {\r\n      setQuantity(bid?.quantityRemaining)\r\n    }\r\n    //@ts-ignore\r\n    if (bid?.criteria?.kind == 'attribute' && bid?.criteria?.data.attribute) {\r\n      //@ts-ignore\r\n      setTrait(bid?.criteria?.data?.attribute)\r\n    }\r\n  }, [bid])\r\n\r\n  const coinConversion = useCoinConversion(\r\n    open && bid ? 'USD' : undefined,\r\n    wrappedContractName\r\n  )\r\n  const usdPrice = coinConversion.length > 0 ? coinConversion[0].price : null\r\n\r\n  const totalBidAmount = Number(bidAmountPerUnit) * Math.max(1, quantity)\r\n  const totalBidAmountUsd = totalBidAmount * (usdPrice || 0)\r\n\r\n  const { address } = useAccount()\r\n  const { data: balance } = useBalance({\r\n    address: address,\r\n    chainId: rendererChain?.id,\r\n    query: {\r\n      enabled: open,\r\n    },\r\n  })\r\n\r\n  const { data: wrappedBalance } = useReadContracts({\r\n    allowFailure: false,\r\n    contracts: [\r\n      {\r\n        address: wrappedContractAddress as Address,\r\n        abi: erc20Abi,\r\n        functionName: 'balanceOf',\r\n        chainId: rendererChain?.id,\r\n        args: [address as Address],\r\n      },\r\n      {\r\n        address: wrappedContractAddress as Address,\r\n        abi: erc20Abi,\r\n        functionName: 'decimals',\r\n        chainId: rendererChain?.id,\r\n      },\r\n      {\r\n        address: wrappedContractAddress as Address,\r\n        abi: erc20Abi,\r\n        functionName: 'symbol',\r\n        chainId: rendererChain?.id,\r\n      },\r\n    ],\r\n    query: {\r\n      enabled: Boolean(open && address !== undefined),\r\n    },\r\n  })\r\n\r\n  const canAutomaticallyConvert =\r\n    !currency || currency.contract === nativeWrappedContractAddress\r\n  let convertLink: string = ''\r\n\r\n  if (canAutomaticallyConvert) {\r\n    convertLink =\r\n      wagmiChain?.id === mainnet.id || wagmiChain?.id === goerli.id\r\n        ? `https://app.uniswap.org/#/swap?theme=dark&exactAmount=${amountToWrap}&chain=mainnet&inputCurrency=eth&outputCurrency=${wrappedContractAddress}`\r\n        : `https://app.uniswap.org/#/swap?theme=dark&exactAmount=${amountToWrap}`\r\n  } else {\r\n    convertLink = `https://jumper.exchange/?toChain=${wagmiChain?.id}&toToken=${wrappedContractAddress}`\r\n  }\r\n\r\n  const isTokenBid = bid?.criteria?.kind == 'token'\r\n\r\n  const { data: traits } = useAttributes(\r\n    open && !isTokenBid ? collectionId : undefined,\r\n    rendererChain?.id\r\n  )\r\n\r\n  const { data: collections } = useCollections(\r\n    open && {\r\n      id: collectionId,\r\n      normalizeRoyalties,\r\n    },\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n  const collection = collections && collections[0] ? collections[0] : undefined\r\n  let royaltyBps = collection?.royalties?.bps\r\n\r\n  const { data: tokens } = useTokens(\r\n    open && contract && tokenId\r\n      ? {\r\n          tokens: [`${contract}:${tokenId}`],\r\n          includeAttributes: true,\r\n          normalizeRoyalties,\r\n        }\r\n      : false,\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    rendererChain?.id\r\n  )\r\n\r\n  const token = tokens && tokens.length > 0 ? tokens[0] : undefined\r\n\r\n  useEffect(() => {\r\n    if (totalBidAmount !== 0) {\r\n      const bid = parseUnits(`${totalBidAmount}`, wrappedBalance?.[1] || 18)\r\n\r\n      if (!wrappedBalance?.[0] || wrappedBalance?.[0] < bid) {\r\n        setHasEnoughWrappedCurrency(false)\r\n        const wrappedAmount = wrappedBalance?.[0] || 0n\r\n        const amountToWrap = bid - wrappedAmount\r\n        setAmountToWrap(formatBN(amountToWrap, 5))\r\n\r\n        if (!balance?.value || balance.value < amountToWrap) {\r\n          setHasEnoughNativeCurrency(false)\r\n        } else {\r\n          setHasEnoughNativeCurrency(true)\r\n        }\r\n      } else {\r\n        setHasEnoughWrappedCurrency(true)\r\n        setHasEnoughNativeCurrency(true)\r\n        setAmountToWrap('')\r\n      }\r\n    } else {\r\n      setHasEnoughNativeCurrency(true)\r\n      setHasEnoughWrappedCurrency(true)\r\n      setAmountToWrap('')\r\n    }\r\n  }, [totalBidAmount, balance, wrappedBalance])\r\n\r\n  useEffect(() => {\r\n    const validAttributes = traits\r\n      ? traits.filter(\r\n          (attribute) => attribute.values && attribute.values.length > 0\r\n        )\r\n      : undefined\r\n    setAttributes(validAttributes)\r\n  }, [traits])\r\n\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setEditBidStep(EditBidStep.Edit)\r\n      setExpirationOption(expirationOptions[3])\r\n      setHasEnoughNativeCurrency(false)\r\n      setHasEnoughWrappedCurrency(false)\r\n      setAmountToWrap('')\r\n      setBidAmountPerUnit('')\r\n      setStepData(null)\r\n      setTransactionError(null)\r\n      setTrait(undefined)\r\n    } else {\r\n      setTrait(attribute)\r\n    }\r\n  }, [open])\r\n\r\n  open\r\n    ? (axios.defaults.headers.common['x-rkui-context'] = 'editBidModalRenderer')\r\n    : delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  const editBid = useCallback(async () => {\r\n    if (!wallet) {\r\n      const error = new Error('Missing a wallet/signer')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    let activeWalletChain = getAccount(config).chain\r\n    if (rendererChain?.id !== activeWalletChain?.id) {\r\n      activeWalletChain = await switchChain(config, {\r\n        chainId: rendererChain?.id as number,\r\n      })\r\n    }\r\n\r\n    if (rendererChain?.id !== activeWalletChain?.id) {\r\n      const error = new Error(`Mismatching chainIds`)\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!client) {\r\n      const error = new Error('ReservoirClient was not initialized')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!bidId) {\r\n      const error = new Error('Missing bid id to edit')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!isOracleOrder) {\r\n      const error = new Error('Not an oracle powered offer')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!exchange) {\r\n      const error = new Error('Missing Exchange')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    setTransactionError(null)\r\n\r\n    let expirationTime: string | null = null\r\n\r\n    if (expirationOption.relativeTime && expirationOption.relativeTimeUnit) {\r\n      expirationTime = dayjs()\r\n        .add(expirationOption.relativeTime, expirationOption.relativeTimeUnit)\r\n        .unix()\r\n        .toString()\r\n    }\r\n\r\n    const atomicBidAmount = parseUnits(\r\n      `${totalBidAmount}`,\r\n      currency?.decimals || 18\r\n    ).toString()\r\n\r\n    const bid: BidData = {\r\n      weiPrice: atomicBidAmount,\r\n      orderbook: 'reservoir',\r\n      orderKind: exchange.orderKind as any,\r\n      attributeKey: trait?.key,\r\n      attributeValue: trait?.value,\r\n    }\r\n\r\n    if (isTokenBid && tokenId && collectionId) {\r\n      const contract = collectionId ? collectionId?.split(':')[0] : undefined\r\n      bid.token = `${contract}:${tokenId}`\r\n    } else if (collectionId) {\r\n      bid.collection = collectionId\r\n    }\r\n\r\n    if (nativeWrappedContractAddress != wrappedContractAddress) {\r\n      bid.currency = wrappedContractAddress\r\n    }\r\n\r\n    if (expirationTime) {\r\n      bid.expirationTime = expirationTime\r\n    }\r\n\r\n    if (quantity > 1) {\r\n      bid.quantity = quantity\r\n    }\r\n\r\n    bid.options = {\r\n      [exchange.orderKind as string]: {\r\n        useOffChainCancellation: true,\r\n        replaceOrderId: bidId,\r\n      },\r\n    }\r\n\r\n    setEditBidStep(EditBidStep.Approving)\r\n\r\n    client.actions\r\n      .placeBid({\r\n        chainId: rendererChain?.id,\r\n        bids: [bid],\r\n        wallet,\r\n        onProgress: (steps: Execute['steps']) => {\r\n          if (!steps) {\r\n            return\r\n          }\r\n          setSteps(steps)\r\n\r\n          const executableSteps = steps.filter(\r\n            (step) => step.items && step.items.length > 0\r\n          )\r\n\r\n          let stepCount = executableSteps.length\r\n\r\n          let currentStepItem:\r\n            | NonNullable<Execute['steps'][0]['items']>[0]\r\n            | undefined\r\n\r\n          const currentStepIndex = executableSteps.findIndex((step) => {\r\n            currentStepItem = step.items?.find(\r\n              (item) => item.status === 'incomplete'\r\n            )\r\n            return currentStepItem\r\n          })\r\n\r\n          const currentStep =\r\n            currentStepIndex > -1\r\n              ? executableSteps[currentStepIndex]\r\n              : executableSteps[stepCount - 1]\r\n\r\n          if (currentStepItem) {\r\n            setStepData({\r\n              totalSteps: stepCount,\r\n              stepProgress: currentStepIndex,\r\n              currentStep,\r\n              currentStepItem,\r\n            })\r\n          } else if (\r\n            steps.every(\r\n              (step) =>\r\n                !step.items ||\r\n                step.items.length == 0 ||\r\n                step.items?.every((item) => item.status === 'complete')\r\n            )\r\n          ) {\r\n            setEditBidStep(EditBidStep.Complete)\r\n          }\r\n        },\r\n      })\r\n      .catch((error: Error) => {\r\n        setTransactionError(error)\r\n        setEditBidStep(EditBidStep.Edit)\r\n        setStepData(null)\r\n        setSteps(null)\r\n      })\r\n  }, [\r\n    config,\r\n    client,\r\n    wallet,\r\n    collectionId,\r\n    tokenId,\r\n    rendererChain,\r\n    expirationOption,\r\n    trait,\r\n    totalBidAmount,\r\n    quantity,\r\n    wrappedBalance,\r\n    wrappedContractAddress,\r\n    nativeWrappedContractAddress,\r\n    exchange,\r\n  ])\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        loading: !bid || !collection,\r\n        bid,\r\n        attributes,\r\n        trait,\r\n        tokenId,\r\n        contract,\r\n        isOracleOrder,\r\n        isTokenBid,\r\n        quantity,\r\n        bidAmountPerUnit,\r\n        totalBidAmount,\r\n        totalBidAmountUsd,\r\n        token,\r\n        currency,\r\n        collection,\r\n        editBidStep,\r\n        transactionError,\r\n        hasEnoughNativeCurrency,\r\n        hasEnoughWrappedCurrency,\r\n        balance,\r\n        wrappedBalance,\r\n        wrappedContractName,\r\n        wrappedContractAddress,\r\n        amountToWrap,\r\n        convertLink,\r\n        canAutomaticallyConvert,\r\n        royaltyBps,\r\n        expirationOptions,\r\n        expirationOption,\r\n        usdPrice,\r\n        steps,\r\n        stepData,\r\n        exchange,\r\n        traitBidSupported,\r\n        partialBidSupported,\r\n        collectionBidSupported,\r\n        setQuantity,\r\n        setTrait,\r\n        setBidAmountPerUnit,\r\n        setExpirationOption,\r\n        setEditBidStep,\r\n        editBid,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n","import { useFallbackState, useReservoirClient, useTimeSince } from '../../hooks'\r\nimport React, {\r\n  ReactElement,\r\n  Dispatch,\r\n  SetStateAction,\r\n  useEffect,\r\n  ComponentPropsWithoutRef,\r\n} from 'react'\r\nimport {\r\n  Flex,\r\n  Text,\r\n  Box,\r\n  Button,\r\n  Loader,\r\n  Select,\r\n  ErrorWell,\r\n} from '../../primitives'\r\nimport {\r\n  EditListingModalRenderer,\r\n  EditListingStep,\r\n} from './EditListingModalRenderer'\r\nimport { Modal } from '../Modal'\r\nimport TokenPrimitive from '../TokenPrimitive'\r\nimport Progress from '../Progress'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport faCheckCircle from '@fortawesome/free-solid-svg-icons/faCheckCircle'\r\nimport PriceInput from '../../primitives/PriceInput'\r\nimport InfoTooltip from '../../primitives/InfoTooltip'\r\nimport { WalletClient, formatUnits, zeroAddress } from 'viem'\r\nimport { ReservoirWallet } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { formatNumber } from '../../lib/numbers'\r\nimport { Dialog } from '../../primitives/Dialog'\r\n\r\nconst ModalCopy = {\r\n  title: 'Edit Listing',\r\n  ctaClose: 'Close',\r\n  ctaConfirm: 'Confirm',\r\n  ctaConvertManually: 'Convert Manually',\r\n  ctaConvertAutomatically: '',\r\n  ctaAwaitingApproval: 'Waiting for approval...',\r\n  ctaAwaitingValidation: 'Waiting for transaction to be validated',\r\n}\r\n\r\ntype Props = Pick<Parameters<typeof Modal>['0'], 'trigger'> & {\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  listingId?: string\r\n  tokenId?: string\r\n  collectionId?: string\r\n  chainId?: number\r\n  normalizeRoyalties?: boolean\r\n  copyOverrides?: Partial<typeof ModalCopy>\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  onClose?: (data: any, currentStep: EditListingStep) => void\r\n  onEditListingComplete?: (data: any) => void\r\n  onEditListingError?: (error: Error, data: any) => void\r\n  onPointerDownOutside?: ComponentPropsWithoutRef<\r\n    typeof Dialog\r\n  >['onPointerDownOutside']\r\n}\r\n\r\nconst MINIMUM_AMOUNT = 0.000001\r\nconst MAXIMUM_AMOUNT = Infinity\r\n\r\nexport function EditListingModal({\r\n  openState,\r\n  listingId,\r\n  tokenId,\r\n  collectionId,\r\n  chainId,\r\n  trigger,\r\n  normalizeRoyalties,\r\n  copyOverrides,\r\n  walletClient,\r\n  onClose,\r\n  onEditListingComplete,\r\n  onEditListingError,\r\n  onPointerDownOutside,\r\n}: Props): ReactElement {\r\n  const copy: typeof ModalCopy = { ...ModalCopy, ...copyOverrides }\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const modalChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  return (\r\n    <EditListingModalRenderer\r\n      listingId={listingId}\r\n      chainId={modalChain?.id}\r\n      tokenId={tokenId}\r\n      collectionId={collectionId}\r\n      open={open}\r\n      normalizeRoyalties={normalizeRoyalties}\r\n      walletClient={walletClient}\r\n    >\r\n      {({\r\n        loading,\r\n        listing,\r\n        token,\r\n        price,\r\n        currency,\r\n        isOracleOrder,\r\n        quantityAvailable,\r\n        collection,\r\n        quantity,\r\n        expirationOption,\r\n        expirationOptions,\r\n        editListingStep,\r\n        transactionError,\r\n        usdPrice,\r\n        totalUsd,\r\n        royaltyBps,\r\n        stepData,\r\n        exchange,\r\n        setPrice,\r\n        setQuantity,\r\n        setExpirationOption,\r\n        editListing,\r\n      }) => {\r\n        const expires = useTimeSince(listing?.expiration)\r\n\r\n        const profit =\r\n          (1 - (royaltyBps || 0) * 0.0001) * (price || 0) * quantity\r\n        100\r\n\r\n        const updatedTotalUsd = profit * usdPrice\r\n\r\n        useEffect(() => {\r\n          if (\r\n            editListingStep === EditListingStep.Complete &&\r\n            onEditListingComplete\r\n          ) {\r\n            const data = {\r\n              listing,\r\n              stepData: stepData,\r\n            }\r\n            onEditListingComplete(data)\r\n          }\r\n        }, [editListingStep])\r\n\r\n        useEffect(() => {\r\n          if (transactionError && onEditListingError) {\r\n            const data = {\r\n              listing,\r\n              stepData: stepData,\r\n            }\r\n            onEditListingError(transactionError, data)\r\n          }\r\n        }, [transactionError])\r\n\r\n        const isListingAvailable =\r\n          listing &&\r\n          (listing.status === 'active' || listing.status === 'inactive') &&\r\n          !loading\r\n\r\n        const isListingEditable =\r\n          listing && listing.status === 'active' && !loading && isOracleOrder\r\n\r\n        const minimumAmount = exchange?.minPriceRaw\r\n          ? Number(\r\n              formatUnits(\r\n                BigInt(exchange.minPriceRaw),\r\n                currency?.decimals || 18\r\n              )\r\n            )\r\n          : MINIMUM_AMOUNT\r\n        const maximumAmount = exchange?.maxPriceRaw\r\n          ? Number(\r\n              formatUnits(\r\n                BigInt(exchange.maxPriceRaw),\r\n                currency?.decimals || 18\r\n              )\r\n            )\r\n          : MAXIMUM_AMOUNT\r\n        const withinPricingBounds =\r\n          price !== 0 &&\r\n          Number(price) <= maximumAmount &&\r\n          Number(price) >= minimumAmount\r\n\r\n        const canPurchase = price && price !== 0 && withinPricingBounds\r\n\r\n        return (\r\n          <Modal\r\n            trigger={trigger}\r\n            title={copy.title}\r\n            open={open}\r\n            onOpenChange={(open) => {\r\n              if (!open && onClose) {\r\n                const data = {\r\n                  listing,\r\n                  stepData: stepData,\r\n                }\r\n                onClose(data, editListingStep)\r\n              }\r\n              setOpen(open)\r\n            }}\r\n            loading={loading}\r\n            onPointerDownOutside={(e) => {\r\n              if (onPointerDownOutside) {\r\n                onPointerDownOutside(e)\r\n              }\r\n            }}\r\n          >\r\n            {!isListingAvailable && !loading && (\r\n              <Flex\r\n                direction=\"column\"\r\n                justify=\"center\"\r\n                css={{ px: '$4', py: '$6' }}\r\n              >\r\n                <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                  Selected listing is no longer available\r\n                </Text>\r\n              </Flex>\r\n            )}\r\n            {!isListingEditable && isListingAvailable && (\r\n              <Flex\r\n                direction=\"column\"\r\n                justify=\"center\"\r\n                css={{ px: '$4', py: '$6' }}\r\n              >\r\n                <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                  Selected listing is not an oracle order, so cannot be edited.\r\n                </Text>\r\n              </Flex>\r\n            )}\r\n            {isListingEditable && editListingStep === EditListingStep.Edit && (\r\n              <Flex direction=\"column\">\r\n                {transactionError && <ErrorWell error={transactionError} />}\r\n                <Box css={{ p: '$4', borderBottom: '1px solid $borderColor' }}>\r\n                  <TokenPrimitive\r\n                    chain={modalChain}\r\n                    img={token?.token?.imageSmall}\r\n                    name={listing.criteria?.data?.token?.name}\r\n                    price={listing?.price?.amount?.decimal}\r\n                    priceSubtitle=\"Price\"\r\n                    royaltiesBps={royaltyBps}\r\n                    usdPrice={totalUsd}\r\n                    collection={listing.criteria?.data?.collection?.name || ''}\r\n                    currencyContract={listing.price?.currency?.contract}\r\n                    currencyDecimals={listing?.price?.currency?.decimals}\r\n                    currencySymbol={listing?.price?.currency?.symbol}\r\n                    expires={expires}\r\n                    source={(listing?.source?.icon as string) || ''}\r\n                    quantity={listing?.quantityRemaining}\r\n                  />\r\n                </Box>\r\n                <Flex direction=\"column\" css={{ px: '$4', py: '$2' }}>\r\n                  {quantityAvailable > 1 && (\r\n                    <>\r\n                      <Box css={{ mb: '$2' }}>\r\n                        <Text\r\n                          as=\"div\"\r\n                          css={{ mb: '$2' }}\r\n                          style=\"subtitle3\"\r\n                          color=\"subtle\"\r\n                        >\r\n                          Quantity\r\n                        </Text>\r\n                        <Select\r\n                          value={`${quantity}`}\r\n                          onValueChange={(value: string) => {\r\n                            setQuantity(Number(value))\r\n                          }}\r\n                        >\r\n                          {[...Array(quantityAvailable)].map((_a, i) => (\r\n                            <Select.Item key={i} value={`${i + 1}`}>\r\n                              <Select.ItemText>{i + 1}</Select.ItemText>\r\n                            </Select.Item>\r\n                          ))}\r\n                        </Select>\r\n                      </Box>\r\n                      <Text\r\n                        style=\"body3\"\r\n                        css={{ mb: 24, display: 'inline-block' }}\r\n                      >\r\n                        {quantityAvailable} items available\r\n                      </Text>\r\n                    </>\r\n                  )}\r\n                  <Flex css={{ mb: '$2' }} justify=\"between\">\r\n                    <Text style=\"subtitle3\" color=\"subtle\" as=\"p\">\r\n                      Set New Price\r\n                    </Text>\r\n                    <Flex css={{ alignItems: 'center', gap: 8 }}>\r\n                      <Text style=\"subtitle3\" color=\"subtle\" as=\"p\">\r\n                        You Get\r\n                      </Text>\r\n                      <InfoTooltip\r\n                        side=\"left\"\r\n                        width={200}\r\n                        content={`How much ${currency?.symbol} you will receive after creator royalties are subtracted.`}\r\n                      />\r\n                    </Flex>\r\n                  </Flex>\r\n                  <Flex direction=\"column\" css={{ gap: '$2' }}>\r\n                    <PriceInput\r\n                      chainId={modalChain?.id}\r\n                      price={price}\r\n                      collection={collection}\r\n                      currency={currency}\r\n                      usdPrice={usdPrice}\r\n                      quantity={quantity}\r\n                      placeholder={'Enter a listing price'}\r\n                      onChange={(e) => {\r\n                        if (e.target.value === '') {\r\n                          setPrice(undefined)\r\n                        } else {\r\n                          setPrice(Number(e.target.value))\r\n                        }\r\n                      }}\r\n                      onBlur={() => {\r\n                        if (price === undefined) {\r\n                          setPrice(0)\r\n                        }\r\n                      }}\r\n                    />\r\n                    {price && price !== 0 && !withinPricingBounds && (\r\n                      <Box>\r\n                        <Text style=\"body3\" color=\"error\">\r\n                          {maximumAmount !== Infinity\r\n                            ? `Amount must be between ${formatNumber(\r\n                                minimumAmount\r\n                              )} - ${formatNumber(maximumAmount)}`\r\n                            : `Amount must be higher than ${formatNumber(\r\n                                minimumAmount\r\n                              )}`}\r\n                        </Text>\r\n                      </Box>\r\n                    )}\r\n\r\n                    {collection &&\r\n                      collection?.floorAsk?.price?.amount?.native !==\r\n                        undefined &&\r\n                      canPurchase &&\r\n                      currency?.contract === zeroAddress &&\r\n                      price < collection?.floorAsk?.price.amount.native && (\r\n                        <Box>\r\n                          <Text style=\"body3\" color=\"error\">\r\n                            Price is{' '}\r\n                            {Math.round(\r\n                              ((collection.floorAsk.price.amount.native -\r\n                                price) /\r\n                                ((collection.floorAsk.price.amount.native +\r\n                                  price) /\r\n                                  2)) *\r\n                                100 *\r\n                                1000\r\n                            ) / 1000}\r\n                            % below the floor\r\n                          </Text>\r\n                        </Box>\r\n                      )}\r\n                  </Flex>\r\n                  <Box css={{ mb: '$3', mt: '$4' }}>\r\n                    <Text\r\n                      as=\"div\"\r\n                      css={{ mb: '$2' }}\r\n                      style=\"subtitle3\"\r\n                      color=\"subtle\"\r\n                    >\r\n                      Expiration Date\r\n                    </Text>\r\n                    <Select\r\n                      value={expirationOption?.text || ''}\r\n                      onValueChange={(value: string) => {\r\n                        const option = expirationOptions.find(\r\n                          (option) => option.value == value\r\n                        )\r\n                        if (option) {\r\n                          setExpirationOption(option)\r\n                        }\r\n                      }}\r\n                    >\r\n                      {expirationOptions\r\n                        .filter(({ value }) => value !== 'custom')\r\n                        .map((option) => (\r\n                          <Select.Item key={option.text} value={option.value}>\r\n                            <Select.ItemText>{option.text}</Select.ItemText>\r\n                          </Select.Item>\r\n                        ))}\r\n                    </Select>\r\n                  </Box>\r\n                  <Flex\r\n                    css={{\r\n                      gap: '$3',\r\n                      py: '$3',\r\n                    }}\r\n                  >\r\n                    <Button\r\n                      onClick={() => {\r\n                        setOpen(false)\r\n                      }}\r\n                      color=\"secondary\"\r\n                      css={{ flex: 1 }}\r\n                    >\r\n                      {copy.ctaClose}\r\n                    </Button>\r\n                    <Button\r\n                      disabled={!canPurchase}\r\n                      onClick={editListing}\r\n                      css={{ flex: 1 }}\r\n                    >\r\n                      {copy.ctaConfirm}\r\n                    </Button>\r\n                  </Flex>\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n            {editListingStep === EditListingStep.Approving && (\r\n              <Flex direction=\"column\">\r\n                <Box css={{ p: '$4', borderBottom: '1px solid $borderColor' }}>\r\n                  <TokenPrimitive\r\n                    chain={modalChain}\r\n                    img={token?.token?.imageSmall}\r\n                    name={token?.token?.name}\r\n                    price={profit}\r\n                    usdPrice={updatedTotalUsd}\r\n                    collection={collection?.name || ''}\r\n                    currencyContract={listing?.price?.currency?.contract}\r\n                    currencyDecimals={listing?.price?.currency?.decimals}\r\n                    currencySymbol={listing?.price?.currency?.symbol}\r\n                    expires={`in ${expirationOption.text.toLowerCase()}`}\r\n                    source={(listing?.source?.icon as string) || ''}\r\n                    quantity={quantity}\r\n                  />\r\n                </Box>\r\n                {!stepData && <Loader css={{ height: 206 }} />}\r\n                {stepData && (\r\n                  <>\r\n                    <Progress\r\n                      title={\r\n                        stepData?.currentStepItem.txHashes\r\n                          ? 'Finalizing on blockchain'\r\n                          : 'Approve Reservoir Oracle to update the listing'\r\n                      }\r\n                      txHashes={stepData?.currentStepItem?.txHashes}\r\n                    />\r\n                  </>\r\n                )}\r\n                <Button disabled={true} css={{ m: '$4' }}>\r\n                  <Loader />\r\n                  {stepData?.currentStepItem?.txHashes\r\n                    ? copy.ctaAwaitingValidation\r\n                    : copy.ctaAwaitingApproval}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n            {editListingStep === EditListingStep.Complete && (\r\n              <Flex direction=\"column\" align=\"center\" css={{ width: '100%' }}>\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{\r\n                    p: '$4',\r\n                    py: '$5',\r\n                    textAlign: 'center',\r\n                  }}\r\n                >\r\n                  <Box css={{ color: '$successAccent', mb: 24 }}>\r\n                    <FontAwesomeIcon icon={faCheckCircle} size=\"3x\" />\r\n                  </Box>\r\n                  <Text style=\"h5\" css={{ mb: '$4' }}>\r\n                    Listing Updated!\r\n                  </Text>\r\n                  <Text style=\"body2\" color=\"subtle\" css={{ mb: 24 }}>\r\n                    Your listing for{' '}\r\n                    <Text style=\"body2\" color=\"base\">\r\n                      {token?.token?.name}\r\n                    </Text>{' '}\r\n                    has been updated.\r\n                  </Text>\r\n                </Flex>\r\n                <Button\r\n                  onClick={() => {\r\n                    setOpen(false)\r\n                  }}\r\n                  css={{ m: '$4' }}\r\n                >\r\n                  {copy.ctaClose}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n          </Modal>\r\n        )\r\n      }}\r\n    </EditListingModalRenderer>\r\n  )\r\n}\r\n\r\nEditListingModal.Custom = EditListingModalRenderer\r\n","import React, {\r\n  FC,\r\n  useEffect,\r\n  useState,\r\n  useCallback,\r\n  ReactNode,\r\n  useMemo,\r\n} from 'react'\r\nimport {\r\n  useCoinConversion,\r\n  useReservoirClient,\r\n  useListings,\r\n  useTokens,\r\n  useUserTokens,\r\n  useCollections,\r\n  useMarketplaces,\r\n} from '../../hooks'\r\nimport { useWalletClient, useAccount, useConfig } from 'wagmi'\r\nimport { Execute, ReservoirWallet, axios } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { ExpirationOption } from '../../types/ExpirationOption'\r\nimport expirationOptions from '../../lib/defaultExpirationOptions'\r\nimport dayjs from 'dayjs'\r\nimport { Listing } from '../list/ListModalRenderer'\r\nimport { WalletClient, parseUnits, zeroAddress } from 'viem'\r\nimport { getAccount, switchChain } from 'wagmi/actions'\r\nimport { Marketplace } from '../../hooks/useMarketplaces'\r\n\r\ntype Exchange = NonNullable<Marketplace['exchanges']>['string']\r\n\r\nexport enum EditListingStep {\r\n  Edit,\r\n  Approving,\r\n  Complete,\r\n}\r\n\r\nexport type EditListingStepData = {\r\n  totalSteps: number\r\n  stepProgress: number\r\n  currentStep: Execute['steps'][0]\r\n  currentStepItem: NonNullable<Execute['steps'][0]['items']>[0]\r\n}\r\n\r\ntype ChildrenProps = {\r\n  loading: boolean\r\n  listing?: NonNullable<ReturnType<typeof useListings>['data']>[0]\r\n  tokenId?: string\r\n  contract?: string\r\n  isOracleOrder: boolean\r\n  price: number | undefined\r\n  token?: NonNullable<NonNullable<ReturnType<typeof useTokens>>['data']>[0]\r\n  currency: NonNullable<\r\n    NonNullable<ReturnType<typeof useListings>['data']>[0]['price']\r\n  >['currency']\r\n  quantityAvailable: number\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  quantity: number\r\n  editListingStep: EditListingStep\r\n  transactionError?: Error | null\r\n  totalUsd: number\r\n  royaltyBps?: number\r\n  expirationOptions: ExpirationOption[]\r\n  expirationOption: ExpirationOption\r\n  usdPrice: number\r\n  steps: Execute['steps'] | null\r\n  stepData: EditListingStepData | null\r\n  exchange?: Exchange\r\n  setPrice: React.Dispatch<React.SetStateAction<number | undefined>>\r\n  setQuantity: React.Dispatch<React.SetStateAction<number>>\r\n  setExpirationOption: React.Dispatch<React.SetStateAction<ExpirationOption>>\r\n  setEditListingStep: React.Dispatch<React.SetStateAction<EditListingStep>>\r\n  editListing: () => void\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  listingId?: string\r\n  tokenId?: string\r\n  collectionId?: string\r\n  chainId?: number\r\n  normalizeRoyalties?: boolean\r\n  children: (props: ChildrenProps) => ReactNode\r\n  walletClient?: ReservoirWallet | WalletClient\r\n}\r\n\r\nexport const EditListingModalRenderer: FC<Props> = ({\r\n  open,\r\n  listingId,\r\n  tokenId,\r\n  collectionId,\r\n  chainId,\r\n  normalizeRoyalties,\r\n  children,\r\n  walletClient,\r\n}) => {\r\n  const client = useReservoirClient()\r\n  const currentChain = client?.currentChain()\r\n  const config = useConfig()\r\n\r\n  const rendererChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const { data: wagmiWalletClient } = useWalletClient({\r\n    chainId: rendererChain?.id,\r\n  })\r\n  const wallet = walletClient || wagmiWalletClient\r\n  const account = useAccount()\r\n  const [editListingStep, setEditListingStep] = useState<EditListingStep>(\r\n    EditListingStep.Edit\r\n  )\r\n  const [transactionError, setTransactionError] = useState<Error | null>()\r\n  const [stepData, setStepData] = useState<EditListingStepData | null>(null)\r\n  const [steps, setSteps] = useState<Execute['steps'] | null>(null)\r\n  const [price, setPrice] = useState<number | undefined>(0)\r\n  const [quantity, setQuantity] = useState(1)\r\n\r\n  const { data: listings } = useListings(\r\n    {\r\n      ids: listingId,\r\n      normalizeRoyalties,\r\n      includeCriteriaMetadata: true,\r\n      includeRawData: true,\r\n    },\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    open && listingId ? true : false,\r\n    rendererChain?.id\r\n  )\r\n\r\n  const listing = listings && listings[0] ? listings[0] : undefined\r\n  const contract =\r\n    listing?.tokenSetId?.split(':')[1] || collectionId?.split(':')[0]\r\n  const currency = listing?.price?.currency\r\n\r\n  const [allMarketplaces] = useMarketplaces(\r\n    collectionId,\r\n    tokenId,\r\n    undefined,\r\n    undefined,\r\n    rendererChain?.id,\r\n    open\r\n  )\r\n\r\n  const reservoirMarketplace = useMemo(\r\n    () =>\r\n      allMarketplaces.find(\r\n        (marketplace) => marketplace.orderbook === 'reservoir'\r\n      ),\r\n    [allMarketplaces]\r\n  )\r\n\r\n  const exchange = useMemo(() => {\r\n    const exchanges: Record<string, Exchange> =\r\n      reservoirMarketplace?.exchanges || {}\r\n    const exchange = Object.values(exchanges).find(\r\n      (exchange) => exchange?.orderKind === listing?.kind\r\n    )\r\n    return exchange?.enabled ? exchange : undefined\r\n  }, [reservoirMarketplace, listing])\r\n\r\n  const isOracleOrder = listing?.isNativeOffChainCancellable as boolean\r\n\r\n  useEffect(() => {\r\n    if (listing?.price?.amount?.decimal) {\r\n      setPrice(listing?.price?.amount?.decimal)\r\n    }\r\n  }, [listing?.price])\r\n\r\n  const coinConversion = useCoinConversion(\r\n    open && listing ? 'USD' : undefined,\r\n    currency?.symbol\r\n  )\r\n  const usdPrice = coinConversion.length > 0 ? coinConversion[0].price : 0\r\n  const totalUsd = usdPrice * (listing?.price?.amount?.decimal || 0)\r\n\r\n  const [expirationOption, setExpirationOption] = useState<ExpirationOption>(\r\n    expirationOptions[5]\r\n  )\r\n\r\n  const { data: collections } = useCollections(\r\n    open && {\r\n      id: collectionId,\r\n      normalizeRoyalties,\r\n    },\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n  const collection = collections && collections[0] ? collections[0] : undefined\r\n  const royaltyBps = collection?.royalties?.bps\r\n    ? collection?.royalties?.bps\r\n    : reservoirMarketplace?.royalties?.maxBps\r\n    ? reservoirMarketplace?.royalties?.maxBps\r\n    : 0\r\n\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setEditListingStep(EditListingStep.Edit)\r\n      setTransactionError(null)\r\n      setStepData(null)\r\n      setExpirationOption(expirationOptions[5])\r\n      setQuantity(1)\r\n    }\r\n  }, [open])\r\n\r\n  const { data: tokens } = useTokens(\r\n    open && contract && tokenId\r\n      ? {\r\n          tokens: [`${contract}:${tokenId}`],\r\n          includeAttributes: true,\r\n          normalizeRoyalties,\r\n        }\r\n      : false,\r\n    {\r\n      revalidateFirstPage: true,\r\n    },\r\n    rendererChain?.id\r\n  )\r\n\r\n  const token = tokens && tokens.length > 0 ? tokens[0] : undefined\r\n  const is1155 = token?.token?.kind === 'erc1155'\r\n\r\n  const { data: userTokens } = useUserTokens(\r\n    open && is1155 ? account.address : undefined,\r\n    {\r\n      tokens: [`${contract}:${tokenId}`],\r\n    },\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n\r\n  const quantityAvailable =\r\n    is1155 && userTokens[0]\r\n      ? Number(userTokens[0].ownership?.tokenCount || 1)\r\n      : 1\r\n\r\n  const editListing = useCallback(async () => {\r\n    if (!wallet) {\r\n      const error = new Error('Missing a wallet/signer')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    let activeWalletChain = getAccount(config).chain\r\n    if (rendererChain?.id !== activeWalletChain?.id) {\r\n      activeWalletChain = await switchChain(config, {\r\n        chainId: rendererChain?.id as number,\r\n      })\r\n    }\r\n\r\n    if (rendererChain?.id !== activeWalletChain?.id) {\r\n      const error = new Error(`Mismatching chainIds`)\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!client) {\r\n      const error = new Error('ReservoirClient was not initialized')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!listingId) {\r\n      const error = new Error('Missing list id to edit')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!isOracleOrder) {\r\n      const error = new Error('Not an oracle order')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!exchange) {\r\n      const error = new Error('Missing Exchange')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    setTransactionError(null)\r\n\r\n    let expirationTime: string | null = null\r\n\r\n    if (expirationOption.relativeTime && expirationOption.relativeTimeUnit) {\r\n      expirationTime = dayjs()\r\n        .add(expirationOption.relativeTime, expirationOption.relativeTimeUnit)\r\n        .unix()\r\n        .toString()\r\n    }\r\n\r\n    const listing: Listing = {\r\n      token: `${contract}:${tokenId}`,\r\n      weiPrice: (\r\n        parseUnits(`${price as number}`, currency?.decimals || 18) *\r\n        BigInt(quantity)\r\n      ).toString(),\r\n      orderbook: 'reservoir',\r\n      orderKind: exchange.orderKind as any,\r\n    }\r\n\r\n    if (quantity > 1) {\r\n      listing.quantity = quantity\r\n    }\r\n\r\n    if (expirationTime) {\r\n      listing.expirationTime = expirationTime\r\n    }\r\n\r\n    if (currency && currency.contract != zeroAddress) {\r\n      listing.currency = currency.contract\r\n    }\r\n\r\n    listing.options = {\r\n      [exchange.orderKind as string]: {\r\n        useOffChainCancellation: true,\r\n        replaceOrderId: listingId,\r\n      },\r\n    }\r\n\r\n    setEditListingStep(EditListingStep.Approving)\r\n\r\n    client.actions\r\n      .listToken({\r\n        chainId: rendererChain?.id,\r\n        listings: [listing],\r\n        wallet,\r\n        onProgress: (steps: Execute['steps']) => {\r\n          if (!steps) {\r\n            return\r\n          }\r\n          setSteps(steps)\r\n\r\n          const executableSteps = steps.filter(\r\n            (step) => step.items && step.items.length > 0\r\n          )\r\n\r\n          let stepCount = executableSteps.length\r\n\r\n          let currentStepItem:\r\n            | NonNullable<Execute['steps'][0]['items']>[0]\r\n            | undefined\r\n\r\n          const currentStepIndex = executableSteps.findIndex((step) => {\r\n            currentStepItem = step.items?.find(\r\n              (item) => item.status === 'incomplete'\r\n            )\r\n            return currentStepItem\r\n          })\r\n\r\n          const currentStep =\r\n            currentStepIndex > -1\r\n              ? executableSteps[currentStepIndex]\r\n              : executableSteps[stepCount - 1]\r\n\r\n          if (currentStepItem) {\r\n            setStepData({\r\n              totalSteps: stepCount,\r\n              stepProgress: currentStepIndex,\r\n              currentStep,\r\n              currentStepItem,\r\n            })\r\n          } else if (\r\n            steps.every(\r\n              (step) =>\r\n                !step.items ||\r\n                step.items.length == 0 ||\r\n                step.items?.every((item) => item.status === 'complete')\r\n            )\r\n          ) {\r\n            setEditListingStep(EditListingStep.Complete)\r\n          }\r\n        },\r\n      })\r\n      .catch((error: Error) => {\r\n        setTransactionError(error)\r\n        setEditListingStep(EditListingStep.Edit)\r\n        setStepData(null)\r\n        setSteps(null)\r\n      })\r\n  }, [\r\n    config,\r\n    client,\r\n    wallet,\r\n    rendererChain,\r\n    collectionId,\r\n    tokenId,\r\n    expirationOption,\r\n    price,\r\n    currency,\r\n    quantity,\r\n    contract,\r\n    exchange,\r\n  ])\r\n\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setEditListingStep(EditListingStep.Edit)\r\n      setTransactionError(null)\r\n      setStepData(null)\r\n      setSteps(null)\r\n    }\r\n  }, [open])\r\n\r\n  open\r\n    ? (axios.defaults.headers.common['x-rkui-context'] =\r\n        'editListingModalRenderer')\r\n    : delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        loading: !listing || !token || !collection || !exchange,\r\n        listing,\r\n        tokenId,\r\n        contract,\r\n        isOracleOrder,\r\n        currency,\r\n        token,\r\n        price,\r\n        quantityAvailable,\r\n        collection,\r\n        quantity,\r\n        expirationOption,\r\n        expirationOptions,\r\n        editListingStep,\r\n        transactionError,\r\n        usdPrice,\r\n        totalUsd,\r\n        royaltyBps,\r\n        steps,\r\n        stepData,\r\n        exchange,\r\n        setPrice,\r\n        setQuantity,\r\n        setExpirationOption,\r\n        setEditListingStep,\r\n        editListing,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Flex, Box, Input, FormatCurrency, Text, FormatCryptoCurrency } from '.'\r\n\r\nimport { CryptoCurrencyIcon } from '.'\r\nimport { useCollections, useListings } from '../hooks'\r\n\r\ntype MarketPlaceInputProps = {\r\n  price: number | undefined\r\n  chainId?: number\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  currency: NonNullable<\r\n    NonNullable<ReturnType<typeof useListings>['data']>[0]['price']\r\n  >['currency']\r\n  usdPrice?: number | null\r\n  quantity?: number\r\n  placeholder?: string\r\n  onChange: (e: any) => void\r\n  onBlur: (e: any) => void\r\n}\r\n\r\nconst PriceInput = ({\r\n  chainId,\r\n  price,\r\n  collection,\r\n  currency,\r\n  usdPrice,\r\n  quantity = 1,\r\n  placeholder,\r\n  onChange,\r\n  onBlur,\r\n  ...props\r\n}: MarketPlaceInputProps) => {\r\n  let profit =\r\n    (1 - (collection?.royalties?.bps || 0) * 0.0001) * (price || 0) * quantity\r\n  100\r\n\r\n  return (\r\n    <Flex {...props} align=\"center\">\r\n      <Flex align=\"center\">\r\n        <Box\r\n          css={{\r\n            width: 'auto',\r\n            height: 20,\r\n          }}\r\n        >\r\n          <CryptoCurrencyIcon\r\n            chainId={chainId}\r\n            css={{ height: 18 }}\r\n            address={currency?.contract as string}\r\n          />\r\n        </Box>\r\n\r\n        <Text style=\"body1\" color=\"subtle\" css={{ ml: '$1', mr: '$4' }} as=\"p\">\r\n          {currency?.symbol}\r\n        </Text>\r\n      </Flex>\r\n      <Box css={{ flex: 1 }}>\r\n        <Input\r\n          type=\"number\"\r\n          value={price}\r\n          onChange={onChange}\r\n          onBlur={onBlur}\r\n          placeholder={placeholder}\r\n        />\r\n      </Box>\r\n      <Flex direction=\"column\" align=\"end\" css={{ ml: '$3' }}>\r\n        <FormatCryptoCurrency\r\n          chainId={chainId}\r\n          amount={profit}\r\n          address={currency?.contract}\r\n          decimals={currency?.decimals}\r\n          symbol={currency?.symbol}\r\n          textStyle=\"h6\"\r\n          logoWidth={18}\r\n        />\r\n        <FormatCurrency\r\n          amount={profit * (usdPrice || 0)}\r\n          style=\"subtitle3\"\r\n          color=\"subtle\"\r\n        />\r\n      </Flex>\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default PriceInput\r\n","import React, {\r\n  ComponentPropsWithoutRef,\r\n  Dispatch,\r\n  ReactElement,\r\n  SetStateAction,\r\n  useEffect,\r\n} from 'react'\r\nimport { WalletClient, formatUnits, parseUnits } from 'viem'\r\nimport { ReservoirWallet } from '@sh-reservoir0x/reservoir-sdk'\r\nimport {\r\n  useCoinConversion,\r\n  useFallbackState,\r\n  useReservoirClient,\r\n} from '../../hooks'\r\nimport { Modal } from '../Modal'\r\nimport {\r\n  MintModalRenderer,\r\n  MintModalStepData,\r\n  MintStep,\r\n} from './MintModalRenderer'\r\nimport {\r\n  Anchor,\r\n  Box,\r\n  Button,\r\n  ErrorWell,\r\n  Flex,\r\n  FormatCryptoCurrency,\r\n  Loader,\r\n  Text,\r\n} from '../../primitives'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport {\r\n  faCheckCircle,\r\n  faChevronLeft,\r\n  faCircleExclamation,\r\n  faCube,\r\n  faEye,\r\n  faPenNib,\r\n  faWallet,\r\n} from '@fortawesome/free-solid-svg-icons'\r\nimport { formatNumber } from '../../lib/numbers'\r\nimport { Path } from '../../components/cart/CartCheckoutModal'\r\nimport QuantitySelector from '../QuantitySelector'\r\nimport { CurrentStepTxHashes } from '../CurrentStepTxHashes'\r\nimport SigninStep from '../SigninStep'\r\nimport { ApprovePurchasingCollapsible } from '../ApprovePurchasingCollapsible'\r\nimport { MintImages } from './MintImages'\r\nimport { truncateAddress } from '../../lib/truncate'\r\nimport getChainBlockExplorerUrl from '../../lib/getChainBlockExplorerUrl'\r\nimport { TokenInfo } from '../TokenInfo'\r\nimport { CollectionInfo } from '../CollectionInfo'\r\nimport { PurchaseCheckout } from '../PurchaseCheckout'\r\nimport { PaymentDetails } from '../../common/PaymentDetails'\r\nimport { SelectPaymentToken } from '../SelectPaymentToken'\r\nimport { Dialog } from '../../primitives/Dialog'\r\n\r\nexport type MintCallbackData = {\r\n  collectionId?: string\r\n  maker?: string\r\n  stepData: MintModalStepData | null\r\n}\r\n\r\nexport const MintModalCopy = {\r\n  ctaConnect: 'Connect',\r\n  mintTitle: 'Mint',\r\n  mintCtaClose: 'Close',\r\n  mintCtaBuy: 'Mint',\r\n  mintCtaBuyDisabled: 'Mint',\r\n  mintCtaInsufficientFunds: 'Get AURA',\r\n  mintCtaAwaitingApproval: 'Waiting for approval...',\r\n  mintCtaAwaitingValidation: 'Waiting to be validated...',\r\n  mintCtaGoToToken: '',\r\n}\r\n\r\ntype Props = Pick<Parameters<typeof Modal>['0'], 'trigger'> & {\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  contract?: string\r\n  collectionId?: string\r\n  token?: string\r\n  defaultQuantity?: number\r\n  onConnectWallet: () => void\r\n  feesOnTopBps?: string[] | null\r\n  feesOnTopUsd?: string[] | null\r\n  chainId?: number\r\n  copyOverrides?: Partial<typeof MintModalCopy>\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  onMintComplete?: (data: MintCallbackData) => void\r\n  onMintError?: (error: Error, data: MintCallbackData) => void\r\n  onClose?: (data: MintCallbackData, currentStep: MintStep) => void\r\n  onGoToToken?: (data: MintCallbackData) => any\r\n  onPointerDownOutside?: ComponentPropsWithoutRef<\r\n    typeof Dialog\r\n  >['onPointerDownOutside']\r\n  maxMintQuantity?: number\r\n  maxMintPerWallet?: number\r\n}\r\n\r\nexport function MintModal({\r\n  openState,\r\n  trigger,\r\n  contract,\r\n  collectionId,\r\n  token,\r\n  chainId,\r\n  feesOnTopBps,\r\n  feesOnTopUsd,\r\n  copyOverrides,\r\n  walletClient,\r\n  onMintComplete,\r\n  onMintError,\r\n  onClose,\r\n  onConnectWallet,\r\n  onGoToToken,\r\n  onPointerDownOutside,\r\n  defaultQuantity,\r\n  maxMintQuantity,\r\n  maxMintPerWallet,\r\n}: Props): ReactElement {\r\n  const copy: typeof MintModalCopy = {\r\n    ...MintModalCopy,\r\n    ...copyOverrides,\r\n  }\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const modalChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const coinConversion = useCoinConversion('USD')\r\n  const usdPrice = coinConversion.length > 0 ? coinConversion[0].price : 0\r\n  const usdCoinConversionPriceRaw = parseUnits(usdPrice.toString(), 6)\r\n\r\n  return (\r\n    <MintModalRenderer\r\n      onConnectWallet={onConnectWallet}\r\n      chainId={modalChain?.id}\r\n      defaultQuantity={defaultQuantity}\r\n      open={open}\r\n      contract={contract}\r\n      collectionId={collectionId}\r\n      token={token}\r\n      feesOnTopBps={feesOnTopBps}\r\n      feesOnTopUsd={feesOnTopUsd}\r\n      walletClient={walletClient}\r\n      maxMintQuantity={maxMintQuantity}\r\n      maxMintPerWallet={maxMintPerWallet}\r\n    >\r\n      {({\r\n        loading,\r\n        isFetchingPath,\r\n        collection,\r\n        token,\r\n        orders,\r\n        totalIncludingFees,\r\n        mintResponseFees,\r\n        feeOnTop,\r\n        feeUsd,\r\n        paymentTokens,\r\n        paymentCurrency,\r\n        setPaymentCurrency,\r\n        addFundsLink,\r\n        chainCurrency,\r\n        itemAmount,\r\n        setItemAmount,\r\n        maxItemAmount,\r\n        setMaxItemAmount,\r\n        usdPrice,\r\n        usdPriceRaw,\r\n        currentChain,\r\n        address,\r\n        isConnected,\r\n        disableJumperLink,\r\n        balance,\r\n        hasEnoughCurrency,\r\n        transactionError,\r\n        fetchMintPathError,\r\n        stepData,\r\n        mintStep,\r\n        setStepData,\r\n        setMintStep,\r\n        mintTokens,\r\n      }) => {\r\n        useEffect(() => {\r\n          if (mintStep === MintStep.Complete && onMintComplete) {\r\n            const data: MintCallbackData = {\r\n              collectionId: collection?.id,\r\n              maker: address,\r\n              stepData,\r\n            }\r\n\r\n            onMintComplete(data)\r\n          }\r\n        }, [mintStep])\r\n\r\n        useEffect(() => {\r\n          if (transactionError && onMintError) {\r\n            const data: MintCallbackData = {\r\n              collectionId: collection?.id,\r\n              maker: address,\r\n              stepData,\r\n            }\r\n            onMintError(transactionError, data)\r\n          }\r\n        }, [transactionError])\r\n\r\n        const pathMap = stepData?.path\r\n          ? (stepData.path as Path[]).reduce(\r\n              (paths: Record<string, Path>, path: Path) => {\r\n                if (path.orderId) {\r\n                  paths[path.orderId] = path\r\n                }\r\n\r\n                return paths\r\n              },\r\n              {} as Record<string, Path>\r\n            )\r\n          : {}\r\n\r\n        // const maxQuantity = paymentCurrency?.maxItems\r\n        //   ? paymentCurrency?.maxItems\r\n        //   : maxItemAmount\r\n\r\n        const maxQuantity = maxItemAmount\r\n\r\n        const totalMints =\r\n          stepData?.currentStep?.items?.reduce((total, item) => {\r\n            item.transfersData?.forEach((transferData) => {\r\n              total += Number(transferData.amount || 1)\r\n            })\r\n            return total\r\n          }, 0) || 0\r\n\r\n        const failedMints = itemAmount - totalMints\r\n        const successfulMints = itemAmount - failedMints\r\n\r\n        return (\r\n          <Modal\r\n            trigger={trigger}\r\n            title={copy.mintTitle}\r\n            open={open}\r\n            loading={loading}\r\n            onPointerDownOutside={(e) => {\r\n              const dismissableLayers = Array.from(\r\n                document.querySelectorAll('div[data-radix-dismissable]')\r\n              )\r\n              const clickedDismissableLayer = dismissableLayers.some((el) =>\r\n                e.target ? el.contains(e.target as Node) : false\r\n              )\r\n\r\n              if (!clickedDismissableLayer && dismissableLayers.length > 0) {\r\n                e.preventDefault()\r\n              }\r\n\r\n              if (onPointerDownOutside) {\r\n                onPointerDownOutside(e)\r\n              }\r\n            }}\r\n            onOpenChange={(open) => {\r\n              if (!open && onClose) {\r\n                const data: MintCallbackData = {\r\n                  collectionId: collection?.id,\r\n                  maker: address,\r\n                  stepData,\r\n                }\r\n                onClose(data, mintStep)\r\n              }\r\n              setOpen(open)\r\n            }}\r\n          >\r\n            {!loading &&\r\n            (orders?.length === 0 || maxItemAmount === 0) &&\r\n            mintStep === MintStep.Idle ? (\r\n              <Flex\r\n                direction=\"column\"\r\n                align=\"center\"\r\n                css={{ width: '100%', p: '$4' }}\r\n              >\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ pt: 28, pb: 48, px: '$4', gap: 28 }}\r\n                >\r\n                  <Box css={{ color: '$neutralSolid' }}>\r\n                    <FontAwesomeIcon\r\n                      icon={faEye}\r\n                      style={{\r\n                        width: '36px',\r\n                        height: '32px',\r\n                      }}\r\n                    />\r\n                  </Box>\r\n                  {!collection && !fetchMintPathError ? (\r\n                    <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                      Collection not found.\r\n                    </Text>\r\n                  ) : null}\r\n\r\n                  {collection && fetchMintPathError?.message ? (\r\n                    <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                      {fetchMintPathError?.message}\r\n                    </Text>\r\n                  ) : null}\r\n\r\n                  {collection && !fetchMintPathError?.message ? (\r\n                    <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                      Oops. Looks like the mint has ended or the maximum minting\r\n                      limit has been reached.\r\n                    </Text>\r\n                  ) : null}\r\n                </Flex>\r\n                {fetchMintPathError?.message &&\r\n                fetchMintPathError?.message\r\n                  ?.toLowerCase()\r\n                  ?.indexOf('balance too low') > -1 ? (\r\n                  <Button\r\n                    onClick={() => {\r\n                      window.open(addFundsLink, '_blank')\r\n                    }}\r\n                    css={{ width: '100%' }}\r\n                  >\r\n                    {copy.mintCtaInsufficientFunds}\r\n                  </Button>\r\n                ) : (\r\n                  <Button\r\n                    onClick={() => {\r\n                      setOpen(false)\r\n                    }}\r\n                    css={{ width: '100%' }}\r\n                  >\r\n                    {copy.mintCtaClose}\r\n                  </Button>\r\n                )}\r\n              </Flex>\r\n            ) : null}\r\n            {!loading &&\r\n              orders.length > 0 &&\r\n              maxItemAmount !== 0 &&\r\n              mintStep === MintStep.Idle && (\r\n                <Flex direction=\"column\">\r\n                  <Flex\r\n                    direction=\"column\"\r\n                    css={{ borderBottom: '1px solid $neutralBorder' }}\r\n                  >\r\n                    {transactionError ? (\r\n                      <ErrorWell error={transactionError} css={undefined} />\r\n                    ) : null}\r\n                    <Flex direction=\"column\" css={{ p: '$4', gap: '$4' }}>\r\n                      {token ? (\r\n                        <TokenInfo\r\n                          token={token}\r\n                          collection={collection}\r\n                          chain={currentChain}\r\n                        />\r\n                      ) : (\r\n                        <CollectionInfo\r\n                          collection={collection}\r\n                          chain={currentChain}\r\n                        />\r\n                      )}\r\n\r\n                      <Flex\r\n                        align=\"center\"\r\n                        justify=\"between\"\r\n                        css={{ gap: 24, '@bp1': { gap: '$6' } }}\r\n                      >\r\n                        <Flex\r\n                          direction=\"column\"\r\n                          align=\"start\"\r\n                          css={{\r\n                            gap: '$1',\r\n                            overflow: 'hidden',\r\n                            flexShrink: 0,\r\n                            maxWidth: 200,\r\n                          }}\r\n                        >\r\n                          <Text style=\"subtitle2\">Quantity</Text>\r\n                          <Text\r\n                            style=\"body3\"\r\n                            color=\"subtle\"\r\n                            ellipsify\r\n                            css={{ width: '100%' }}\r\n                          >\r\n                            {formatNumber(maxQuantity)}{' '}\r\n                            {maxQuantity > 1 ? 'items' : 'item'} available\r\n                          </Text>\r\n                        </Flex>\r\n                        <QuantitySelector\r\n                          quantity={itemAmount}\r\n                          setQuantity={setItemAmount}\r\n                          min={1}\r\n                          max={20}\r\n                          css={{\r\n                            width: '100%',\r\n                            justifyContent: 'space-between',\r\n                            minWidth: 200,\r\n                          }}\r\n                        />\r\n                      </Flex>\r\n                    </Flex>\r\n                  </Flex>\r\n                  <Flex direction=\"column\" css={{ pb: '$2' }}>\r\n                    {/* {paymentTokens.length > 1 ? (\r\n                      <Flex\r\n                        direction=\"column\"\r\n                        css={{\r\n                          gap: '$2',\r\n                          py: '$3',\r\n                          px: '$4',\r\n                          borderRadius: '$3',\r\n                          borderBottom: '1px solid $neutralBorder',\r\n                          '&:hover': {\r\n                            backgroundColor: '$neutralBgHover',\r\n                          },\r\n                        }}\r\n                        onClick={() => setMintStep(MintStep.SelectPayment)}\r\n                      >\r\n                        <Flex\r\n                          justify=\"between\"\r\n                          align=\"center\"\r\n                          css={{\r\n                            gap: '$1',\r\n                          }}\r\n                        >\r\n                          <Text style=\"subtitle2\">Payment Method</Text>\r\n                          <Flex\r\n                            align=\"center\"\r\n                            css={{ gap: '$2', cursor: 'pointer' }}\r\n                          >\r\n                            <Flex align=\"center\">\r\n                              <CryptoCurrencyIcon\r\n                                address={paymentCurrency?.address as string}\r\n                                css={{ width: 16, height: 16, mr: '$1' }}\r\n                              />\r\n                              <Text style=\"subtitle2\">\r\n                                {paymentCurrency?.name}\r\n                              </Text>\r\n                            </Flex>\r\n                            <Box css={{ color: '$neutralSolidHover' }}>\r\n                              <FontAwesomeIcon\r\n                                icon={faChevronRight}\r\n                                width={10}\r\n                              />\r\n                            </Box>\r\n                          </Flex>\r\n                        </Flex>\r\n                      </Flex>\r\n                    ) : null} */}\r\n                    <PaymentDetails\r\n                      chainId={chainId}\r\n                      crosschainFees={mintResponseFees}\r\n                      paymentCurrency={paymentCurrency}\r\n                      feeOnTop={feeOnTop}\r\n                      feeUsd={feeUsd}\r\n                      loading={isFetchingPath}\r\n                      itemAmount={itemAmount}\r\n                      css={{ pt: '$4' }}\r\n                    />\r\n                  </Flex>\r\n                  {hasEnoughCurrency || !isConnected ? (\r\n                    <Button\r\n                      css={{ m: '$4' }}\r\n                      disabled={!hasEnoughCurrency && isConnected}\r\n                      onClick={mintTokens}\r\n                    >\r\n                      {!isConnected ? copy.ctaConnect : copy.mintCtaBuy}\r\n                    </Button>\r\n                  ) : (\r\n                    <Flex\r\n                      direction=\"column\"\r\n                      align=\"center\"\r\n                      css={{ px: '$3', gap: '$3' }}\r\n                    >\r\n                      <Flex align=\"center\">\r\n                        <Text css={{ mr: '$3' }} color=\"error\" style=\"body3\">\r\n                          Insufficient Balance\r\n                        </Text>\r\n\r\n                        <FormatCryptoCurrency\r\n                          chainId={chainId}\r\n                          amount={paymentCurrency?.balance}\r\n                          address={paymentCurrency?.address}\r\n                          decimals={paymentCurrency?.decimals}\r\n                          symbol={paymentCurrency?.name}\r\n                          textStyle=\"body3\"\r\n                        />\r\n                      </Flex>\r\n                      <Button\r\n                        disabled={disableJumperLink}\r\n                        onClick={() => {\r\n                          window.open(addFundsLink, '_blank')\r\n                        }}\r\n                        css={{ mb: '$3', width: '100%' }}\r\n                      >\r\n                        {disableJumperLink\r\n                          ? copy.mintCtaBuy\r\n                          : copy.mintCtaInsufficientFunds}\r\n                      </Button>\r\n                    </Flex>\r\n                  )}\r\n                </Flex>\r\n              )}\r\n\r\n            {/* {!loading && mintStep === MintStep.SelectPayment && (\r\n              <Flex direction=\"column\" css={{ py: 20 }}>\r\n                <Flex align=\"center\" css={{ gap: '$2', px: '$4' }}>\r\n                  <Button\r\n                    onClick={() => setMintStep(MintStep.Idle)}\r\n                    color=\"ghost\"\r\n                    size=\"xs\"\r\n                    css={{ color: '$neutralSolidHover' }}\r\n                  >\r\n                    <FontAwesomeIcon icon={faChevronLeft} width={10} />\r\n                  </Button>\r\n                  <Text style=\"subtitle2\">Select Payment Method</Text>\r\n                </Flex>\r\n                <SelectPaymentToken\r\n                  paymentTokens={paymentTokens}\r\n                  currency={paymentCurrency}\r\n                  setCurrency={setPaymentCurrency}\r\n                  goBack={() => setMintStep(MintStep.Idle)}\r\n                  itemAmount={itemAmount}\r\n                  chainId={modalChain?.id || 1}\r\n                />\r\n              </Flex>\r\n            )} */}\r\n\r\n            {!loading && mintStep === MintStep.Approving && (\r\n              <Flex direction=\"column\">\r\n                <Box\r\n                  css={{\r\n                    p: '$4',\r\n                    borderBottom: '1px solid $neutralBorder',\r\n                  }}\r\n                >\r\n                  <PurchaseCheckout\r\n                    chainId={chainId}\r\n                    collection={collection}\r\n                    token={token}\r\n                    itemCount={itemAmount}\r\n                    totalPrice={\r\n                      (paymentCurrency?.currencyTotalRaw ?? 0n) + feeOnTop\r\n                    }\r\n                    currency={paymentCurrency}\r\n                    usdTotalFormatted={formatUnits(\r\n                      ((paymentCurrency?.currencyTotalRaw || 0n) + feeOnTop) *\r\n                        (usdCoinConversionPriceRaw || 0n),\r\n                      (paymentCurrency?.decimals || 18) + 6\r\n                    )}\r\n                  />\r\n                </Box>\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ p: '$4', overflowY: 'auto' }}\r\n                >\r\n                  {stepData?.currentStep == undefined ? (\r\n                    <Flex css={{ py: '$5' }}>\r\n                      <Loader />\r\n                    </Flex>\r\n                  ) : null}\r\n\r\n                  {stepData?.currentStep &&\r\n                  stepData.currentStep.id !== 'auth' &&\r\n                  stepData.currentStep.id !== 'sale' ? (\r\n                    <>\r\n                      <Flex\r\n                        css={{ color: '$neutralText', py: '$5' }}\r\n                        direction=\"column\"\r\n                        justify=\"center\"\r\n                        align=\"center\"\r\n                      >\r\n                        <Text\r\n                          style=\"h6\"\r\n                          color=\"base\"\r\n                          css={{ mb: '$2', textAlign: 'center' }}\r\n                        >\r\n                          {stepData.currentStep.action}{' '}\r\n                          {stepData?.currentStep?.items &&\r\n                          stepData.currentStep.items.length > 1\r\n                            ? `(${\r\n                                stepData.currentStep.items.filter(\r\n                                  (item) => item.status === 'complete'\r\n                                ).length\r\n                              }/${stepData.currentStep.items.length})`\r\n                            : null}\r\n                        </Text>\r\n                        <Text\r\n                          style=\"subtitle3\"\r\n                          color=\"subtle\"\r\n                          css={{ mb: 20, textAlign: 'center' }}\r\n                        >\r\n                          {stepData.currentStep.description}\r\n                        </Text>\r\n                        <FontAwesomeIcon\r\n                          icon={faPenNib}\r\n                          width={32}\r\n                          height={32}\r\n                          style={{ height: 32 }}\r\n                        />\r\n                      </Flex>\r\n                      <CurrentStepTxHashes\r\n                        currentStep={stepData?.currentStep}\r\n                      />\r\n                      <Button disabled={true} css={{ mt: '$4', width: '100%' }}>\r\n                        <Loader />\r\n                        {copy.mintCtaAwaitingApproval}\r\n                      </Button>\r\n                    </>\r\n                  ) : null}\r\n\r\n                  {stepData?.currentStep &&\r\n                  stepData.currentStep.id === 'auth' ? (\r\n                    <>\r\n                      <SigninStep css={{ mt: 48, mb: '$4', gap: 20 }} />\r\n                      <Button disabled={true} css={{ mt: '$4', width: '100%' }}>\r\n                        <Loader />\r\n                        {copy.mintCtaAwaitingApproval}\r\n                      </Button>\r\n                    </>\r\n                  ) : null}\r\n\r\n                  {stepData?.currentStep &&\r\n                  stepData?.currentStep?.id === 'sale' ? (\r\n                    <>\r\n                      {stepData?.currentStep?.items &&\r\n                      stepData?.currentStep?.items.length > 1 ? (\r\n                        <Flex\r\n                          direction=\"column\"\r\n                          css={{ gap: '$4', width: '100%' }}\r\n                        >\r\n                          <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                            Approve Purchases\r\n                          </Text>\r\n                          <Text style=\"subtitle3\" color=\"subtle\">\r\n                            The purchase of these items needs to be split into{' '}\r\n                            {stepData?.currentStep?.items.length} separate\r\n                            transactions.\r\n                          </Text>\r\n                          {stepData?.currentStep?.items.map((item, idx) => (\r\n                            <ApprovePurchasingCollapsible\r\n                              key={idx}\r\n                              item={item}\r\n                              pathMap={pathMap}\r\n                              usdPrice={+usdPrice}\r\n                              chain={currentChain}\r\n                              open={true}\r\n                            />\r\n                          ))}\r\n                        </Flex>\r\n                      ) : (\r\n                        <Flex\r\n                          direction=\"column\"\r\n                          align=\"center\"\r\n                          css={{ gap: '$4', pt: '$4', width: '100%' }}\r\n                        >\r\n                          <Text style=\"h6\">\r\n                            Confirm transaction in your wallet\r\n                          </Text>\r\n                          <Box css={{ color: '$neutralText' }}>\r\n                            <FontAwesomeIcon\r\n                              icon={faWallet}\r\n                              style={{\r\n                                width: '32px',\r\n                                height: '32px',\r\n                                margin: '12px 0px',\r\n                              }}\r\n                            />\r\n                          </Box>\r\n                          <CurrentStepTxHashes\r\n                            currentStep={stepData?.currentStep}\r\n                          />\r\n                          <Button\r\n                            disabled={true}\r\n                            css={{ mt: '$4', width: '100%' }}\r\n                          >\r\n                            <Loader />\r\n                            {copy.mintCtaAwaitingApproval}\r\n                          </Button>\r\n                        </Flex>\r\n                      )}\r\n                    </>\r\n                  ) : null}\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n\r\n            {!loading && mintStep === MintStep.Finalizing && (\r\n              <Flex direction=\"column\">\r\n                <Box\r\n                  css={{\r\n                    p: '$4',\r\n                    borderBottom: '1px solid $neutralBorder',\r\n                  }}\r\n                >\r\n                  <PurchaseCheckout\r\n                    chainId={chainId}\r\n                    collection={collection}\r\n                    token={token}\r\n                    itemCount={itemAmount}\r\n                    totalPrice={\r\n                      (paymentCurrency?.currencyTotalRaw || 0n) + feeOnTop\r\n                    }\r\n                    currency={paymentCurrency}\r\n                    usdTotalFormatted={formatUnits(\r\n                      ((paymentCurrency?.currencyTotalRaw || 0n) + feeOnTop) *\r\n                        (usdCoinConversionPriceRaw || 0n),\r\n                      (paymentCurrency?.decimals || 18) + 6\r\n                    )}\r\n                  />\r\n                </Box>\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  justify=\"center\"\r\n                  css={{\r\n                    gap: '$4',\r\n                    px: '$4',\r\n                    py: '$5',\r\n                  }}\r\n                >\r\n                  <Text style=\"h6\">Finalizing on blockchain</Text>\r\n                  <Text\r\n                    style=\"subtitle3\"\r\n                    color=\"subtle\"\r\n                    css={{ textAlign: 'center' }}\r\n                  >\r\n                    You can close this modal while it finalizes on the\r\n                    blockchain. The transaction will continue in the background.\r\n                  </Text>\r\n                  <Box css={{ color: '$neutralSolid' }}>\r\n                    <FontAwesomeIcon\r\n                      icon={faCube}\r\n                      style={{ width: 32, height: 32 }}\r\n                    />\r\n                  </Box>\r\n                </Flex>\r\n                <CurrentStepTxHashes currentStep={stepData?.currentStep} />\r\n                <Button disabled={true} css={{ m: '$4' }}>\r\n                  <Loader />\r\n                  {copy.mintCtaAwaitingValidation}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n\r\n            {!loading && mintStep === MintStep.Complete && (\r\n              <Flex\r\n                direction=\"column\"\r\n                align=\"center\"\r\n                css={{ width: '100%', py: '$4' }}\r\n              >\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ py: '$5', gap: 24, maxWidth: '100%' }}\r\n                >\r\n                  <Text style=\"h5\" css={{ px: '$5' }}>\r\n                    Your mint is complete!\r\n                  </Text>\r\n                  <MintImages\r\n                    stepData={stepData}\r\n                    tokenKind={collection?.contractKind}\r\n                  />\r\n                  <Flex align=\"center\" css={{ gap: '$2', px: '$5' }}>\r\n                    <Box\r\n                      css={{\r\n                        color: failedMints ? '$errorAccent' : '$successAccent',\r\n                      }}\r\n                    >\r\n                      <FontAwesomeIcon\r\n                        icon={failedMints ? faCircleExclamation : faCheckCircle}\r\n                        fontSize={16}\r\n                      />\r\n                    </Box>\r\n                    <Text style=\"body1\" css={{ textAlign: 'center' }}>\r\n                      {failedMints\r\n                        ? `${successfulMints} ${\r\n                            successfulMints > 1 ? 'items' : 'item'\r\n                          } minted, ${failedMints} ${\r\n                            failedMints > 1 ? 'items' : 'item'\r\n                          } failed`\r\n                        : `Successfully minted ${successfulMints} ${\r\n                            successfulMints > 1 ? 'items' : 'item'\r\n                          }`}\r\n                      {collection?.name ? (\r\n                        <>\r\n                          {' '}\r\n                          from\r\n                          <Text style=\"body1\" color=\"accent\">\r\n                            {' '}\r\n                            {collection?.name}\r\n                          </Text>\r\n                        </>\r\n                      ) : null}\r\n                    </Text>\r\n                  </Flex>\r\n                  <Flex\r\n                    direction=\"column\"\r\n                    css={{ gap: '$2', mb: '$3', px: '$5' }}\r\n                  >\r\n                    {stepData?.currentStep?.items?.map((item, itemIndex) => {\r\n                      if (\r\n                        Array.isArray(item?.txHashes) &&\r\n                        item?.txHashes.length > 0\r\n                      ) {\r\n                        return item.txHashes.map((hash, txHashIndex) => {\r\n                          const truncatedTxHash = truncateAddress(hash.txHash)\r\n                          const blockExplorerBaseUrl = getChainBlockExplorerUrl(\r\n                            hash.chainId\r\n                          )\r\n                          return (\r\n                            <Anchor\r\n                              key={`${itemIndex}-${txHashIndex}`}\r\n                              href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                              color=\"primary\"\r\n                              weight=\"medium\"\r\n                              target=\"_blank\"\r\n                              css={{ fontSize: 12 }}\r\n                            >\r\n                              View transaction: {truncatedTxHash}\r\n                            </Anchor>\r\n                          )\r\n                        })\r\n                      } else {\r\n                        return null\r\n                      }\r\n                    })}\r\n                  </Flex>\r\n                </Flex>\r\n                <Flex css={{ width: '100%', px: '$4' }}>\r\n                  {!!onGoToToken ? (\r\n                    <>\r\n                      <Button\r\n                        onClick={() => {\r\n                          setOpen(false)\r\n                        }}\r\n                        css={{ flex: 1 }}\r\n                        color=\"ghost\"\r\n                      >\r\n                        {copy.mintCtaClose}\r\n                      </Button>\r\n                      <Button\r\n                        style={{ flex: 1 }}\r\n                        color=\"primary\"\r\n                        onClick={() => {\r\n                          onGoToToken({\r\n                            collectionId: collection?.id,\r\n                            maker: address,\r\n                            stepData,\r\n                          })\r\n                        }}\r\n                      >\r\n                        {copy.mintCtaGoToToken.length > 0\r\n                          ? copy.mintCtaGoToToken\r\n                          : `View ${successfulMints > 1 ? 'Tokens' : 'Token'}`}\r\n                      </Button>\r\n                    </>\r\n                  ) : (\r\n                    <Button\r\n                      css={{ width: '100%' }}\r\n                      onClick={() => setOpen(false)}\r\n                    >\r\n                      {copy.mintCtaClose}\r\n                    </Button>\r\n                  )}\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n          </Modal>\r\n        )\r\n      }}\r\n    </MintModalRenderer>\r\n  )\r\n}\r\n\r\nMintModal.Custom = MintModalRenderer\r\n","import React, {\r\n  FC,\r\n  ReactNode,\r\n  useCallback,\r\n  useContext,\r\n  useEffect,\r\n  useMemo,\r\n  useState,\r\n} from 'react'\r\nimport {\r\n  Address,\r\n  WalletClient,\r\n  createPublicClient,\r\n  formatUnits,\r\n  http,\r\n  zeroAddress,\r\n} from 'viem'\r\nimport { useAccount, useConfig, useWalletClient } from 'wagmi'\r\nimport { getAccount, switchChain } from 'wagmi/actions'\r\nimport {\r\n  Execute,\r\n  LogLevel,\r\n  MintPath,\r\n  MintResponses,\r\n  ReservoirChain,\r\n  ReservoirClientActions,\r\n  ReservoirWallet,\r\n  axios,\r\n  customChains,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport {\r\n  useChainCurrency,\r\n  useCollections,\r\n  useReservoirClient,\r\n  useTokens,\r\n} from '../../hooks'\r\nimport * as allChains from 'viem/chains'\r\nimport { ProviderOptionsContext } from '../../ReservoirKitProvider'\r\nimport usePaymentTokens, {\r\n  EnhancedCurrency,\r\n} from '../../hooks/usePaymentTokens'\r\nimport { ChainConfig, HALO_TRADE } from '../../constants/common'\r\n\r\nexport enum MintStep {\r\n  Idle,\r\n  SelectPayment,\r\n  Approving,\r\n  Finalizing,\r\n  Complete,\r\n}\r\n\r\nexport type MintModalStepData = {\r\n  totalSteps: number\r\n  stepProgress: number\r\n  currentStep: Execute['steps'][0]\r\n  currentStepItem: NonNullable<Execute['steps'][0]['items']>[0]\r\n  path: Execute['path']\r\n}\r\n\r\ntype MintTokenOptions = Parameters<\r\n  ReservoirClientActions['mintToken']\r\n>['0']['options']\r\n\r\ntype ChildrenProps = {\r\n  loading: boolean\r\n  isFetchingPath: boolean\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  token?: NonNullable<ReturnType<typeof useTokens>['data']>[0]\r\n  orders: NonNullable<MintPath>\r\n  currentChain: ReservoirChain | null | undefined\r\n  chainCurrency: ReturnType<typeof useChainCurrency>\r\n  paymentTokens: EnhancedCurrency[]\r\n  paymentCurrency?: EnhancedCurrency\r\n  setPaymentCurrency: React.Dispatch<\r\n    React.SetStateAction<EnhancedCurrency | undefined>\r\n  >\r\n  address?: string\r\n  balance?: bigint\r\n  totalIncludingFees: bigint\r\n  mintResponseFees?: MintResponses['fees']\r\n  feeOnTop: bigint\r\n  feeUsd: string\r\n  usdPrice: number\r\n  usdPriceRaw: bigint\r\n  isConnected: boolean\r\n  disableJumperLink?: boolean\r\n  hasEnoughCurrency: boolean\r\n  transactionError: Error | null | undefined\r\n  fetchMintPathError: Error | null | undefined\r\n  stepData: MintModalStepData | null\r\n  addFundsLink: string\r\n  mintStep: MintStep\r\n  itemAmount: number\r\n  setItemAmount: React.Dispatch<React.SetStateAction<number>>\r\n  maxItemAmount: number\r\n  setMaxItemAmount: React.Dispatch<React.SetStateAction<number>>\r\n  setStepData: React.Dispatch<React.SetStateAction<MintModalStepData | null>>\r\n  setMintStep: React.Dispatch<React.SetStateAction<MintStep>>\r\n  mintTokens: () => void\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  contract?: string\r\n  collectionId?: string\r\n  token?: string\r\n  onConnectWallet: () => void\r\n  chainId?: number\r\n  defaultQuantity?: number\r\n  feesOnTopBps?: string[] | null\r\n  feesOnTopUsd?: string[] | null\r\n  children: (props: ChildrenProps) => ReactNode\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  maxMintQuantity?: number\r\n  maxMintPerWallet?: number\r\n}\r\n\r\nexport const MintModalRenderer: FC<Props> = ({\r\n  open,\r\n  contract,\r\n  collectionId,\r\n  token,\r\n  onConnectWallet,\r\n  chainId,\r\n  defaultQuantity,\r\n  feesOnTopBps,\r\n  feesOnTopUsd,\r\n  children,\r\n  walletClient,\r\n  maxMintQuantity,\r\n  maxMintPerWallet,\r\n}) => {\r\n  const client = useReservoirClient()\r\n  const config = useConfig()\r\n  const { address } = useAccount()\r\n  const [mintStep, setMintStep] = useState<MintStep>(MintStep.Idle)\r\n  const [stepData, setStepData] = useState<MintModalStepData | null>(null)\r\n  const [orders, setOrders] = useState<NonNullable<MintPath>>([])\r\n  const [isFetchingPath, setIsFetchingPath] = useState(false)\r\n  const [fetchedInitialOrders, setFetchedInitialOrders] = useState(false)\r\n  const [itemAmount, setItemAmount] = useState<number>(1)\r\n  const [maxItemAmount, setMaxItemAmount] = useState<number>(1)\r\n  const [transactionError, setTransactionError] = useState<Error | null>()\r\n  const [fetchMintPathError, setFetchMintPathError] = useState<Error | null>()\r\n  const [totalIncludingFees, setTotalIncludingFees] = useState(0n)\r\n  const [hasEnoughCurrency, setHasEnoughCurrency] = useState(true)\r\n  const [feeOnTop, setFeeOnTop] = useState(0n)\r\n  const [mintResponseFees, setMintResponseFees] = useState<\r\n    MintResponses['fees'] | undefined\r\n  >(undefined)\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const rendererChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const { data: wagmiWallet } = useWalletClient({ chainId: rendererChain?.id })\r\n\r\n  const wallet = walletClient || wagmiWallet\r\n\r\n  const chainCurrency = useChainCurrency(rendererChain?.id)\r\n\r\n  const wagmiChain: allChains.Chain | undefined = Object.values({\r\n    ...allChains,\r\n    ...customChains,\r\n  }).find(({ id }) => rendererChain?.id === id)\r\n\r\n  const providerOptions = useContext(ProviderOptionsContext)\r\n  const includeListingCurrency =\r\n    providerOptions.alwaysIncludeListingCurrency !== false\r\n  const disableJumperLink = providerOptions?.disableJumperLink\r\n\r\n  const collectionContract =\r\n    contract ?? collectionId?.split(':')?.[0] ?? token?.split(':')?.[0]\r\n  const tokenId = token?.split(':')?.[1]\r\n\r\n  const {\r\n    data: collections,\r\n    mutate: mutateCollection,\r\n    isFetchingPage: isFetchingCollections,\r\n  } = useCollections(\r\n    open && {\r\n      contract: collectionId ? undefined : collectionContract,\r\n      id: collectionId ? collectionId : undefined,\r\n      includeMintStages: true,\r\n    },\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n\r\n  const collection = collections && collections[0] ? collections[0] : undefined\r\n  const is1155 = collection?.contractKind === 'erc1155'\r\n\r\n  const isSingleToken1155 = is1155 && collection?.tokenCount === '1'\r\n\r\n  const { data: tokens } = useTokens(\r\n    open && collection && (tokenId || isSingleToken1155)\r\n      ? {\r\n          collection: isSingleToken1155 ? collection?.id : undefined,\r\n          tokens: isSingleToken1155\r\n            ? undefined\r\n            : `${collectionContract}:${tokenId}`,\r\n        }\r\n      : undefined,\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n\r\n  const tokenData = tokens && tokens[0] ? tokens[0] : undefined\r\n\r\n  const [_paymentCurrency, _setPaymentCurrency] = useState<\r\n    EnhancedCurrency | undefined\r\n  >(undefined)\r\n\r\n  const paymentKey = useMemo(() => {\r\n    if (token) {\r\n      return token\r\n    } else if (tokenData?.token?.tokenId && collectionContract) {\r\n      return `${collectionContract}:${tokenData?.token?.tokenId}`\r\n    } else if (collectionId) {\r\n      return collectionId\r\n    } else return collectionContract\r\n  }, [token, collectionId, , collectionContract, tokenData?.token?.tokenId])\r\n\r\n  const paymentTokens = usePaymentTokens({\r\n    open,\r\n    address: address as Address,\r\n    quantityToken: {\r\n      [`${paymentKey}`]: itemAmount,\r\n    },\r\n    path: orders,\r\n    nativeOnly: true,\r\n    chainId: rendererChain?.id,\r\n    crossChainDisabled: false,\r\n  })\r\n\r\n  const paymentCurrency = paymentTokens?.find(\r\n    (paymentToken) =>\r\n      paymentToken?.address === _paymentCurrency?.address &&\r\n      paymentToken?.chainId === _paymentCurrency?.chainId\r\n  )\r\n\r\n  const usdPrice = paymentCurrency?.usdPrice || 0\r\n  const usdPriceRaw = paymentCurrency?.usdPriceRaw || 0n\r\n  const feeUsd = formatUnits(\r\n    feeOnTop * usdPriceRaw,\r\n    (paymentCurrency?.decimals || 18) + 6\r\n  )\r\n\r\n  // Fetch mint path\r\n  const fetchMintPath = useCallback(\r\n    async (paymentCurrency: EnhancedCurrency | undefined) => {\r\n      if (!open || !client) {\r\n        return\r\n      }\r\n\r\n      setIsFetchingPath(true)\r\n\r\n      let options: MintTokenOptions = {\r\n        partial: false,\r\n        onlyPath: false,\r\n        currencyChainId: paymentCurrency?.chainId,\r\n      }\r\n\r\n      if (feesOnTopBps && feesOnTopBps?.length > 0) {\r\n        const fixedFees = feesOnTopBps.map((fullFee) => {\r\n          const [referrer] = fullFee.split(':')\r\n          return `${referrer}:1`\r\n        })\r\n        options.feesOnTop = fixedFees\r\n      } else if (feesOnTopUsd && feesOnTopUsd.length > 0) {\r\n        const feesOnTopFixed = feesOnTopUsd.map((feeOnTop) => {\r\n          const [recipient] = feeOnTop.split(':')\r\n          return `${recipient}:1`\r\n        })\r\n        options.feesOnTop = feesOnTopFixed\r\n      } else if (!feesOnTopUsd && !feesOnTopBps) {\r\n        delete options.feesOnTop\r\n      }\r\n\r\n      return client?.actions\r\n        .mintToken({\r\n          chainId: rendererChain?.id,\r\n          items: [\r\n            {\r\n              collection:\r\n                token ?? tokenData?.token?.tokenId ? undefined : collection?.id,\r\n              token:\r\n                token ?? tokenData?.token?.tokenId\r\n                  ? `${collectionContract}:${\r\n                      tokenId ?? tokenData?.token?.tokenId\r\n                    }`\r\n                  : undefined,\r\n            },\r\n          ],\r\n          expectedPrice: undefined,\r\n          options,\r\n          wallet: {\r\n            address: async () => {\r\n              return address || zeroAddress\r\n            },\r\n          } as any,\r\n          precheck: true,\r\n          onProgress: () => {},\r\n        })\r\n        .then((rawData) => {\r\n          let data = rawData as MintResponses\r\n\r\n          if ('path' in data) {\r\n            let pathData = data['path']\r\n            setOrders(pathData ?? [])\r\n\r\n            if (data.fees) {\r\n              setMintResponseFees(data.fees)\r\n            }\r\n\r\n            const pathOrderQuantity =\r\n              pathData?.reduce(\r\n                (mintableQuantity, order: any) =>\r\n                  Number(mintableQuantity) +\r\n                  (Number(order?.mintableQuantity) || 1),\r\n                0\r\n              ) || 0\r\n            let totalMaxQuantity = pathOrderQuantity\r\n            if ('maxQuantities' in data && data.maxQuantities?.[0]) {\r\n              if (is1155) {\r\n                totalMaxQuantity = data.maxQuantities.reduce(\r\n                  (total, currentQuantity) =>\r\n                    total + Number(currentQuantity.maxQuantity ?? 1),\r\n                  0\r\n                )\r\n              } else {\r\n                let maxQuantity = data.maxQuantities?.[0].maxQuantity\r\n                // if value is null/undefined, we don't know max quantity, but simulation succeeed with quantity of 1\r\n                totalMaxQuantity = maxQuantity ? Number(maxQuantity) : 1\r\n              }\r\n            } else {\r\n              totalMaxQuantity =\r\n                maxMintPerWallet && maxMintPerWallet > 0\r\n                  ? maxMintPerWallet\r\n                  : (maxMintQuantity || 1) > 20\r\n                  ? 20\r\n                  : maxMintQuantity || 1\r\n            }\r\n\r\n            setMaxItemAmount(\r\n              pathOrderQuantity > totalMaxQuantity\r\n                ? totalMaxQuantity > 20\r\n                  ? 20\r\n                  : totalMaxQuantity\r\n                : pathOrderQuantity > 20\r\n                ? 20\r\n                : pathOrderQuantity\r\n            )\r\n\r\n            // const maxQuantity =\r\n            //   maxMintPerWallet && maxMintPerWallet > 0\r\n            //     ? maxMintPerWallet\r\n            //     : (maxMintQuantity || 1) > 20\r\n            //     ? 20\r\n            //     : maxMintQuantity || 1\r\n            // setMaxItemAmount(maxQuantity)\r\n          }\r\n        })\r\n        .catch((err) => {\r\n          setOrders([])\r\n          setFetchMintPathError(err)\r\n          // throw err\r\n        })\r\n        .finally(() => {\r\n          setFetchedInitialOrders(true)\r\n          setIsFetchingPath(false)\r\n        })\r\n    },\r\n    [\r\n      open,\r\n      address,\r\n      client,\r\n      wallet,\r\n      rendererChain,\r\n      contract,\r\n      tokenId,\r\n      collection,\r\n      token,\r\n      tokenData?.token?.tokenId,\r\n      paymentCurrency?.chainId,\r\n      is1155,\r\n      feesOnTopBps,\r\n      feesOnTopUsd,\r\n    ]\r\n  )\r\n\r\n  useEffect(() => {\r\n    if (open && (collection || tokenData) && !paymentCurrency) {\r\n      fetchMintPath(paymentCurrency)\r\n    }\r\n  }, [fetchMintPath, open, collection, tokenData, paymentCurrency])\r\n\r\n  const setPaymentCurrency: typeof _setPaymentCurrency = useCallback(\r\n    (\r\n      value:\r\n        | EnhancedCurrency\r\n        | ((\r\n            prevState: EnhancedCurrency | undefined\r\n          ) => EnhancedCurrency | undefined)\r\n        | undefined\r\n    ) => {\r\n      if (typeof value === 'function') {\r\n        _setPaymentCurrency((prevState) => {\r\n          const newValue = value(prevState)\r\n          if (\r\n            newValue?.address !== paymentCurrency?.address ||\r\n            newValue?.chainId !== paymentCurrency?.chainId\r\n          ) {\r\n            fetchMintPath(newValue)?.catch((err) => {\r\n              if (\r\n                err?.statusCode === 400 &&\r\n                err?.message?.includes('Price too high')\r\n              ) {\r\n                _setPaymentCurrency(prevState)\r\n              }\r\n            })\r\n          }\r\n          return newValue\r\n        })\r\n      } else {\r\n        if (\r\n          value?.address !== paymentCurrency?.address ||\r\n          value?.chainId !== paymentCurrency?.chainId\r\n        ) {\r\n          _setPaymentCurrency(value)\r\n          fetchMintPath(value)?.catch((err) => {\r\n            if (\r\n              err?.statusCode === 400 &&\r\n              err?.message?.includes('Price too high')\r\n            ) {\r\n              _setPaymentCurrency(paymentCurrency)\r\n            }\r\n          })\r\n        }\r\n      }\r\n    },\r\n    [fetchMintPath, _setPaymentCurrency, paymentCurrency]\r\n  )\r\n\r\n  useEffect(() => {\r\n    let totalFees = 0n\r\n    if (\r\n      paymentCurrency?.currencyTotalRaw &&\r\n      paymentCurrency.currencyTotalRaw > 0n\r\n    ) {\r\n      let currencyTotalRawMinusRelayerFees = paymentCurrency?.currencyTotalRaw\r\n\r\n      // if there is a relayer fee, subtract from currencyTotalRaw\r\n      if (mintResponseFees?.relayer?.amount?.raw) {\r\n        const relayerFees = BigInt(mintResponseFees?.relayer?.amount?.raw ?? 0)\r\n        currencyTotalRawMinusRelayerFees -= relayerFees\r\n      }\r\n\r\n      if (feesOnTopBps && feesOnTopBps.length > 0) {\r\n        const fees = feesOnTopBps.reduce((totalFees, feeOnTop) => {\r\n          const [_, fee] = feeOnTop.split(':')\r\n          return (\r\n            totalFees +\r\n            (BigInt(fee) * currencyTotalRawMinusRelayerFees) / 10000n\r\n          )\r\n        }, 0n)\r\n\r\n        totalFees += fees\r\n        setFeeOnTop(fees)\r\n      } else if (feesOnTopUsd && feesOnTopUsd.length > 0 && usdPriceRaw) {\r\n        const fees = feesOnTopUsd.reduce((totalFees, feeOnTop) => {\r\n          const [_, fee] = feeOnTop.split(':')\r\n          const atomicFee = BigInt(fee)\r\n          const convertedAtomicFee =\r\n            atomicFee * BigInt(10 ** paymentCurrency?.decimals!)\r\n          const currencyFee = convertedAtomicFee / usdPriceRaw\r\n          return totalFees + currencyFee\r\n        }, 0n)\r\n        totalFees += fees\r\n        setFeeOnTop(fees)\r\n      } else {\r\n        setFeeOnTop(0n)\r\n      }\r\n      setTotalIncludingFees(paymentCurrency?.currencyTotalRaw + totalFees)\r\n      // setTotalIncludingFees(\r\n      //   paymentCurrency?.totalPriceWithoutFee\r\n      //     ? BigInt(Number(paymentCurrency?.totalPriceWithoutFee || 0)) +\r\n      //         totalFees\r\n      //     : paymentCurrency?.currencyTotalRaw + totalFees\r\n      // )\r\n    } else {\r\n      setTotalIncludingFees(0n)\r\n    }\r\n  }, [\r\n    feesOnTopBps,\r\n    feesOnTopUsd,\r\n    usdPriceRaw,\r\n    feeOnTop,\r\n    itemAmount,\r\n    paymentCurrency,\r\n    mintResponseFees,\r\n  ])\r\n\r\n  // const addFundsLink = paymentCurrency?.address\r\n  //   ? `https://jumper.exchange/?toChain=${rendererChain?.id}&toToken=${paymentCurrency?.address}`\r\n  //   : `https://jumper.exchange/?toChain=${rendererChain?.id}`\r\n  const addFundsLink = HALO_TRADE[chainId ? chainId : 1235]\r\n\r\n  // Determine if user has enough funds in paymentToken\r\n  useEffect(() => {\r\n    if (\r\n      paymentCurrency?.balance != undefined &&\r\n      totalIncludingFees != undefined &&\r\n      BigInt(paymentCurrency?.balance) < totalIncludingFees\r\n    ) {\r\n      setHasEnoughCurrency(false)\r\n    } else {\r\n      setHasEnoughCurrency(true)\r\n    }\r\n  }, [totalIncludingFees, paymentCurrency?.balance])\r\n\r\n  // Set initial payment currency\r\n  useEffect(() => {\r\n    if (paymentTokens[0] && !paymentCurrency && fetchedInitialOrders) {\r\n      if (!includeListingCurrency) {\r\n        _setPaymentCurrency(paymentTokens[0])\r\n      } else {\r\n        _setPaymentCurrency(chainCurrency)\r\n      }\r\n    }\r\n  }, [paymentTokens, paymentCurrency, fetchedInitialOrders])\r\n\r\n  // Reset state on close\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setOrders([])\r\n      setItemAmount(1)\r\n      setMaxItemAmount(1)\r\n      setMintStep(MintStep.Idle)\r\n      setTransactionError(null)\r\n      setFetchMintPathError(null)\r\n      setFetchedInitialOrders(false)\r\n      _setPaymentCurrency(undefined)\r\n      setStepData(null)\r\n      setMintResponseFees(undefined)\r\n    } else {\r\n      setItemAmount(defaultQuantity || 1)\r\n    }\r\n  }, [open])\r\n\r\n  // open\r\n  //   ? (axios.defaults.headers.common['x-rkui-context'] = 'mintModalRenderer')\r\n  //   : delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  useEffect(() => {\r\n    if (maxItemAmount > 0 && itemAmount > maxItemAmount) {\r\n      setItemAmount(maxItemAmount)\r\n    }\r\n\r\n    if (paymentCurrency?.currencyTotalRaw) {\r\n      paymentCurrency.currencyTotalRaw *= BigInt(itemAmount || 1)\r\n      _setPaymentCurrency(paymentCurrency)\r\n    }\r\n  }, [maxItemAmount, itemAmount])\r\n\r\n  const mintTokens = useCallback(async () => {\r\n    if (!wallet) {\r\n      onConnectWallet()\r\n      if (document.body.style) {\r\n        document.body.style.pointerEvents = 'auto'\r\n      }\r\n      client?.log(['Missing wallet, prompting connection'], LogLevel.Verbose)\r\n      return\r\n    }\r\n\r\n    let activeWalletChain = getAccount(config).chain\r\n    if (paymentCurrency?.chainId !== activeWalletChain?.id) {\r\n      activeWalletChain = await switchChain(config, {\r\n        chainId: paymentCurrency?.chainId as number,\r\n      })\r\n    }\r\n    if (paymentCurrency?.chainId !== activeWalletChain?.id) {\r\n      const error = new Error(`Mismatching chainIds`)\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!client) {\r\n      const error = new Error('ReservoirClient was not initialized')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    setTransactionError(null)\r\n    let options: MintTokenOptions = {\r\n      partial: false,\r\n      currencyChainId: paymentCurrency?.chainId,\r\n      onlyPath: false,\r\n    }\r\n\r\n    const relayerFee = BigInt(mintResponseFees?.relayer?.amount?.raw ?? 0)\r\n\r\n    if (feesOnTopBps && feesOnTopBps?.length > 0) {\r\n      const fixedFees = feesOnTopBps.map((fullFee) => {\r\n        const [referrer, feeBps] = fullFee.split(':')\r\n\r\n        let totalFeeTruncated = totalIncludingFees - feeOnTop\r\n\r\n        if (relayerFee) {\r\n          totalFeeTruncated -= relayerFee\r\n        }\r\n\r\n        const fee = Math.floor(\r\n          Number(totalFeeTruncated * BigInt(feeBps)) / 10000\r\n        )\r\n        const atomicUnitsFee = formatUnits(BigInt(fee), 0)\r\n        return `${referrer}:${atomicUnitsFee}`\r\n      })\r\n      options.feesOnTop = fixedFees\r\n    } else if (feesOnTopUsd && feesOnTopUsd.length > 0 && usdPriceRaw) {\r\n      const feesOnTopFixed = feesOnTopUsd.map((feeOnTop) => {\r\n        const [recipient, fee] = feeOnTop.split(':')\r\n        const atomicFee = BigInt(fee)\r\n        const convertedAtomicFee =\r\n          atomicFee * BigInt(10 ** paymentCurrency?.decimals!)\r\n        const currencyFee = convertedAtomicFee / usdPriceRaw\r\n        const parsedFee = formatUnits(currencyFee, 0)\r\n        return `${recipient}:${parsedFee}`\r\n      })\r\n      options.feesOnTop = feesOnTopFixed\r\n    } else if (!feesOnTopUsd && !feesOnTopBps) {\r\n      delete options.feesOnTop\r\n    }\r\n\r\n    setMintStep(MintStep.Approving)\r\n\r\n    // if (rendererChain?.name === auraEVMTestnet?.name) {\r\n    //   setStepData({\r\n    //     totalSteps: 1,\r\n    //     stepProgress: 1,\r\n    //     currentStep: {\r\n    //       kind: 'transaction',\r\n    //       action: 'Confirm transaction in your wallet',\r\n    //       description: '',\r\n    //       id: '1',\r\n    //     },\r\n    //     currentStepItem: {\r\n    //       status: 'incomplete',\r\n    //     },\r\n    //     path: undefined,\r\n    //   })\r\n    //   await wagmiWallet\r\n    //     ?.writeContract({\r\n    //       abi: [\r\n    //         {\r\n    //           inputs: [\r\n    //             {\r\n    //               internalType: 'address',\r\n    //               name: 'recipient',\r\n    //               type: 'address',\r\n    //             },\r\n    //             {\r\n    //               internalType: 'uint256',\r\n    //               name: 'quantity',\r\n    //               type: 'uint256',\r\n    //             },\r\n    //             {\r\n    //               internalType: 'string',\r\n    //               name: 'comment',\r\n    //               type: 'string',\r\n    //             },\r\n    //             {\r\n    //               internalType: 'address',\r\n    //               name: 'referrer',\r\n    //               type: 'address',\r\n    //             },\r\n    //           ],\r\n    //           name: 'mintWithRewards',\r\n    //           outputs: [],\r\n    //           stateMutability: 'payable',\r\n    //           type: 'function',\r\n    //         },\r\n    //       ],\r\n    //       address: collectionContract as `0x${string}`,\r\n    //       functionName: 'mintWithRewards',\r\n    //       args: [\r\n    //         address as `0x${string}`,\r\n    //         BigInt(itemAmount),\r\n    //         '',\r\n    //         address as `0x${string}`,\r\n    //       ],\r\n    //       gas: 500000n,\r\n    //       value: totalIncludingFees,\r\n    //     })\r\n    //     .then((hash) => {\r\n    //       const steps: Execute['steps'] = [\r\n    //         {\r\n    //           error: '',\r\n    //           errorData: [],\r\n    //           action: '',\r\n    //           description: '',\r\n    //           kind: 'transaction',\r\n    //           id: '',\r\n    //           items: [\r\n    //             {\r\n    //               status: 'complete',\r\n    //               transfersData: [\r\n    //                 {\r\n    //                   amount: itemAmount?.toString(),\r\n    //                 },\r\n    //               ],\r\n    //               txHashes: [\r\n    //                 {\r\n    //                   txHash: hash,\r\n    //                   chainId: chainId ? chainId : 1235,\r\n    //                 },\r\n    //               ],\r\n    //             },\r\n    //           ],\r\n    //         },\r\n    //       ]\r\n\r\n    //       if (\r\n    //         steps &&\r\n    //         steps?.length > 0 &&\r\n    //         steps[0]?.items &&\r\n    //         steps[0]?.items?.length > 0\r\n    //       ) {\r\n    //         setStepData({\r\n    //           totalSteps: 1,\r\n    //           stepProgress: 1,\r\n    //           currentStep: steps[0],\r\n    //           currentStepItem: steps[0]?.items[0],\r\n    //           path: undefined,\r\n    //         })\r\n    //       }\r\n    //       setMintStep(MintStep.Finalizing)\r\n\r\n    //       publicClient\r\n    //         .waitForTransactionReceipt({ hash })\r\n    //         .then((res) => {\r\n    //           if (res?.status === 'success') {\r\n    //             setTimeout(() => {\r\n    //               setMintStep(MintStep.Complete)\r\n    //             }, 5000)\r\n    //           }\r\n    //         })\r\n    //         .catch((error) => {\r\n    //           setMintStep(MintStep.SelectPayment)\r\n    //           setTransactionError(error)\r\n    //         })\r\n    //     })\r\n    //     .catch((err) => {\r\n    //       setMintStep(MintStep.SelectPayment)\r\n    //       setTransactionError(err)\r\n    //     })\r\n    // } else {\r\n    //   client.actions\r\n    //     .mintToken({\r\n    //       chainId: rendererChain?.id,\r\n    //       items: [\r\n    //         {\r\n    //           collection: tokenData?.token?.tokenId\r\n    //             ? undefined\r\n    //             : collection?.id,\r\n    //           token: tokenData?.token?.tokenId\r\n    //             ? `${collectionContract}:${tokenData?.token?.tokenId}`\r\n    //             : undefined,\r\n    //           quantity: itemAmount,\r\n    //         },\r\n    //       ],\r\n    //       expectedPrice: {\r\n    //         [paymentCurrency?.address || zeroAddress]: {\r\n    //           raw: totalIncludingFees - relayerFee,\r\n    //           currencyAddress: paymentCurrency?.address,\r\n    //           currencyDecimals: paymentCurrency?.decimals || 18,\r\n    //         },\r\n    //       },\r\n    //       wallet,\r\n    //       options,\r\n    //       onProgress: (steps: Execute['steps'], path: Execute['path']) => {\r\n    //         if (!steps) {\r\n    //           return\r\n    //         }\r\n\r\n    //         const executableSteps = steps.filter(\r\n    //           (step) => step.items && step.items.length > 0\r\n    //         )\r\n\r\n    //         let stepCount = executableSteps.length\r\n\r\n    //         let currentStepItem:\r\n    //           | NonNullable<Execute['steps'][0]['items']>[0]\r\n    //           | undefined\r\n\r\n    //         const currentStepIndex = executableSteps.findIndex((step) => {\r\n    //           currentStepItem = step.items?.find(\r\n    //             (item) => item.status === 'incomplete'\r\n    //           )\r\n    //           return currentStepItem\r\n    //         })\r\n\r\n    //         const currentStep =\r\n    //           currentStepIndex > -1\r\n    //             ? executableSteps[currentStepIndex]\r\n    //             : executableSteps[stepCount - 1]\r\n\r\n    //         if (currentStepItem) {\r\n    //           setStepData({\r\n    //             totalSteps: stepCount,\r\n    //             stepProgress: currentStepIndex,\r\n    //             currentStep,\r\n    //             currentStepItem,\r\n    //             path: path,\r\n    //           })\r\n    //         }\r\n\r\n    //         if (\r\n    //           currentStepIndex + 1 === executableSteps.length &&\r\n    //           currentStep?.items?.every((item) => item.txHashes)\r\n    //         ) {\r\n    //           setMintStep(MintStep.Finalizing)\r\n    //         }\r\n\r\n    //         if (\r\n    //           steps.every(\r\n    //             (step) =>\r\n    //               !step.items ||\r\n    //               step.items.length == 0 ||\r\n    //               step.items?.every((item) => item.status === 'complete')\r\n    //           )\r\n    //         ) {\r\n    //           setMintStep(MintStep.Complete)\r\n    //         }\r\n    //       },\r\n    //     })\r\n    //     .catch((error: Error) => {\r\n    //       setTransactionError(error)\r\n    //       setMintStep(MintStep.Idle)\r\n    //       mutateCollection()\r\n    //       fetchMintPath(paymentCurrency)\r\n    //     })\r\n    // }\r\n    client.actions\r\n      .mintToken({\r\n        chainId: rendererChain?.id,\r\n        items: [\r\n          {\r\n            collection: tokenData?.token?.tokenId ? undefined : collection?.id,\r\n            token: tokenData?.token?.tokenId\r\n              ? `${collectionContract}:${tokenData?.token?.tokenId}`\r\n              : undefined,\r\n            quantity: itemAmount,\r\n          },\r\n        ],\r\n        expectedPrice: {\r\n          [paymentCurrency?.address || zeroAddress]: {\r\n            raw: totalIncludingFees - relayerFee,\r\n            currencyAddress: paymentCurrency?.address,\r\n            currencyDecimals: paymentCurrency?.decimals || 18,\r\n          },\r\n        },\r\n        wallet,\r\n        options,\r\n        onProgress: (steps: Execute['steps'], path: Execute['path']) => {\r\n          if (!steps) {\r\n            return\r\n          }\r\n\r\n          const executableSteps = steps.filter(\r\n            (step) => step.items && step.items.length > 0\r\n          )\r\n\r\n          let stepCount = executableSteps.length\r\n\r\n          let currentStepItem:\r\n            | NonNullable<Execute['steps'][0]['items']>[0]\r\n            | undefined\r\n\r\n          const currentStepIndex = executableSteps.findIndex((step) => {\r\n            currentStepItem = step.items?.find(\r\n              (item) => item.status === 'incomplete'\r\n            )\r\n            return currentStepItem\r\n          })\r\n\r\n          const currentStep =\r\n            currentStepIndex > -1\r\n              ? executableSteps[currentStepIndex]\r\n              : executableSteps[stepCount - 1]\r\n\r\n          if (currentStepItem) {\r\n            setStepData({\r\n              totalSteps: stepCount,\r\n              stepProgress: currentStepIndex,\r\n              currentStep,\r\n              currentStepItem,\r\n              path: path,\r\n            })\r\n          }\r\n\r\n          if (\r\n            currentStepIndex + 1 === executableSteps.length &&\r\n            currentStep?.items?.every((item) => item.txHashes)\r\n          ) {\r\n            setMintStep(MintStep.Finalizing)\r\n          }\r\n\r\n          if (\r\n            steps.every(\r\n              (step) =>\r\n                !step.items ||\r\n                step.items.length == 0 ||\r\n                step.items?.every((item) => item.status === 'complete')\r\n            )\r\n          ) {\r\n            setMintStep(MintStep.Complete)\r\n          }\r\n        },\r\n      })\r\n      .catch((error: Error) => {\r\n        setTransactionError(error)\r\n        setMintStep(MintStep.Idle)\r\n        mutateCollection()\r\n        fetchMintPath(paymentCurrency)\r\n      })\r\n  }, [\r\n    client,\r\n    wallet,\r\n    config,\r\n    address,\r\n    wagmiChain,\r\n    rendererChain,\r\n    contract,\r\n    token,\r\n    feesOnTopBps,\r\n    onConnectWallet,\r\n    feesOnTopUsd,\r\n    itemAmount,\r\n    paymentCurrency?.address,\r\n    paymentCurrency?.chainId,\r\n    paymentCurrency?.currencyTotalRaw,\r\n    totalIncludingFees,\r\n    tokenData?.token?.tokenId,\r\n    collection?.id,\r\n    collectionContract,\r\n    mintResponseFees,\r\n    usdPriceRaw,\r\n  ])\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        loading:\r\n          isFetchingCollections ||\r\n          (!isFetchingCollections && collection && !fetchedInitialOrders) ||\r\n          ((token !== undefined || isSingleToken1155) && !tokenData) ||\r\n          !(paymentTokens.length > 0),\r\n        isFetchingPath,\r\n        collection,\r\n        token: tokenData,\r\n        orders,\r\n        totalIncludingFees,\r\n        mintResponseFees,\r\n        feeOnTop,\r\n        feeUsd,\r\n        paymentTokens,\r\n        paymentCurrency,\r\n        setPaymentCurrency,\r\n        addFundsLink,\r\n        chainCurrency,\r\n        itemAmount,\r\n        setItemAmount,\r\n        maxItemAmount,\r\n        setMaxItemAmount,\r\n        usdPrice,\r\n        usdPriceRaw,\r\n        currentChain,\r\n        address,\r\n        isConnected: wallet !== undefined,\r\n        disableJumperLink,\r\n        balance: paymentCurrency?.balance\r\n          ? BigInt(paymentCurrency.balance)\r\n          : undefined,\r\n        hasEnoughCurrency,\r\n        transactionError,\r\n        fetchMintPathError,\r\n        stepData,\r\n        mintStep,\r\n        setStepData,\r\n        setMintStep,\r\n        mintTokens,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n","import React, { FC } from 'react'\r\nimport { Execute } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { truncateAddress } from '../lib/truncate'\r\nimport getChainBlockExplorerUrl from '../lib/getChainBlockExplorerUrl'\r\nimport { Anchor, Flex } from '../primitives'\r\nimport { CSS } from '@stitches/react'\r\n\r\ntype CurrentStepTxHashesProps = {\r\n  currentStep?: Execute['steps'][0]\r\n  css?: CSS\r\n}\r\n\r\nexport const CurrentStepTxHashes: FC<CurrentStepTxHashesProps> = ({\r\n  currentStep,\r\n  css,\r\n}) => {\r\n  const hasValidTxHashes = currentStep?.items?.some(\r\n    (item) =>\r\n      (Array.isArray(item?.txHashes) && item.txHashes.length > 0) ||\r\n      (Array.isArray(item?.internalTxHashes) &&\r\n        item.internalTxHashes.length > 0)\r\n  )\r\n\r\n  // Return null if there are no valid txHashes or internalTxHashes\r\n  if (!hasValidTxHashes) {\r\n    return null\r\n  }\r\n  return (\r\n    <Flex\r\n      direction=\"column\"\r\n      align=\"center\"\r\n      css={{ width: '100%', gap: '$2', mb: '$3', px: '$5', ...css }}\r\n    >\r\n      {currentStep?.items?.map((item, itemIndex) => {\r\n        // Check if txHashes and internalTxHashes arrays are valid and merge them\r\n        const validTxHashes =\r\n          Array.isArray(item?.txHashes) && item?.txHashes.length > 0\r\n            ? item.txHashes\r\n            : []\r\n        const validInternalTxHashes =\r\n          Array.isArray(item?.internalTxHashes) &&\r\n          item?.internalTxHashes.length > 0\r\n            ? item.internalTxHashes\r\n            : []\r\n        const allTxHashes = [...validTxHashes, ...validInternalTxHashes]\r\n        if (allTxHashes?.length > 0) {\r\n          const distinctTxHashes = [\r\n            ...[\r\n              ...new Map(\r\n                allTxHashes?.map((item) => [item['txHash'], item])\r\n              ).values(),\r\n            ],\r\n          ]\r\n          return distinctTxHashes?.map((hash, txHashIndex) => {\r\n            const truncatedTxHash = truncateAddress(hash.txHash)\r\n            const blockExplorerBaseUrl = getChainBlockExplorerUrl(hash.chainId)\r\n            return (\r\n              <Anchor\r\n                key={`${itemIndex}-${txHashIndex}`}\r\n                href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                color=\"primary\"\r\n                weight=\"medium\"\r\n                target=\"_blank\"\r\n                css={{ fontSize: 12 }}\r\n              >\r\n                View transaction: {truncatedTxHash}\r\n              </Anchor>\r\n            )\r\n          })\r\n        } else {\r\n          return null\r\n        }\r\n      })}\r\n    </Flex>\r\n  )\r\n}\r\n","import React, { FC, useEffect, useState } from 'react'\r\nimport { TokenCheckout } from './TokenCheckout'\r\nimport { Execute, ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { ApproveCollapsible } from './ApproveCollapisble'\r\nimport { Flex } from '../primitives'\r\n\r\ntype Props = {\r\n  title?: string\r\n  item: NonNullable<Execute['steps'][0]['items']>[0]\r\n  pathMap: Record<string, NonNullable<Execute['path']>[0]>\r\n  usdPrice: number\r\n  chain?: ReservoirChain | null\r\n  open?: boolean\r\n}\r\n\r\nexport const ApprovePurchasingCollapsible: FC<Props> = ({\r\n  item,\r\n  pathMap,\r\n  usdPrice,\r\n  chain,\r\n  open,\r\n}) => {\r\n  const [collapsibleOpen, setCollapsibleOpen] = useState(false)\r\n\r\n  const isComplete = item && item?.status == 'complete'\r\n  const itemCount = item?.orderIds?.length || 1\r\n\r\n  function processOrders(orderIds: string[]) {\r\n    let totalPrice = 0\r\n    let images: string[] = []\r\n\r\n    orderIds.forEach((orderId: string) => {\r\n      const path = pathMap[orderId]\r\n\r\n      if (path) {\r\n        let imageRedirect = `${chain?.baseApiUrl}/redirect/tokens/${path.contract}:${path.tokenId}/image/v1?imageSize=small`\r\n        images.push(imageRedirect)\r\n        totalPrice += path.quote || 0\r\n      }\r\n    })\r\n\r\n    images = images.slice(0, 2)\r\n\r\n    return { totalPrice, images }\r\n  }\r\n\r\n  const { totalPrice, images } = processOrders(item?.orderIds as string[])\r\n\r\n  useEffect(() => {\r\n    if (open !== undefined && open !== collapsibleOpen) {\r\n      setCollapsibleOpen(open)\r\n    }\r\n  }, [open])\r\n\r\n  return (\r\n    <ApproveCollapsible\r\n      title={'Approve transaction'}\r\n      open={collapsibleOpen}\r\n      onOpenChange={setCollapsibleOpen}\r\n      isComplete={isComplete}\r\n    >\r\n      <Flex\r\n        justify=\"between\"\r\n        align=\"center\"\r\n        css={{\r\n          px: '$4',\r\n          pb: '$2',\r\n        }}\r\n      >\r\n        <TokenCheckout\r\n          usdPrice={usdPrice}\r\n          itemCount={itemCount}\r\n          totalPrice={totalPrice}\r\n          images={images}\r\n          size={0}\r\n        />\r\n      </Flex>\r\n    </ApproveCollapsible>\r\n  )\r\n}\r\n","import { ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\nimport React, { FC } from 'react'\r\nimport { Cart } from '../context/CartProvider'\r\nimport {\r\n  Flex,\r\n  FormatCryptoCurrency,\r\n  FormatCurrency,\r\n  Img,\r\n  Text,\r\n} from '../primitives'\r\n\r\nenum Size {\r\n  SM,\r\n  LG,\r\n}\r\n\r\ntype Props = {\r\n  itemCount: number\r\n  images: string[]\r\n  totalPrice: number\r\n  usdPrice: number\r\n  currency?: NonNullable<Cart['items'][0]['price']>['currency']\r\n  chain?: ReservoirChain | null\r\n  size?: Size\r\n}\r\n\r\nexport const TokenCheckout: FC<Props> = ({\r\n  itemCount,\r\n  images,\r\n  totalPrice,\r\n  usdPrice,\r\n  currency,\r\n  chain,\r\n  size = Size.LG,\r\n}) => {\r\n  const itemSubject = itemCount > 1 ? 'items' : 'item'\r\n  return (\r\n    <Flex justify=\"between\" align=\"center\" css={{ width: '100%' }}>\r\n      <Flex align=\"center\" css={{ gap: size == Size.SM ? '$3' : '$4' }}>\r\n        <Flex>\r\n          {images.map((image) => (\r\n            <Img\r\n              src={image}\r\n              key={image}\r\n              css={{\r\n                borderRadius: 4,\r\n                objectFit: 'cover',\r\n                height: size == Size.SM ? 40 : 56,\r\n                width: size == Size.SM ? 40 : 56,\r\n                '& + img, & + div': {\r\n                  marginLeft: size == Size.SM ? -32 : -48,\r\n                  zIndex: -1,\r\n                },\r\n              }}\r\n            />\r\n          ))}\r\n        </Flex>\r\n        <Text style={size == Size.SM ? 'subtitle3' : 'h6'}>\r\n          {itemCount} {itemSubject}\r\n        </Text>\r\n      </Flex>\r\n      <Flex direction=\"column\" align=\"end\" css={{ gap: '$1' }}>\r\n        <FormatCryptoCurrency\r\n          textStyle={size == Size.SM ? 'subtitle3' : 'h6'}\r\n          amount={totalPrice}\r\n          address={currency?.contract}\r\n          decimals={currency?.decimals}\r\n          symbol={currency?.symbol}\r\n          logoWidth={size == Size.SM ? 12 : 18}\r\n          chainId={chain?.id}\r\n        />\r\n        {usdPrice ? (\r\n          <FormatCurrency\r\n            amount={usdPrice * totalPrice}\r\n            style=\"subtitle3\"\r\n            color=\"subtle\"\r\n            css={{ textAlign: 'end' }}\r\n          />\r\n        ) : null}\r\n      </Flex>\r\n    </Flex>\r\n  )\r\n}\r\n","import React, { FC, useMemo } from 'react'\r\nimport { Box, Flex, Text } from '../../primitives'\r\nimport TokenMedia from '../../components/TokenMedia'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faImage } from '@fortawesome/free-solid-svg-icons'\r\nimport { useTokens } from '../../hooks'\r\nimport { MintModalStepData } from './MintModalRenderer'\r\n\r\ntype Props = {\r\n  stepData: MintModalStepData | null\r\n  tokenKind: NonNullable<\r\n    NonNullable<NonNullable<ReturnType<typeof useTokens>['data']>['0']>['token']\r\n  >['kind']\r\n}\r\n\r\nexport const MintImages: FC<Props> = ({ stepData, tokenKind }) => {\r\n  const totalTransfersDataLength = useMemo(() => {\r\n    return (\r\n      stepData?.currentStep?.items?.reduce((total, item) => {\r\n        return total + (item?.transfersData?.length || 0)\r\n      }, 0) ?? 0\r\n    )\r\n  }, [stepData?.currentStep?.items])\r\n\r\n  return (\r\n    <Flex css={{ width: '100%', overflow: 'hidden', position: 'relative' }}>\r\n      <Box\r\n        css={{\r\n          position: 'absolute',\r\n          top: 0,\r\n          bottom: 0,\r\n          left: 0,\r\n          zIndex: 2,\r\n          width: '32px',\r\n          background:\r\n            'linear-gradient(-90deg, rgba(255, 255, 255, 0) 0%, $neutralBgSubtle 50%)',\r\n        }}\r\n      />\r\n      <Flex\r\n        align=\"center\"\r\n        css={{\r\n          width: '100%',\r\n          overflowX: totalTransfersDataLength > 3 ? 'scroll' : 'auto',\r\n          gap: '$2',\r\n          px: '$5',\r\n          pb: 10,\r\n          position: 'relative',\r\n          justifyContent:\r\n            totalTransfersDataLength > 3 ? 'flex-start' : 'center',\r\n        }}\r\n      >\r\n        {stepData?.currentStep?.items?.map((item, itemIndex) => (\r\n          <React.Fragment key={`item-${itemIndex}`}>\r\n            {item?.transfersData?.map((mint, mintIndex) => {\r\n              if (mint?.token?.tokenId && mint?.token?.contract)\r\n                return (\r\n                  <Flex\r\n                    direction=\"column\"\r\n                    align=\"center\"\r\n                    key={`mint-${mintIndex}`}\r\n                    css={{ gap: '$2' }}\r\n                  >\r\n                    <TokenMedia\r\n                      token={{\r\n                        tokenId: mint?.token?.tokenId,\r\n                        collection: {\r\n                          id: mint?.token?.contract,\r\n                        },\r\n                        kind: tokenKind,\r\n                      }}\r\n                      fallbackMode=\"simple\"\r\n                      style={{ width: 100, height: 100 }}\r\n                      fallback={() => (\r\n                        <Flex\r\n                          css={{\r\n                            borderRadius: 4,\r\n                            objectFit: 'cover',\r\n                            height: 100,\r\n                            width: 100,\r\n                            background: '$neutralBgActive',\r\n                          }}\r\n                          justify=\"center\"\r\n                          align=\"center\"\r\n                        >\r\n                          <FontAwesomeIcon icon={faImage} size=\"2x\" />\r\n                        </Flex>\r\n                      )}\r\n                    />\r\n                    <Text style=\"subtitle3\">#{mint?.token?.tokenId}</Text>\r\n                  </Flex>\r\n                )\r\n            })}\r\n          </React.Fragment>\r\n        ))}\r\n      </Flex>\r\n      <Box\r\n        css={{\r\n          position: 'absolute',\r\n          top: 0,\r\n          bottom: 0,\r\n          right: 0,\r\n          zIndex: 2,\r\n          width: '32px',\r\n          background:\r\n            'linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, $neutralBgSubtle 50%)',\r\n        }}\r\n      />\r\n    </Flex>\r\n  )\r\n}\r\n","import React, {\r\n  CSSProperties,\r\n  FC,\r\n  ReactElement,\r\n  SyntheticEvent,\r\n  useContext,\r\n  useState,\r\n  useRef,\r\n  LegacyRef,\r\n  VideoHTMLAttributes,\r\n  AudioHTMLAttributes,\r\n  IframeHTMLAttributes,\r\n  useEffect,\r\n  ComponentPropsWithoutRef,\r\n} from 'react'\r\nimport { useTokens } from '../../hooks'\r\nimport { useModelViewer } from '../../hooks'\r\nimport { ThemeContext } from '../../ReservoirKitProvider'\r\nimport { Box, Loader } from '../../primitives'\r\nimport MediaPlayButton from './MediaPlayButton'\r\nimport { useMeasure } from '@react-hookz/web'\r\nimport TokenFallback from './TokenFallback'\r\nimport { useReadContract } from 'wagmi'\r\nimport { convertTokenUriToImage } from '../../lib/processTokenURI'\r\nimport { erc1155ABI } from '../../constants/abis'\r\nimport { Address, erc721Abi } from 'viem'\r\n\r\ntype MediaType =\r\n  | 'mp4'\r\n  | 'mp3'\r\n  | 'wav'\r\n  | 'm4a'\r\n  | 'mov'\r\n  | 'gltf'\r\n  | 'glb'\r\n  | 'png'\r\n  | 'jpeg'\r\n  | 'jpg'\r\n  | 'svg'\r\n  | 'gif'\r\n  | 'html'\r\n  | 'other'\r\n  | undefined\r\n\r\nexport const extractMediaType = (tokenMedia?: string): MediaType | null => {\r\n  let extension: string | null = null\r\n  if (tokenMedia) {\r\n    const pieces = tokenMedia.split('/')\r\n    const file =\r\n      pieces && pieces[pieces.length - 1] ? pieces[pieces.length - 1] : null\r\n    const matches = file ? file.match('(\\\\.[^.]+)$') : null\r\n    extension = matches && matches[0] ? matches[0].replace('.', '') : null\r\n  }\r\n  return (extension as MediaType) ? (extension as MediaType) : null\r\n}\r\n\r\nconst normalizeContentType = (contentType?: string) => {\r\n  if (contentType?.includes('video/')) {\r\n    return contentType.replace('video/', '')\r\n  }\r\n  if (contentType?.includes('audio/')) {\r\n    return contentType.replace('audio/', '')\r\n  }\r\n  if (contentType?.includes('image/svg+xml')) {\r\n    return 'svg'\r\n  }\r\n  if (contentType?.includes('image/')) {\r\n    return contentType.replace('image/', '')\r\n  }\r\n  if (contentType?.includes('text/')) {\r\n    return contentType.replace('text/', '')\r\n  }\r\n  return null\r\n}\r\n\r\ntype Token = NonNullable<\r\n  NonNullable<ReturnType<typeof useTokens>['data']>['0']\r\n>['token']\r\n\r\ntype RequiredTokenProps = Pick<\r\n  NonNullable<Token>,\r\n  | 'image'\r\n  | 'media'\r\n  | 'collection'\r\n  | 'tokenId'\r\n  | 'imageSmall'\r\n  | 'imageLarge'\r\n  | 'kind'\r\n>\r\n\r\ntype Props = {\r\n  token?: RequiredTokenProps\r\n  staticOnly?: boolean\r\n  imageResolution?: 'small' | 'medium' | 'large'\r\n  style?: CSSProperties\r\n  className?: string\r\n  modelViewerOptions?: any\r\n  videoOptions?: VideoHTMLAttributes<HTMLVideoElement>\r\n  audioOptions?: AudioHTMLAttributes<HTMLAudioElement>\r\n  iframeOptions?: IframeHTMLAttributes<HTMLIFrameElement>\r\n  disableOnChainRendering?: boolean\r\n  chainId?: number\r\n  fallbackMode?: ComponentPropsWithoutRef<typeof TokenFallback>['mode']\r\n  fallback?: (mediaType: MediaType | null) => ReactElement | null\r\n  onError?: (e: Event) => void\r\n  onRefreshToken?: () => void\r\n}\r\n\r\nconst TokenMedia: FC<Props> = ({\r\n  token,\r\n  staticOnly,\r\n  imageResolution,\r\n  style,\r\n  className,\r\n  modelViewerOptions = {},\r\n  videoOptions = {},\r\n  audioOptions = {},\r\n  iframeOptions = {},\r\n  disableOnChainRendering,\r\n  chainId,\r\n  fallbackMode,\r\n  fallback,\r\n  onError = () => {},\r\n  onRefreshToken = () => {},\r\n}) => {\r\n  const [detectingMediaType, setDetectingMediaType] = useState(false)\r\n  const [mediaType, setMediaType] = useState<MediaType | null>(null)\r\n  const mediaRef = useRef<HTMLAudioElement | HTMLVideoElement>(null)\r\n  const themeContext = useContext(ThemeContext)\r\n  let borderRadius: string = themeContext?.radii?.borderRadius?.value || '0'\r\n  const [error, setError] = useState<SyntheticEvent | Event | null>(null)\r\n  const media = token?.media\r\n  const tokenImage = (() => {\r\n    switch (imageResolution) {\r\n      case 'small':\r\n        return token?.imageSmall\r\n      case 'large':\r\n        return token?.imageLarge\r\n      case 'medium':\r\n      default:\r\n        return token?.image\r\n    }\r\n  })()\r\n  useEffect(() => {\r\n    setDetectingMediaType(true)\r\n    let abort = false\r\n    let type = extractMediaType(token?.media)\r\n\r\n    if (!type && token?.media) {\r\n      async function getContentType(tokenMedia: string) {\r\n        const response = await fetch(tokenMedia)\r\n        return response.headers.get('content-type')\r\n      }\r\n      getContentType(token.media)\r\n        .then((contentType) => {\r\n          if (contentType && !abort) {\r\n            const normalizedContentType = normalizeContentType(contentType)\r\n            type = extractMediaType(`.${normalizedContentType}`)\r\n            setMediaType(type)\r\n          }\r\n        })\r\n        .finally(() => {\r\n          setDetectingMediaType(false)\r\n        })\r\n    } else {\r\n      setMediaType(type)\r\n      setDetectingMediaType(false)\r\n    }\r\n    return () => {\r\n      abort = true\r\n      setDetectingMediaType(false)\r\n    }\r\n  }, [token?.media])\r\n\r\n  const defaultStyle: CSSProperties = {\r\n    width: '150px',\r\n    height: '150px',\r\n    objectFit: 'cover',\r\n    borderRadius,\r\n    position: 'relative',\r\n  }\r\n\r\n  const maxWidthStyle: CSSProperties = {\r\n    maxWidth: 'unset'\r\n  }\r\n\r\n  const computedStyle = {\r\n    ...defaultStyle,\r\n    ...style,\r\n    ...maxWidthStyle\r\n  }\r\n\r\n  useModelViewer(\r\n    !staticOnly && mediaType && (mediaType === 'gltf' || mediaType === 'glb')\r\n      ? true\r\n      : false\r\n  )\r\n\r\n  const [measurements, containerRef] = useMeasure<HTMLDivElement>()\r\n  const isContainerLarge = (measurements?.width || 0) >= 360\r\n\r\n  const contract = token?.collection?.id?.split(':')[0] as Address\r\n\r\n  const [onChainImage, setOnChainImage] = useState('')\r\n  const [onChainImageBroken, setOnChainImageBroken] = useState(false)\r\n  const [isUpdatingOnChainImage, setIsUpdatingOnChainImage] = useState(false)\r\n\r\n  const is1155 = token?.kind === 'erc1155'\r\n\r\n  const {\r\n    data: tokenURI,\r\n    isLoading: isFetchingTokenURI,\r\n    isError: fetchTokenURIError,\r\n  } = useReadContract(\r\n    // @ts-ignore\r\n    !disableOnChainRendering && (error || (!media && !tokenImage))\r\n      ? {\r\n          address: contract,\r\n          abi: is1155 ? erc1155ABI : erc721Abi,\r\n          functionName: is1155 ? 'uri' : 'tokenURI',\r\n          args: token?.tokenId ? [BigInt(token?.tokenId)] : undefined,\r\n          chainId: chainId,\r\n        }\r\n      : undefined\r\n  )\r\n\r\n  useEffect(() => {\r\n    if (tokenURI) {\r\n      setIsUpdatingOnChainImage(true)\r\n      ;(async () => {\r\n        const updatedOnChainImage = await convertTokenUriToImage(tokenURI, chainId)\r\n        setOnChainImage(updatedOnChainImage)\r\n      })().then(() => {\r\n        setIsUpdatingOnChainImage(false)\r\n      })\r\n    }\r\n  }, [tokenURI])\r\n\r\n  useEffect(() => {\r\n    if (mediaRef && mediaRef.current) {\r\n      mediaRef.current.load()\r\n    }\r\n  }, [media])\r\n\r\n  if (!token && !staticOnly) {\r\n    console.warn('A token object or a media url are required!')\r\n    return null\r\n  }\r\n\r\n  if (detectingMediaType) {\r\n    return <Loader style={{ ...computedStyle }} />\r\n  }\r\n\r\n  if (error || (!media && !tokenImage)) {\r\n    if (\r\n      !disableOnChainRendering &&\r\n      !onChainImageBroken &&\r\n      !fetchTokenURIError\r\n    ) {\r\n      return (\r\n        <>\r\n          {isFetchingTokenURI || isUpdatingOnChainImage ? (\r\n            <Loader style={{ ...computedStyle }} />\r\n          ) : (\r\n            <img\r\n              src={onChainImage}\r\n              style={{ ...computedStyle }}\r\n              alt=\"Token Image\"\r\n              onError={(e: React.SyntheticEvent<HTMLImageElement, Event>) => {\r\n                setOnChainImageBroken(true)\r\n              }}\r\n            />\r\n          )}\r\n        </>\r\n      )\r\n    }\r\n\r\n    let fallbackElement: ReactElement | null | undefined\r\n    if (fallback) {\r\n      fallbackElement = fallback(mediaType)\r\n    }\r\n    if (!fallbackElement) {\r\n      fallbackElement = (\r\n        <TokenFallback\r\n          style={style}\r\n          className={className}\r\n          token={token}\r\n          mode={fallbackMode}\r\n          onRefreshClicked={onRefreshToken}\r\n        />\r\n      )\r\n    }\r\n    return fallbackElement\r\n  }\r\n\r\n  const onErrorCb = (e: SyntheticEvent) => {\r\n    setError(e)\r\n    onError(e.nativeEvent)\r\n  }\r\n\r\n  if (staticOnly || !media) {\r\n    return (\r\n      <img\r\n        alt=\"Token Image\"\r\n        src={tokenImage}\r\n        style={{\r\n          ...computedStyle,\r\n          visibility:\r\n            !tokenImage || tokenImage.length === 0 ? 'hidden' : 'visible',\r\n        }}\r\n        className={className}\r\n        onError={onErrorCb}\r\n      />\r\n    )\r\n  }\r\n\r\n  // VIDEO\r\n  if (mediaType === 'mp4' || mediaType === 'mov') {\r\n    return (\r\n      <Box className={className} style={computedStyle} ref={containerRef}>\r\n        {!isContainerLarge && <MediaPlayButton mediaRef={mediaRef} />}\r\n        <video\r\n          style={computedStyle}\r\n          className={className}\r\n          poster={tokenImage}\r\n          {...videoOptions}\r\n          controls={isContainerLarge}\r\n          loop\r\n          playsInline\r\n          onError={onErrorCb}\r\n          ref={mediaRef as LegacyRef<HTMLVideoElement>}\r\n        >\r\n          <source src={media} type=\"video/mp4\" />\r\n          Your browser does not support the\r\n          <code>video</code> element.\r\n        </video>\r\n      </Box>\r\n    )\r\n  }\r\n\r\n  // AUDIO\r\n  if (mediaType === 'wav' || mediaType === 'mp3' || mediaType === 'm4a') {\r\n    return (\r\n      <Box className={className} style={computedStyle} ref={containerRef}>\r\n        {!isContainerLarge && <MediaPlayButton mediaRef={mediaRef} />}\r\n        <img\r\n          alt=\"Audio Poster\"\r\n          src={tokenImage}\r\n          style={{\r\n            position: 'absolute',\r\n            height: '100%',\r\n            width: '100%',\r\n            visibility:\r\n              !tokenImage || tokenImage.length === 0 ? 'hidden' : 'visible',\r\n            objectFit: 'cover',\r\n          }}\r\n          onError={onErrorCb}\r\n        />\r\n        <audio\r\n          src={media}\r\n          {...audioOptions}\r\n          onError={onErrorCb}\r\n          ref={mediaRef}\r\n          controls={isContainerLarge}\r\n          style={{\r\n            position: 'absolute',\r\n            bottom: 16,\r\n            left: 16,\r\n            width: 'calc(100% - 32px)',\r\n          }}\r\n        >\r\n          Your browser does not support the\r\n          <code>audio</code> element.\r\n        </audio>\r\n      </Box>\r\n    )\r\n  }\r\n\r\n  // 3D\r\n  if (mediaType === 'gltf' || mediaType === 'glb') {\r\n    return (\r\n      //@ts-ignore\r\n      <model-viewer\r\n        src={media}\r\n        ar\r\n        ar-modes=\"webxr scene-viewer quick-look\"\r\n        poster={tokenImage}\r\n        seamless-poster\r\n        shadow-intensity=\"1\"\r\n        camera-controls\r\n        enable-pan\r\n        {...modelViewerOptions}\r\n        style={computedStyle}\r\n        className={className}\r\n        onError={onErrorCb}\r\n        //@ts-ignore\r\n      ></model-viewer>\r\n    )\r\n  }\r\n\r\n  //Image\r\n  if (\r\n    mediaType === 'png' ||\r\n    mediaType === 'jpeg' ||\r\n    mediaType === 'jpg' ||\r\n    mediaType === 'gif'\r\n  ) {\r\n    return (\r\n      <img\r\n        alt=\"Token Image\"\r\n        src={media}\r\n        className={className}\r\n        style={{\r\n          ...computedStyle,\r\n          visibility: !media || media.length === 0 ? 'hidden' : 'visible',\r\n        }}\r\n        onError={onErrorCb}\r\n      />\r\n    )\r\n  }\r\n\r\n  // HTML\r\n  if (\r\n    mediaType === 'html' ||\r\n    mediaType === null ||\r\n    mediaType === undefined ||\r\n    mediaType === 'other' ||\r\n    mediaType === 'svg'\r\n  ) {\r\n    return (\r\n      <iframe\r\n        style={computedStyle}\r\n        className={className}\r\n        src={media}\r\n        sandbox=\"allow-scripts\"\r\n        frameBorder=\"0\"\r\n        {...iframeOptions}\r\n      ></iframe>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <img\r\n      alt=\"Token Image\"\r\n      src={tokenImage}\r\n      style={{\r\n        ...computedStyle,\r\n        visibility:\r\n          !tokenImage || tokenImage.length === 0 ? 'hidden' : 'visible',\r\n      }}\r\n      className={className}\r\n      onError={onErrorCb}\r\n    />\r\n  )\r\n}\r\n\r\nexport default TokenMedia\r\n","import { useEffect } from 'react'\r\n\r\nlet modelViewerInjected = false\r\n\r\nconst importScript = (src: string) => {\r\n  if (document) {\r\n    const script = document.createElement('script')\r\n    script.async = true\r\n    script.src = src\r\n    script.type = 'module'\r\n    document.body.appendChild(script)\r\n  }\r\n}\r\n\r\nconst useModelViewer = (enabled: boolean) => {\r\n  useEffect(() => {\r\n    if (enabled && !modelViewerInjected) {\r\n      modelViewerInjected = true\r\n      importScript(\r\n        'https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js'\r\n      )\r\n    }\r\n  }, [enabled])\r\n}\r\n\r\nexport default useModelViewer\r\n","import React, { FC, useState, useEffect, RefObject } from 'react'\r\nimport { Button } from '../../primitives'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport faPlay from '@fortawesome/free-solid-svg-icons/faPlay'\r\nimport faPause from '@fortawesome/free-solid-svg-icons/faPause'\r\n\r\ntype MediaPlayButtonProps = {\r\n  mediaRef: RefObject<HTMLAudioElement> | RefObject<HTMLVideoElement>\r\n}\r\n\r\nconst MediaPlayButton: FC<MediaPlayButtonProps> = ({ mediaRef }) => {\r\n  const [playing, setPlaying] = useState(false)\r\n\r\n  useEffect(() => {\r\n    if (mediaRef.current) {\r\n      mediaRef.current.onplaying = () => {\r\n        setPlaying(true)\r\n      }\r\n      mediaRef.current.onpause = () => {\r\n        setPlaying(false)\r\n      }\r\n    }\r\n    return () => {\r\n      if (mediaRef.current) {\r\n        mediaRef.current.onplaying = null\r\n        mediaRef.current.onpause = null\r\n      }\r\n    }\r\n  }, [mediaRef])\r\n\r\n  return (\r\n    <Button\r\n      css={{\r\n        zIndex: 5,\r\n        position: 'absolute',\r\n        right: 16,\r\n        bottom: 16,\r\n        backdropFilter: 'blur(2px)',\r\n        background: 'rgba(105, 113, 119, 0.5)',\r\n        width: 48,\r\n        height: 48,\r\n        borderRadius: '50%',\r\n        cursor: 'pointer',\r\n        display: 'flex',\r\n        justifyContent: 'center',\r\n        alignItems: 'center',\r\n        padding: 0,\r\n        '&:hover': {\r\n          background: 'rgba(105, 113, 119, 0.7)',\r\n        },\r\n      }}\r\n      onClick={(e) => {\r\n        e.preventDefault()\r\n        if (mediaRef.current) {\r\n          if (mediaRef.current.paused) {\r\n            mediaRef.current.play()\r\n          } else {\r\n            mediaRef.current.pause()\r\n          }\r\n        }\r\n      }}\r\n    >\r\n      <FontAwesomeIcon\r\n        icon={playing ? faPause : faPlay}\r\n        width={24}\r\n        height={24}\r\n      />\r\n    </Button>\r\n  )\r\n}\r\n\r\nexport default MediaPlayButton\r\n","import React, { FC, ComponentPropsWithoutRef, CSSProperties } from 'react'\r\nimport { Button, Flex, Text } from '../../primitives'\r\nimport TokenMedia from './index'\r\nimport { defaultHeaders } from '../../lib/swr'\r\nimport { useReservoirClient } from '../../hooks'\r\nimport { axios, paths } from '@sh-reservoir0x/reservoir-sdk'\r\nimport faImage from '@fortawesome/free-solid-svg-icons/faImage'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\n\r\ntype TokenFallbackProps = {\r\n  mode?: 'default' | 'simple'\r\n  style?: CSSProperties\r\n  className?: string\r\n  token: ComponentPropsWithoutRef<typeof TokenMedia>['token']\r\n  chainId?: number\r\n  onRefreshClicked: () => void\r\n}\r\n\r\nconst TokenFallback: FC<TokenFallbackProps> = ({\r\n  mode,\r\n  style,\r\n  className,\r\n  token,\r\n  chainId,\r\n  onRefreshClicked,\r\n}) => {\r\n  const client = useReservoirClient()\r\n  const reservoirChain = chainId\r\n    ? client?.chains.find((chain) => chain.id === chainId)\r\n    : client?.currentChain()\r\n\r\n  const contract = token?.collection?.id\r\n    ? token?.collection.id?.split(':')[0]\r\n    : undefined\r\n\r\n  return (\r\n    <Flex\r\n      justify=\"center\"\r\n      align=\"center\"\r\n      direction=\"column\"\r\n      css={{ gap: '$2', aspectRatio: '1/1', p: '$2', ...style }}\r\n      className={className}\r\n    >\r\n      {mode === 'simple' || !token?.collection?.id ? (\r\n        <FontAwesomeIcon icon={faImage} style={{ height: '50%' }} />\r\n      ) : (\r\n        <>\r\n          {token?.collection?.image && (\r\n            <img\r\n              style={{\r\n                width: 64,\r\n                height: 64,\r\n                objectFit: 'cover',\r\n                borderRadius: 8,\r\n              }}\r\n              src={token?.collection?.image}\r\n            />\r\n          )}\r\n          <Text style=\"body2\" css={{ textAlign: 'center' }}>\r\n            No Content Available\r\n          </Text>\r\n          <Button\r\n            color=\"secondary\"\r\n            onClick={(e) => {\r\n              e.preventDefault()\r\n              if (!reservoirChain) {\r\n                throw 'ReservoirClient missing chain configuration'\r\n              }\r\n              onRefreshClicked()\r\n              const url = `${reservoirChain?.baseApiUrl}/tokens/refresh/v1`\r\n              const body: paths['/tokens/refresh/v1']['post']['parameters']['body']['body'] =\r\n                {\r\n                  token: `${contract}:${token?.tokenId}`,\r\n                }\r\n              const headers = {\r\n                ...defaultHeaders(client?.apiKey, client?.version),\r\n                'Content-Type': 'application/json',\r\n              }\r\n              axios(url, {\r\n                headers,\r\n                method: 'POST',\r\n                data: JSON.stringify(body),\r\n              })\r\n                .then((res) => res.data)\r\n                .catch((e) => {\r\n                  throw e\r\n                })\r\n            }}\r\n          >\r\n            Refresh\r\n          </Button>\r\n        </>\r\n      )}\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default TokenFallback\r\n","import { axios } from '@sh-reservoir0x/reservoir-sdk'\r\n\r\nconst gatewayConfig = {\r\n  [1235 as number]: {\r\n    'ipfs://': 'https://ipfs-gw.dev.aura.network/ipfs/',\r\n    'ar://': 'https://arweave.net/',\r\n  },\r\n  [1236 as number]: {\r\n    'ipfs://': 'https://ipfs-gw.dev.aura.network/ipfs/',\r\n    'ar://': 'https://arweave.net/',\r\n  },\r\n  [6321 as number]: {\r\n    'ipfs://': 'https://ipfs-gw.dev.aura.network/ipfs/',\r\n    'ar://': 'https://arweave.net/',\r\n  },\r\n  [6322 as number]: {\r\n    'ipfs://': 'https://ipfs-gw.dev.aura.network/ipfs/',\r\n    'ar://': 'https://arweave.net/',\r\n  },\r\n}\r\n\r\nconst convertToGatewayUrl = (url: string, chainId?: number) => {\r\n  for (const [protocol, gateway] of Object.entries(\r\n    gatewayConfig[chainId || 1235]\r\n  )) {\r\n    if (url.includes(protocol)) {\r\n      return url.replace(protocol, gateway)\r\n    }\r\n  }\r\n  return url\r\n}\r\n\r\nconst fetchUri = async (uri: string, chainId?: number) => {\r\n  const response = await axios(convertToGatewayUrl(uri, chainId), {\r\n    method: 'GET',\r\n  })\r\n\r\n  if (!(response.status >= 200 && response.status < 300)) {\r\n    throw new Error('Failed to fetch URI')\r\n  }\r\n\r\n  return response.data\r\n}\r\n\r\nexport const convertTokenUriToImage = async (\r\n  uri: string,\r\n  chainId?: number\r\n): Promise<string> => {\r\n  try {\r\n    const json = await fetchUri(uri, chainId)\r\n\r\n    if (json.image) {\r\n      const image = convertToGatewayUrl(json.image, chainId)\r\n      return image\r\n    }\r\n\r\n    return 'https://twilight.s3.ap-southeast-1.amazonaws.com/assets/images/dfimg.png'\r\n  } catch (e) {\r\n    console.error(e)\r\n    return 'https://twilight.s3.ap-southeast-1.amazonaws.com/assets/images/dfimg.png'\r\n  }\r\n}\r\n","export const erc1155ABI = [\r\n  {\r\n    anonymous: false,\r\n    inputs: [\r\n      {\r\n        indexed: true,\r\n        internalType: 'address',\r\n        name: 'account',\r\n        type: 'address',\r\n      },\r\n      {\r\n        indexed: true,\r\n        internalType: 'address',\r\n        name: 'operator',\r\n        type: 'address',\r\n      },\r\n      {\r\n        indexed: false,\r\n        internalType: 'bool',\r\n        name: 'approved',\r\n        type: 'bool',\r\n      },\r\n    ],\r\n    name: 'ApprovalForAll',\r\n    type: 'event',\r\n  },\r\n  {\r\n    anonymous: false,\r\n    inputs: [\r\n      {\r\n        indexed: true,\r\n        internalType: 'address',\r\n        name: 'operator',\r\n        type: 'address',\r\n      },\r\n      {\r\n        indexed: true,\r\n        internalType: 'address',\r\n        name: 'from',\r\n        type: 'address',\r\n      },\r\n      {\r\n        indexed: true,\r\n        internalType: 'address',\r\n        name: 'to',\r\n        type: 'address',\r\n      },\r\n      {\r\n        indexed: false,\r\n        internalType: 'uint256[]',\r\n        name: 'ids',\r\n        type: 'uint256[]',\r\n      },\r\n      {\r\n        indexed: false,\r\n        internalType: 'uint256[]',\r\n        name: 'values',\r\n        type: 'uint256[]',\r\n      },\r\n    ],\r\n    name: 'TransferBatch',\r\n    type: 'event',\r\n  },\r\n  {\r\n    anonymous: false,\r\n    inputs: [\r\n      {\r\n        indexed: true,\r\n        internalType: 'address',\r\n        name: 'operator',\r\n        type: 'address',\r\n      },\r\n      {\r\n        indexed: true,\r\n        internalType: 'address',\r\n        name: 'from',\r\n        type: 'address',\r\n      },\r\n      {\r\n        indexed: true,\r\n        internalType: 'address',\r\n        name: 'to',\r\n        type: 'address',\r\n      },\r\n      {\r\n        indexed: false,\r\n        internalType: 'uint256',\r\n        name: 'id',\r\n        type: 'uint256',\r\n      },\r\n      {\r\n        indexed: false,\r\n        internalType: 'uint256',\r\n        name: 'value',\r\n        type: 'uint256',\r\n      },\r\n    ],\r\n    name: 'TransferSingle',\r\n    type: 'event',\r\n  },\r\n  {\r\n    anonymous: false,\r\n    inputs: [\r\n      {\r\n        indexed: false,\r\n        internalType: 'string',\r\n        name: 'value',\r\n        type: 'string',\r\n      },\r\n      {\r\n        indexed: true,\r\n        internalType: 'uint256',\r\n        name: 'id',\r\n        type: 'uint256',\r\n      },\r\n    ],\r\n    name: 'URI',\r\n    type: 'event',\r\n  },\r\n  {\r\n    inputs: [\r\n      {\r\n        internalType: 'address',\r\n        name: 'account',\r\n        type: 'address',\r\n      },\r\n      {\r\n        internalType: 'uint256',\r\n        name: 'id',\r\n        type: 'uint256',\r\n      },\r\n    ],\r\n    name: 'balanceOf',\r\n    outputs: [\r\n      {\r\n        internalType: 'uint256',\r\n        name: '',\r\n        type: 'uint256',\r\n      },\r\n    ],\r\n    stateMutability: 'view',\r\n    type: 'function',\r\n  },\r\n  {\r\n    inputs: [\r\n      {\r\n        internalType: 'address[]',\r\n        name: 'accounts',\r\n        type: 'address[]',\r\n      },\r\n      {\r\n        internalType: 'uint256[]',\r\n        name: 'ids',\r\n        type: 'uint256[]',\r\n      },\r\n    ],\r\n    name: 'balanceOfBatch',\r\n    outputs: [\r\n      {\r\n        internalType: 'uint256[]',\r\n        name: '',\r\n        type: 'uint256[]',\r\n      },\r\n    ],\r\n    stateMutability: 'view',\r\n    type: 'function',\r\n  },\r\n  {\r\n    inputs: [\r\n      {\r\n        internalType: 'address',\r\n        name: 'account',\r\n        type: 'address',\r\n      },\r\n      {\r\n        internalType: 'address',\r\n        name: 'operator',\r\n        type: 'address',\r\n      },\r\n    ],\r\n    name: 'isApprovedForAll',\r\n    outputs: [\r\n      {\r\n        internalType: 'bool',\r\n        name: '',\r\n        type: 'bool',\r\n      },\r\n    ],\r\n    stateMutability: 'view',\r\n    type: 'function',\r\n  },\r\n  {\r\n    inputs: [\r\n      {\r\n        internalType: 'address',\r\n        name: 'from',\r\n        type: 'address',\r\n      },\r\n      {\r\n        internalType: 'address',\r\n        name: 'to',\r\n        type: 'address',\r\n      },\r\n      {\r\n        internalType: 'uint256[]',\r\n        name: 'ids',\r\n        type: 'uint256[]',\r\n      },\r\n      {\r\n        internalType: 'uint256[]',\r\n        name: 'amounts',\r\n        type: 'uint256[]',\r\n      },\r\n      {\r\n        internalType: 'bytes',\r\n        name: 'data',\r\n        type: 'bytes',\r\n      },\r\n    ],\r\n    name: 'safeBatchTransferFrom',\r\n    outputs: [],\r\n    stateMutability: 'nonpayable',\r\n    type: 'function',\r\n  },\r\n  {\r\n    inputs: [\r\n      {\r\n        internalType: 'address',\r\n        name: 'from',\r\n        type: 'address',\r\n      },\r\n      {\r\n        internalType: 'address',\r\n        name: 'to',\r\n        type: 'address',\r\n      },\r\n      {\r\n        internalType: 'uint256',\r\n        name: 'id',\r\n        type: 'uint256',\r\n      },\r\n      {\r\n        internalType: 'uint256',\r\n        name: 'amount',\r\n        type: 'uint256',\r\n      },\r\n      {\r\n        internalType: 'bytes',\r\n        name: 'data',\r\n        type: 'bytes',\r\n      },\r\n    ],\r\n    name: 'safeTransferFrom',\r\n    outputs: [],\r\n    stateMutability: 'nonpayable',\r\n    type: 'function',\r\n  },\r\n  {\r\n    inputs: [\r\n      {\r\n        internalType: 'address',\r\n        name: 'operator',\r\n        type: 'address',\r\n      },\r\n      {\r\n        internalType: 'bool',\r\n        name: 'approved',\r\n        type: 'bool',\r\n      },\r\n    ],\r\n    name: 'setApprovalForAll',\r\n    outputs: [],\r\n    stateMutability: 'nonpayable',\r\n    type: 'function',\r\n  },\r\n  {\r\n    inputs: [\r\n      {\r\n        internalType: 'bytes4',\r\n        name: 'interfaceId',\r\n        type: 'bytes4',\r\n      },\r\n    ],\r\n    name: 'supportsInterface',\r\n    outputs: [\r\n      {\r\n        internalType: 'bool',\r\n        name: '',\r\n        type: 'bool',\r\n      },\r\n    ],\r\n    stateMutability: 'view',\r\n    type: 'function',\r\n  },\r\n  {\r\n    inputs: [\r\n      {\r\n        internalType: 'uint256',\r\n        name: 'id',\r\n        type: 'uint256',\r\n      },\r\n    ],\r\n    name: 'uri',\r\n    outputs: [\r\n      {\r\n        internalType: 'string',\r\n        name: '',\r\n        type: 'string',\r\n      },\r\n    ],\r\n    stateMutability: 'view',\r\n    type: 'function',\r\n  },\r\n] as const\r\n","import React, { FC } from 'react'\r\nimport { ChainIcon, Divider, Flex, Img, Text } from '../primitives'\r\nimport { useCollections, useTokens } from '../hooks'\r\nimport { ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\n\r\ntype Props = {\r\n  token?: NonNullable<ReturnType<typeof useTokens>['data']>[0]\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  chain?: ReservoirChain | null\r\n}\r\n\r\nexport const TokenInfo: FC<Props> = ({ token, collection, chain }) => {\r\n  return (\r\n    <Flex justify=\"between\" align=\"center\" css={{ gap: '$4' }}>\r\n      <Flex align=\"center\" css={{ gap: '$3' }}>\r\n        <Img\r\n          src={token?.token?.image || token?.token?.collection?.image}\r\n          css={{\r\n            borderRadius: 8,\r\n            objectFit: 'cover',\r\n            height: 56,\r\n            width: 56,\r\n          }}\r\n        />\r\n        <Flex direction=\"column\" css={{ gap: '$1' }}>\r\n          <Text style=\"h6\">\r\n            {token?.token?.name || `#${token?.token?.tokenId}`}\r\n          </Text>\r\n          <Flex align=\"center\" css={{ gap: '$1' }}>\r\n            <Text style=\"subtitle2\" color=\"subtle\">\r\n              {collection?.name}\r\n            </Text>\r\n            {chain ? (\r\n              <>\r\n                <Divider direction=\"vertical\" />\r\n                <ChainIcon\r\n                  chainId={chain.id}\r\n                  height={12}\r\n                  css={{ alignItems: 'center', width: '12px' }}\r\n                />\r\n                <Text style=\"subtitle2\" color=\"subtle\" ellipsify>\r\n                  {chain.name}\r\n                </Text>\r\n              </>\r\n            ) : null}\r\n          </Flex>\r\n        </Flex>\r\n      </Flex>\r\n    </Flex>\r\n  )\r\n}\r\n","import React, { FC } from 'react'\r\nimport { ChainIcon, Divider, Flex, Img, Text } from '../primitives'\r\nimport { useCollections, useTimeSince } from '../hooks'\r\nimport { ReservoirChain } from '@sh-reservoir0x/reservoir-sdk'\r\n\r\ntype Props = {\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  chain?: ReservoirChain | null\r\n}\r\n\r\nexport const CollectionInfo: FC<Props> = ({ collection, chain }) => {\r\n  const mintData = collection?.mintStages?.find(\r\n    (stage) => stage.kind === 'public'\r\n  )\r\n\r\n  const mintEndTime = mintData ? useTimeSince(mintData?.endTime) : undefined\r\n\r\n  return (\r\n    <Flex\r\n      justify=\"between\"\r\n      align=\"center\"\r\n      css={{ gap: '$4', maxWidth: '100%' }}\r\n    >\r\n      <Flex align=\"center\" css={{ gap: '$3', overflow: 'hidden' }}>\r\n        <Img\r\n          src={collection?.image}\r\n          css={{\r\n            borderRadius: 8,\r\n            objectFit: 'cover',\r\n            height: 56,\r\n            width: 56,\r\n          }}\r\n        />\r\n        <Flex direction=\"column\" css={{ gap: '$1', overflow: 'hidden' }}>\r\n          <Text style=\"h6\" ellipsify>\r\n            {collection?.name}\r\n          </Text>\r\n          <Flex align=\"center\" css={{ gap: '$1' }}>\r\n            {mintEndTime ? (\r\n              <Text style=\"subtitle2\" color=\"subtle\">\r\n                Ends {mintEndTime}\r\n              </Text>\r\n            ) : null}\r\n            {chain ? (\r\n              <>\r\n                {mintEndTime ? (\r\n                  <Divider direction=\"vertical\" css={{ maxHeight: 12 }} />\r\n                ) : null}\r\n                <ChainIcon chainId={chain.id} height={12} css={{ alignItems: 'center', width: '12px' }} />\r\n                <Text style=\"subtitle2\" color=\"subtle\" ellipsify>\r\n                  {chain.name}\r\n                </Text>\r\n              </>\r\n            ) : null}\r\n          </Flex>\r\n        </Flex>\r\n      </Flex>\r\n    </Flex>\r\n  )\r\n}\r\n","import React, { FC } from 'react'\r\nimport {\r\n  Flex,\r\n  FormatCryptoCurrency,\r\n  FormatCurrency,\r\n  Img,\r\n  Text,\r\n} from '../primitives'\r\nimport { useCollections, useTokens } from '../hooks'\r\nimport { PaymentToken } from '@sh-reservoir0x/reservoir-sdk'\r\n\r\nenum Size {\r\n  SM,\r\n  LG,\r\n}\r\n\r\ntype Props = {\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  token?: NonNullable<ReturnType<typeof useTokens>['data']>[0]\r\n  itemCount: number\r\n  totalPrice: bigint\r\n  usdTotalFormatted?: number | string\r\n  currency?: PaymentToken\r\n  size?: Size\r\n  chainId?: number\r\n}\r\n\r\nexport const PurchaseCheckout: FC<Props> = ({\r\n  collection,\r\n  token,\r\n  itemCount,\r\n  totalPrice,\r\n  chainId,\r\n  usdTotalFormatted,\r\n  currency,\r\n}) => {\r\n  const itemSubject = itemCount === 1 ? 'item' : 'items'\r\n\r\n  return (\r\n    <Flex direction=\"column\">\r\n      <Flex justify=\"between\" css={{ width: '100%', mb: '$2' }}>\r\n        <Text style=\"subtitle3\" color=\"subtle\">\r\n          Item\r\n        </Text>\r\n        <Text style=\"subtitle3\" color=\"subtle\">\r\n          Total\r\n        </Text>\r\n      </Flex>\r\n      <Flex justify=\"between\" align=\"start\" css={{ width: '100%' }}>\r\n        <Flex direction=\"column\">\r\n          <Flex align=\"center\" css={{ gap: '$3' }}>\r\n            <Img\r\n              src={token ? token?.token?.image : collection?.image}\r\n              css={{\r\n                borderRadius: 8,\r\n                objectFit: 'cover',\r\n                height: 56,\r\n                width: 56,\r\n              }}\r\n            />\r\n            <Flex direction=\"column\" css={{ gap: '$1' }}>\r\n              <Text style={'h6'}>\r\n                {token\r\n                  ? token?.token?.name || `#${token?.token?.tokenId}`\r\n                  : collection?.name}\r\n              </Text>\r\n              <Text\r\n                style={'tiny'}\r\n                css={{\r\n                  p: '$1',\r\n                  borderRadius: 4,\r\n                  backgroundColor: '$neutralBgActive',\r\n                  width: 'max-content',\r\n                }}\r\n              >\r\n                {itemCount} {itemSubject}\r\n              </Text>\r\n            </Flex>\r\n          </Flex>\r\n        </Flex>\r\n        <Flex direction=\"column\" align=\"end\" css={{ gap: '$1', pt: '$1' }}>\r\n          <FormatCryptoCurrency\r\n            chainId={chainId}\r\n            textStyle={'h6'}\r\n            amount={totalPrice}\r\n            address={currency?.address}\r\n            decimals={currency?.decimals}\r\n            symbol={currency?.symbol}\r\n            logoWidth={18}\r\n          />\r\n          {usdTotalFormatted ? (\r\n            <FormatCurrency\r\n              amount={usdTotalFormatted}\r\n              style=\"subtitle3\"\r\n              color=\"subtle\"\r\n              css={{ textAlign: 'end' }}\r\n            />\r\n          ) : null}\r\n        </Flex>\r\n      </Flex>\r\n    </Flex>\r\n  )\r\n}\r\n","import React, {\r\n  ComponentPropsWithoutRef,\r\n  Dispatch,\r\n  ReactElement,\r\n  SetStateAction,\r\n  useEffect,\r\n} from 'react'\r\nimport { WalletClient, formatUnits } from 'viem'\r\nimport { ReservoirWallet } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { useFallbackState, useReservoirClient } from '../../hooks'\r\nimport { Modal } from '../Modal'\r\nimport {\r\n  SweepModalRenderer,\r\n  SweepModalStepData,\r\n  SweepStep,\r\n} from './SweepModalRenderer'\r\nimport {\r\n  Anchor,\r\n  Box,\r\n  Button,\r\n  CryptoCurrencyIcon,\r\n  ErrorWell,\r\n  Flex,\r\n  FormatCryptoCurrency,\r\n  Loader,\r\n  Text,\r\n} from '../../primitives'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport faCheckCircle from '@fortawesome/free-solid-svg-icons/faCheckCircle'\r\nimport faChevronLeft from '@fortawesome/free-solid-svg-icons/faChevronLeft'\r\nimport faChevronRight from '@fortawesome/free-solid-svg-icons/faChevronRight'\r\nimport faCircleExclamation from '@fortawesome/free-solid-svg-icons/faCircleExclamation'\r\nimport faCube from '@fortawesome/free-solid-svg-icons/faCube'\r\nimport faMagnifyingGlass from '@fortawesome/free-solid-svg-icons/faMagnifyingGlass'\r\nimport faPenNib from '@fortawesome/free-solid-svg-icons/faPenNib'\r\nimport faWallet from '@fortawesome/free-solid-svg-icons/faWallet'\r\n\r\nimport { formatNumber } from '../../lib/numbers'\r\nimport { Path } from '../../components/cart/CartCheckoutModal'\r\nimport QuantitySelector from '../QuantitySelector'\r\nimport { CurrentStepTxHashes } from '../CurrentStepTxHashes'\r\nimport SigninStep from '../SigninStep'\r\nimport { ApprovePurchasingCollapsible } from '../ApprovePurchasingCollapsible'\r\nimport { truncateAddress } from '../../lib/truncate'\r\nimport getChainBlockExplorerUrl from '../../lib/getChainBlockExplorerUrl'\r\nimport { TokenInfo } from '../TokenInfo'\r\nimport { CollectionInfo } from '../CollectionInfo'\r\nimport { PurchaseCheckout } from '../PurchaseCheckout'\r\nimport { PaymentDetails } from '../../common/PaymentDetails'\r\nimport { Dialog } from '../../primitives/Dialog'\r\nimport { SelectPaymentToken } from '../SelectPaymentToken'\r\n\r\nexport type SweepCallbackData = {\r\n  collectionId?: string\r\n  maker?: string\r\n  stepData: SweepModalStepData | null\r\n}\r\n\r\nexport const SweepModalCopy = {\r\n  ctaConnect: 'Connect',\r\n  sweepTitle: 'Sweep',\r\n  sweepCtaClose: 'Close',\r\n  sweepCtaBuy: 'Sweep',\r\n  sweepCtaBuyDisabled: 'Sweep',\r\n  sweepCtaInsufficientFunds: 'Add Funds to Purchase',\r\n  sweepCtaAwaitingApproval: 'Waiting for approval...',\r\n  sweepCtaAwaitingValidation: 'Waiting to be validated...',\r\n  sweepCtaGoToToken: '',\r\n}\r\n\r\ntype Props = Pick<Parameters<typeof Modal>['0'], 'trigger'> & {\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  contract?: string\r\n  collectionId?: string\r\n  token?: string\r\n  defaultQuantity?: number\r\n  onConnectWallet: () => void\r\n  feesOnTopBps?: string[] | null\r\n  feesOnTopUsd?: string[] | null\r\n  chainId?: number\r\n  copyOverrides?: Partial<typeof SweepModalCopy>\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  normalizeRoyalties?: boolean\r\n  usePermit?: boolean\r\n  onSweepComplete?: (data: SweepCallbackData) => void\r\n  onSweepError?: (error: Error, data: SweepCallbackData) => void\r\n  onClose?: (data: SweepCallbackData, currentStep: SweepStep) => void\r\n  onGoToToken?: (data: SweepCallbackData) => any\r\n  onPointerDownOutside?: ComponentPropsWithoutRef<\r\n    typeof Dialog\r\n  >['onPointerDownOutside']\r\n}\r\n\r\nexport function SweepModal({\r\n  openState,\r\n  trigger,\r\n  contract,\r\n  collectionId,\r\n  token,\r\n  chainId,\r\n  feesOnTopBps,\r\n  feesOnTopUsd,\r\n  copyOverrides,\r\n  walletClient,\r\n  normalizeRoyalties,\r\n  usePermit,\r\n  onSweepComplete,\r\n  onSweepError,\r\n  onClose,\r\n  onConnectWallet,\r\n  onGoToToken,\r\n  onPointerDownOutside,\r\n  defaultQuantity,\r\n}: Props): ReactElement {\r\n  const copy: typeof SweepModalCopy = {\r\n    ...SweepModalCopy,\r\n    ...copyOverrides,\r\n  }\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n\r\n  const client = useReservoirClient()\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const modalChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  return (\r\n    <SweepModalRenderer\r\n      onConnectWallet={onConnectWallet}\r\n      chainId={modalChain?.id}\r\n      defaultQuantity={defaultQuantity}\r\n      open={open}\r\n      contract={contract}\r\n      collectionId={collectionId}\r\n      token={token}\r\n      feesOnTopBps={feesOnTopBps}\r\n      feesOnTopUsd={feesOnTopUsd}\r\n      walletClient={walletClient}\r\n      normalizeRoyalties={normalizeRoyalties}\r\n      usePermit={usePermit}\r\n    >\r\n      {({\r\n        loading,\r\n        isFetchingPath,\r\n        collection,\r\n        token,\r\n        orders,\r\n        totalIncludingFees,\r\n        buyResponseFees,\r\n        averageUnitPrice,\r\n        selectedTokens,\r\n        feeOnTop,\r\n        feeUsd,\r\n        paymentTokens,\r\n        paymentCurrency,\r\n        setPaymentCurrency,\r\n        addFundsLink,\r\n        chainCurrency,\r\n        itemAmount,\r\n        setItemAmount,\r\n        maxItemAmount,\r\n        setMaxItemAmount,\r\n        usdPrice,\r\n        usdPriceRaw,\r\n        currentChain,\r\n        address,\r\n        isConnected,\r\n        disableJumperLink,\r\n        balance,\r\n        hasEnoughCurrency,\r\n        transactionError,\r\n        stepData,\r\n        sweepStep,\r\n        setStepData,\r\n        setSweepStep,\r\n        sweepTokens,\r\n      }) => {\r\n        useEffect(() => {\r\n          if (sweepStep === SweepStep.Complete && onSweepComplete) {\r\n            const data: SweepCallbackData = {\r\n              collectionId: collection?.id,\r\n              maker: address,\r\n              stepData,\r\n            }\r\n\r\n            onSweepComplete(data)\r\n          }\r\n        }, [sweepStep])\r\n\r\n        useEffect(() => {\r\n          if (transactionError && onSweepError) {\r\n            const data: SweepCallbackData = {\r\n              collectionId: collection?.id,\r\n              maker: address,\r\n              stepData,\r\n            }\r\n            onSweepError(transactionError, data)\r\n          }\r\n        }, [transactionError])\r\n\r\n        const hasTokens = orders && orders.length > 0\r\n\r\n        const maxQuantity = paymentCurrency?.maxItems\r\n          ? paymentCurrency?.maxItems\r\n          : maxItemAmount\r\n\r\n        const pathMap = stepData?.path\r\n          ? (stepData.path as Path[]).reduce(\r\n              (paths: Record<string, Path>, path: Path) => {\r\n                if (path.orderId) {\r\n                  paths[path.orderId] = path\r\n                }\r\n\r\n                return paths\r\n              },\r\n              {} as Record<string, Path>\r\n            )\r\n          : {}\r\n\r\n        const totalSales =\r\n          stepData?.currentStep?.items?.reduce((total, item) => {\r\n            item.transfersData?.forEach((transferData) => {\r\n              total += Number(transferData.amount || 1)\r\n            })\r\n            return total\r\n          }, 0) || 0\r\n\r\n        const failedSales = itemAmount - totalSales\r\n        const successfulSales = itemAmount - failedSales\r\n\r\n        return (\r\n          <Modal\r\n            trigger={trigger}\r\n            title={copy.sweepTitle}\r\n            open={open}\r\n            loading={loading}\r\n            onPointerDownOutside={(e) => {\r\n              const dismissableLayers = Array.from(\r\n                document.querySelectorAll('div[data-radix-dismissable]')\r\n              )\r\n              const clickedDismissableLayer = dismissableLayers.some((el) =>\r\n                e.target ? el.contains(e.target as Node) : false\r\n              )\r\n\r\n              if (!clickedDismissableLayer && dismissableLayers.length > 0) {\r\n                e.preventDefault()\r\n              }\r\n\r\n              if (onPointerDownOutside) {\r\n                onPointerDownOutside(e)\r\n              }\r\n            }}\r\n            onOpenChange={(open) => {\r\n              if (!open && onClose) {\r\n                const data: SweepCallbackData = {\r\n                  collectionId: collection?.id,\r\n                  maker: address,\r\n                  stepData,\r\n                }\r\n                onClose(data, sweepStep)\r\n              }\r\n              setOpen(open)\r\n            }}\r\n          >\r\n            {(!loading && !hasTokens) ||\r\n            (maxItemAmount === 0 && sweepStep === SweepStep.Idle) ? (\r\n              <Flex\r\n                direction=\"column\"\r\n                align=\"center\"\r\n                css={{ width: '100%', p: '$4' }}\r\n              >\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ pt: 28, pb: 48, px: '$4', gap: 28 }}\r\n                >\r\n                  <Box css={{ color: '$neutralSolid' }}>\r\n                    <FontAwesomeIcon\r\n                      icon={faMagnifyingGlass}\r\n                      style={{\r\n                        width: '36px',\r\n                        height: '32px',\r\n                      }}\r\n                    />\r\n                  </Box>\r\n                  <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                    No available items were found for this collection.\r\n                  </Text>\r\n                </Flex>\r\n                <Button css={{ width: '100%' }} onClick={() => setOpen(false)}>\r\n                  {copy.sweepCtaClose}\r\n                </Button>\r\n              </Flex>\r\n            ) : null}\r\n\r\n            {!loading &&\r\n              hasTokens &&\r\n              maxItemAmount !== 0 &&\r\n              sweepStep === SweepStep.Idle && (\r\n                <Flex direction=\"column\">\r\n                  <Flex\r\n                    direction=\"column\"\r\n                    css={{ borderBottom: '1px solid $neutralBorder' }}\r\n                  >\r\n                    {transactionError ? (\r\n                      <ErrorWell error={transactionError} />\r\n                    ) : null}\r\n                    <Flex direction=\"column\" css={{ p: '$4', gap: 10 }}>\r\n                      {token ? (\r\n                        <TokenInfo token={token} collection={collection} />\r\n                      ) : (\r\n                        <CollectionInfo collection={collection} />\r\n                      )}\r\n                      <Flex\r\n                        align=\"center\"\r\n                        justify=\"between\"\r\n                        css={{ gap: 24, '@bp1': { gap: '$6' }, mt: '$1' }}\r\n                      >\r\n                        <Flex\r\n                          direction=\"column\"\r\n                          align=\"start\"\r\n                          css={{\r\n                            gap: '$1',\r\n                            overflow: 'hidden',\r\n                            flexShrink: 0,\r\n                            maxWidth: 200,\r\n                          }}\r\n                        >\r\n                          <Text style=\"subtitle2\">Quantity</Text>\r\n                          <Text\r\n                            style=\"body3\"\r\n                            color=\"subtle\"\r\n                            ellipsify\r\n                            css={{ width: '100%' }}\r\n                          >\r\n                            {formatNumber(maxQuantity)}{' '}\r\n                            {maxQuantity === 1 ? 'item' : 'items'} available\r\n                          </Text>\r\n                        </Flex>\r\n                        <QuantitySelector\r\n                          quantity={itemAmount}\r\n                          setQuantity={setItemAmount}\r\n                          min={1}\r\n                          max={maxQuantity}\r\n                          css={{\r\n                            width: '100%',\r\n                            justifyContent: 'space-between',\r\n                            minWidth: 200,\r\n                          }}\r\n                        />\r\n                      </Flex>\r\n                      {itemAmount > 1 && averageUnitPrice ? (\r\n                        <Flex justify=\"end\" css={{ gap: '$3' }}>\r\n                          <Flex align=\"center\" css={{ gap: '$2' }}>\r\n                            <Text style=\"subtitle3\" color=\"subtle\">\r\n                              Avg Item Price\r\n                            </Text>\r\n                            <FormatCryptoCurrency\r\n                              chainId={chainId}\r\n                              amount={averageUnitPrice}\r\n                              address={paymentCurrency?.address}\r\n                              decimals={paymentCurrency?.decimals}\r\n                              symbol={paymentCurrency?.name}\r\n                              maximumFractionDigits={2}\r\n                            />\r\n                          </Flex>\r\n                        </Flex>\r\n                      ) : null}\r\n                    </Flex>\r\n                  </Flex>\r\n                  <Flex direction=\"column\" css={{ pb: '$2' }}>\r\n                    {paymentTokens.length > 1 ? (\r\n                      <Flex\r\n                        direction=\"column\"\r\n                        css={{\r\n                          gap: '$2',\r\n                          py: '$3',\r\n                          px: '$4',\r\n                          borderRadius: '$3',\r\n                          borderBottom: '1px solid $neutralBorder',\r\n                          '&:hover': {\r\n                            backgroundColor: '$neutralBgHover',\r\n                          },\r\n                        }}\r\n                        onClick={() => setSweepStep(SweepStep.SelectPayment)}\r\n                      >\r\n                        <Flex\r\n                          justify=\"between\"\r\n                          align=\"center\"\r\n                          css={{\r\n                            gap: '$1',\r\n                          }}\r\n                        >\r\n                          <Text style=\"subtitle2\">Payment Method</Text>\r\n                          <Flex\r\n                            align=\"center\"\r\n                            css={{ gap: '$2', cursor: 'pointer' }}\r\n                          >\r\n                            <Flex align=\"center\">\r\n                              <CryptoCurrencyIcon\r\n                                address={paymentCurrency?.address as string}\r\n                                css={{ width: 16, height: 16, mr: '$1' }}\r\n                              />\r\n                              <Text style=\"subtitle2\">\r\n                                {paymentCurrency?.name}\r\n                              </Text>\r\n                            </Flex>\r\n                            <Box css={{ color: '$neutralSolidHover' }}>\r\n                              <FontAwesomeIcon\r\n                                icon={faChevronRight}\r\n                                width={10}\r\n                              />\r\n                            </Box>\r\n                          </Flex>\r\n                        </Flex>\r\n                      </Flex>\r\n                    ) : null}\r\n                    <PaymentDetails\r\n                      chainId={chainId}\r\n                      crosschainFees={buyResponseFees}\r\n                      paymentCurrency={paymentCurrency}\r\n                      feeOnTop={feeOnTop}\r\n                      feeUsd={feeUsd}\r\n                      loading={isFetchingPath}\r\n                      css={{ pt: '$4' }}\r\n                    />\r\n                  </Flex>\r\n                  {hasEnoughCurrency || !isConnected ? (\r\n                    <Button\r\n                      css={{ m: '$4' }}\r\n                      disabled={\r\n                        !(selectedTokens.length > 0) ||\r\n                        (!hasEnoughCurrency && isConnected)\r\n                      }\r\n                      onClick={sweepTokens}\r\n                    >\r\n                      {!isConnected\r\n                        ? copy.ctaConnect\r\n                        : selectedTokens.length > 0\r\n                        ? copy.sweepCtaBuy\r\n                        : copy.sweepCtaBuyDisabled}\r\n                    </Button>\r\n                  ) : (\r\n                    <Flex direction=\"column\" align=\"center\" css={{ px: '$3' }}>\r\n                      <Flex align=\"center\">\r\n                        <Text css={{ mr: '$3' }} color=\"error\" style=\"body3\">\r\n                          Insufficient Balance\r\n                          {paymentTokens.length > 1\r\n                            ? ', select another token or add funds'\r\n                            : null}\r\n                        </Text>\r\n\r\n                        <FormatCryptoCurrency\r\n                          chainId={chainId}\r\n                          amount={paymentCurrency?.balance}\r\n                          address={paymentCurrency?.address}\r\n                          decimals={paymentCurrency?.decimals}\r\n                          symbol={paymentCurrency?.name}\r\n                          textStyle=\"body3\"\r\n                        />\r\n                      </Flex>\r\n                      <Button\r\n                        disabled={disableJumperLink}\r\n                        onClick={() => {\r\n                          window.open(addFundsLink, '_blank')\r\n                        }}\r\n                        css={{ width: '100%', my: '$4' }}\r\n                      >\r\n                        {disableJumperLink\r\n                          ? copy.sweepCtaBuy\r\n                          : copy.sweepCtaInsufficientFunds}\r\n                      </Button>\r\n                    </Flex>\r\n                  )}\r\n                </Flex>\r\n              )}\r\n\r\n            {!loading && sweepStep === SweepStep.SelectPayment && (\r\n              <Flex direction=\"column\" css={{ py: 20 }}>\r\n                <Flex align=\"center\" css={{ gap: '$2', px: '$4' }}>\r\n                  <Button\r\n                    onClick={() => setSweepStep(SweepStep.Idle)}\r\n                    color=\"ghost\"\r\n                    size=\"xs\"\r\n                    css={{ color: '$neutralSolidHover' }}\r\n                  >\r\n                    <FontAwesomeIcon icon={faChevronLeft} width={10} />\r\n                  </Button>\r\n                  <Text style=\"subtitle2\">Select Payment Method</Text>\r\n                </Flex>\r\n                <SelectPaymentToken\r\n                  paymentTokens={paymentTokens}\r\n                  currency={paymentCurrency}\r\n                  setCurrency={setPaymentCurrency}\r\n                  goBack={() => setSweepStep(SweepStep.Idle)}\r\n                  itemAmount={itemAmount}\r\n                  chainId={modalChain?.id || 1}\r\n                />\r\n              </Flex>\r\n            )}\r\n\r\n            {sweepStep === SweepStep.Approving && (\r\n              <Flex direction=\"column\">\r\n                <Box\r\n                  css={{\r\n                    p: '$4',\r\n                    borderBottom: '1px solid $neutralBorder',\r\n                  }}\r\n                >\r\n                  <PurchaseCheckout\r\n                    chainId={chainId}\r\n                    collection={collection}\r\n                    token={token}\r\n                    itemCount={itemAmount}\r\n                    totalPrice={\r\n                      (paymentCurrency?.currencyTotalRaw || 0n) + feeOnTop\r\n                    }\r\n                    currency={paymentCurrency}\r\n                    usdTotalFormatted={formatUnits(\r\n                      ((paymentCurrency?.currencyTotalRaw || 0n) + feeOnTop) *\r\n                        (paymentCurrency?.usdPriceRaw || 0n),\r\n                      (paymentCurrency?.decimals || 18) + 6\r\n                    )}\r\n                  />\r\n                </Box>\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ p: '$4', overflowY: 'auto' }}\r\n                >\r\n                  {stepData?.currentStep == undefined ? (\r\n                    <Flex css={{ py: '$5' }}>\r\n                      <Loader />\r\n                    </Flex>\r\n                  ) : null}\r\n\r\n                  {stepData?.currentStep &&\r\n                  stepData.currentStep.id !== 'auth' &&\r\n                  stepData.currentStep.id !== 'sale' ? (\r\n                    <>\r\n                      <Flex\r\n                        css={{ color: '$neutralText', py: '$5' }}\r\n                        direction=\"column\"\r\n                        justify=\"center\"\r\n                        align=\"center\"\r\n                      >\r\n                        <Text\r\n                          style=\"h6\"\r\n                          color=\"base\"\r\n                          css={{ mb: '$2', textAlign: 'center' }}\r\n                        >\r\n                          {stepData.currentStep.action}{' '}\r\n                          {stepData?.currentStep?.items &&\r\n                          stepData.currentStep.items.length > 1\r\n                            ? `(${\r\n                                stepData.currentStep.items.filter(\r\n                                  (item) => item.status === 'complete'\r\n                                ).length\r\n                              }/${stepData.currentStep.items.length})`\r\n                            : null}\r\n                        </Text>\r\n                        <Text\r\n                          style=\"subtitle3\"\r\n                          color=\"subtle\"\r\n                          css={{ mb: 20, textAlign: 'center' }}\r\n                        >\r\n                          {stepData.currentStep.description}\r\n                        </Text>\r\n                        <FontAwesomeIcon\r\n                          icon={faPenNib}\r\n                          width={32}\r\n                          height={32}\r\n                          style={{ height: 32 }}\r\n                        />\r\n                      </Flex>\r\n                      <CurrentStepTxHashes\r\n                        currentStep={stepData?.currentStep}\r\n                      />\r\n                      <Button disabled={true} css={{ mt: '$4', width: '100%' }}>\r\n                        <Loader />\r\n                        {copy.sweepCtaAwaitingApproval}\r\n                      </Button>\r\n                    </>\r\n                  ) : null}\r\n\r\n                  {stepData?.currentStep &&\r\n                  stepData.currentStep.id === 'auth' ? (\r\n                    <>\r\n                      <SigninStep css={{ mt: 48, mb: '$4', gap: 20 }} />\r\n                      <Button disabled={true} css={{ mt: '$4', width: '100%' }}>\r\n                        <Loader />\r\n                        {copy.sweepCtaAwaitingApproval}\r\n                      </Button>\r\n                    </>\r\n                  ) : null}\r\n\r\n                  {stepData?.currentStep &&\r\n                  stepData?.currentStep?.id === 'sale' ? (\r\n                    <>\r\n                      {stepData?.currentStep?.items &&\r\n                      stepData?.currentStep?.items.length > 1 ? (\r\n                        <Flex\r\n                          direction=\"column\"\r\n                          css={{ gap: '$4', width: '100%' }}\r\n                        >\r\n                          <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                            Approve Purchases\r\n                          </Text>\r\n                          <Text style=\"subtitle3\" color=\"subtle\">\r\n                            The purchase of these items needs to be split into{' '}\r\n                            {stepData?.currentStep?.items.length} separate\r\n                            transactions.\r\n                          </Text>\r\n                          {stepData?.currentStep?.items.map((item, idx) => (\r\n                            <ApprovePurchasingCollapsible\r\n                              key={idx}\r\n                              item={item}\r\n                              pathMap={pathMap}\r\n                              usdPrice={+usdPrice}\r\n                              chain={currentChain}\r\n                              open={true}\r\n                            />\r\n                          ))}\r\n                        </Flex>\r\n                      ) : (\r\n                        <Flex\r\n                          direction=\"column\"\r\n                          align=\"center\"\r\n                          css={{ gap: '$4', pt: '$4', width: '100%' }}\r\n                        >\r\n                          <Text style=\"h6\">\r\n                            Confirm transaction in your wallet\r\n                          </Text>\r\n                          <Box css={{ color: '$neutralText' }}>\r\n                            <FontAwesomeIcon\r\n                              icon={faWallet}\r\n                              style={{\r\n                                width: '32px',\r\n                                height: '32px',\r\n                                margin: '12px 0px',\r\n                              }}\r\n                            />\r\n                          </Box>\r\n                          <CurrentStepTxHashes\r\n                            currentStep={stepData?.currentStep}\r\n                          />\r\n                          <Button\r\n                            disabled={true}\r\n                            css={{ mt: '$4', width: '100%' }}\r\n                          >\r\n                            <Loader />\r\n                            {copy.sweepCtaAwaitingApproval}\r\n                          </Button>\r\n                        </Flex>\r\n                      )}\r\n                    </>\r\n                  ) : null}\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n\r\n            {sweepStep === SweepStep.Finalizing && (\r\n              <Flex direction=\"column\">\r\n                <Box\r\n                  css={{\r\n                    p: '$4',\r\n                    borderBottom: '1px solid $neutralBorder',\r\n                  }}\r\n                >\r\n                  <PurchaseCheckout\r\n                    chainId={chainId}\r\n                    collection={collection}\r\n                    token={token}\r\n                    itemCount={itemAmount}\r\n                    totalPrice={\r\n                      (paymentCurrency?.currencyTotalRaw || 0n) + feeOnTop\r\n                    }\r\n                    currency={paymentCurrency}\r\n                    usdTotalFormatted={formatUnits(\r\n                      ((paymentCurrency?.currencyTotalRaw || 0n) + feeOnTop) *\r\n                        (paymentCurrency?.usdPriceRaw || 0n),\r\n                      (paymentCurrency?.decimals || 18) + 6\r\n                    )}\r\n                  />\r\n                </Box>\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  justify=\"center\"\r\n                  css={{\r\n                    gap: '$4',\r\n                    px: '$4',\r\n                    py: '$5',\r\n                  }}\r\n                >\r\n                  <Text style=\"h6\">Finalizing on blockchain</Text>\r\n                  <Text\r\n                    style=\"subtitle3\"\r\n                    color=\"subtle\"\r\n                    css={{ textAlign: 'center' }}\r\n                  >\r\n                    You can close this modal while it finalizes on the\r\n                    blockchain. The transaction will continue in the background.\r\n                  </Text>\r\n                  <Box css={{ color: '$neutralSolid' }}>\r\n                    <FontAwesomeIcon\r\n                      icon={faCube}\r\n                      style={{ width: 32, height: 32 }}\r\n                    />\r\n                  </Box>\r\n                </Flex>\r\n                <CurrentStepTxHashes currentStep={stepData?.currentStep} />\r\n                <Button disabled={true} css={{ m: '$4' }}>\r\n                  <Loader />\r\n                  {copy.sweepCtaAwaitingValidation}\r\n                </Button>\r\n              </Flex>\r\n            )}\r\n\r\n            {sweepStep === SweepStep.Complete && (\r\n              <Flex\r\n                direction=\"column\"\r\n                align=\"center\"\r\n                css={{ width: '100%', p: '$4' }}\r\n              >\r\n                <Flex\r\n                  direction=\"column\"\r\n                  align=\"center\"\r\n                  css={{ px: '$4', py: '$5', gap: 24 }}\r\n                >\r\n                  <Box\r\n                    css={{\r\n                      color: failedSales ? '$errorAccent' : '$successAccent',\r\n                    }}\r\n                  >\r\n                    <FontAwesomeIcon\r\n                      icon={failedSales ? faCircleExclamation : faCheckCircle}\r\n                      fontSize={32}\r\n                    />\r\n                  </Box>\r\n                  <Text style=\"h5\" css={{ textAlign: 'center' }}>\r\n                    {failedSales\r\n                      ? `${successfulSales} ${\r\n                          successfulSales > 1 ? 'items' : 'item'\r\n                        } purchased, ${failedSales} ${\r\n                          failedSales > 1 ? 'items' : 'item'\r\n                        } failed`\r\n                      : 'Congrats! Purchase was successful.'}\r\n                  </Text>\r\n                  <Flex direction=\"column\" css={{ gap: '$2', mb: '$3' }}>\r\n                    {stepData?.currentStep?.items?.map((item, itemIndex) => {\r\n                      if (\r\n                        Array.isArray(item?.txHashes) &&\r\n                        item?.txHashes.length > 0\r\n                      ) {\r\n                        return item.txHashes.map((hash, txHashIndex) => {\r\n                          const truncatedTxHash = truncateAddress(hash.txHash)\r\n                          const blockExplorerBaseUrl = getChainBlockExplorerUrl(\r\n                            hash.chainId\r\n                          )\r\n                          return (\r\n                            <Anchor\r\n                              key={`${itemIndex}-${txHashIndex}`}\r\n                              href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                              color=\"primary\"\r\n                              weight=\"medium\"\r\n                              target=\"_blank\"\r\n                              css={{ fontSize: 12 }}\r\n                            >\r\n                              View transaction: {truncatedTxHash}\r\n                            </Anchor>\r\n                          )\r\n                        })\r\n                      } else {\r\n                        return null\r\n                      }\r\n                    })}\r\n                  </Flex>\r\n                </Flex>\r\n                <Flex css={{ width: '100%' }}>\r\n                  {!!onGoToToken ? (\r\n                    <>\r\n                      <Button\r\n                        onClick={() => {\r\n                          setOpen(false)\r\n                        }}\r\n                        css={{ flex: 1 }}\r\n                        color=\"ghost\"\r\n                      >\r\n                        {copy.sweepCtaClose}\r\n                      </Button>\r\n                      <Button\r\n                        style={{ flex: 1 }}\r\n                        color=\"primary\"\r\n                        onClick={() => {\r\n                          onGoToToken({\r\n                            collectionId: collection?.id,\r\n                            maker: address,\r\n                            stepData,\r\n                          })\r\n                        }}\r\n                      >\r\n                        {copy.sweepCtaGoToToken.length > 0\r\n                          ? copy.sweepCtaGoToToken\r\n                          : `View ${successfulSales > 1 ? 'Tokens' : 'Token'}`}\r\n                      </Button>\r\n                    </>\r\n                  ) : (\r\n                    <Button\r\n                      css={{ width: '100%' }}\r\n                      onClick={() => setOpen(false)}\r\n                    >\r\n                      {copy.sweepCtaClose}\r\n                    </Button>\r\n                  )}\r\n                </Flex>\r\n              </Flex>\r\n            )}\r\n          </Modal>\r\n        )\r\n      }}\r\n    </SweepModalRenderer>\r\n  )\r\n}\r\n\r\nSweepModal.Custom = SweepModalRenderer\r\n","import React, {\r\n  FC,\r\n  ReactNode,\r\n  useCallback,\r\n  useContext,\r\n  useEffect,\r\n  useMemo,\r\n  useState,\r\n} from 'react'\r\nimport {\r\n  useChainCurrency,\r\n  useCollections,\r\n  useReservoirClient,\r\n  useTokens,\r\n} from '../../hooks'\r\nimport usePaymentTokens from '../../hooks/usePaymentTokens'\r\nimport { useAccount, useConfig, useWalletClient } from 'wagmi'\r\nimport {\r\n  BuyPath,\r\n  Execute,\r\n  LogLevel,\r\n  ReservoirChain,\r\n  ReservoirClientActions,\r\n  axios,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport { Address, WalletClient, formatUnits, zeroAddress } from 'viem'\r\nimport { EnhancedCurrency } from '../../hooks/usePaymentTokens'\r\nimport { getAccount, switchChain } from 'wagmi/actions'\r\nimport * as allChains from 'viem/chains'\r\nimport {\r\n  customChains,\r\n  ReservoirWallet,\r\n  BuyResponses,\r\n} from '@sh-reservoir0x/reservoir-sdk'\r\nimport { ProviderOptionsContext } from '../../ReservoirKitProvider'\r\n\r\nexport enum SweepStep {\r\n  Idle,\r\n  SelectPayment,\r\n  Approving,\r\n  Finalizing,\r\n  Complete,\r\n}\r\n\r\nexport type SweepModalStepData = {\r\n  totalSteps: number\r\n  stepProgress: number\r\n  currentStep: Execute['steps'][0]\r\n  currentStepItem: NonNullable<Execute['steps'][0]['items']>[0]\r\n  path: Execute['path']\r\n}\r\n\r\ntype BuyTokenOptions = Parameters<\r\n  ReservoirClientActions['buyToken']\r\n>['0']['options']\r\n\r\nexport type ChildrenProps = {\r\n  collection?: NonNullable<ReturnType<typeof useCollections>['data']>[0]\r\n  token?: NonNullable<ReturnType<typeof useTokens>['data']>[0]\r\n  loading: boolean\r\n  isFetchingPath: boolean\r\n  orders: NonNullable<BuyPath>\r\n  selectedTokens: NonNullable<BuyPath>\r\n  setSelectedTokens: React.Dispatch<React.SetStateAction<NonNullable<BuyPath>>>\r\n  itemAmount: number\r\n  setItemAmount: React.Dispatch<React.SetStateAction<number>>\r\n  maxItemAmount: number\r\n  setMaxItemAmount: React.Dispatch<React.SetStateAction<number>>\r\n  paymentCurrency?: EnhancedCurrency\r\n  setPaymentCurrency: React.Dispatch<\r\n    React.SetStateAction<EnhancedCurrency | undefined>\r\n  >\r\n  averageUnitPrice: bigint\r\n  chainCurrency: ReturnType<typeof useChainCurrency>\r\n  paymentTokens: EnhancedCurrency[]\r\n  totalIncludingFees: bigint\r\n  buyResponseFees?: BuyResponses['fees']\r\n  feeOnTop: bigint\r\n  feeUsd: string\r\n  usdPrice: number\r\n  usdPriceRaw: bigint\r\n  currentChain: ReservoirChain | null | undefined\r\n  address?: string\r\n  balance?: bigint\r\n  isConnected: boolean\r\n  disableJumperLink?: boolean\r\n  hasEnoughCurrency: boolean\r\n  addFundsLink: string\r\n  blockExplorerBaseUrl: string\r\n  transactionError: Error | null | undefined\r\n  stepData: SweepModalStepData | null\r\n  setStepData: React.Dispatch<React.SetStateAction<SweepModalStepData | null>>\r\n  sweepStep: SweepStep\r\n  setSweepStep: React.Dispatch<React.SetStateAction<SweepStep>>\r\n  sweepTokens: () => void\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  contract?: string\r\n  collectionId?: string\r\n  token?: string\r\n  onConnectWallet: () => void\r\n  chainId?: number\r\n  defaultQuantity?: number\r\n  feesOnTopBps?: string[] | null\r\n  feesOnTopUsd?: string[] | null\r\n  normalizeRoyalties?: boolean\r\n  children: (props: ChildrenProps) => ReactNode\r\n  walletClient?: ReservoirWallet | WalletClient\r\n  usePermit?: boolean\r\n}\r\n\r\nexport const SweepModalRenderer: FC<Props> = ({\r\n  open,\r\n  chainId,\r\n  contract,\r\n  collectionId,\r\n  token,\r\n  feesOnTopBps,\r\n  feesOnTopUsd,\r\n  defaultQuantity,\r\n  onConnectWallet,\r\n  normalizeRoyalties,\r\n  children,\r\n  walletClient,\r\n  usePermit,\r\n}) => {\r\n  const client = useReservoirClient()\r\n  const config = useConfig()\r\n  const { address } = useAccount()\r\n  const [selectedTokens, setSelectedTokens] = useState<NonNullable<BuyPath>>([])\r\n  const [isFetchingPath, setIsFetchingPath] = useState(false)\r\n  const [fetchedInitialOrders, setFetchedInitialOrders] = useState(false)\r\n  const [orders, setOrders] = useState<NonNullable<BuyPath>>([])\r\n  const [itemAmount, setItemAmount] = useState<number>(1)\r\n  const [maxItemAmount, setMaxItemAmount] = useState<number>(1)\r\n  const [sweepStep, setSweepStep] = useState<SweepStep>(SweepStep.Idle)\r\n  const [stepData, setStepData] = useState<SweepModalStepData | null>(null)\r\n  const [transactionError, setTransactionError] = useState<Error | null>()\r\n  const [totalIncludingFees, setTotalIncludingFees] = useState(0n)\r\n  const [averageUnitPrice, setAverageUnitPrice] = useState(0n)\r\n\r\n  const [hasEnoughCurrency, setHasEnoughCurrency] = useState(true)\r\n  const [feeOnTop, setFeeOnTop] = useState(0n)\r\n\r\n  const [buyResponseFees, setBuyResponseFees] = useState<\r\n    BuyResponses['fees'] | undefined\r\n  >(undefined)\r\n\r\n  const currentChain = client?.currentChain()\r\n\r\n  const rendererChain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const chainCurrency = useChainCurrency(rendererChain?.id)\r\n\r\n  const collectionContract =\r\n    contract ?? collectionId?.split(':')?.[0] ?? token?.split(':')?.[0]\r\n  const tokenId = token?.split(':')?.[1]\r\n\r\n  const wagmiChain: allChains.Chain | undefined = Object.values({\r\n    ...allChains,\r\n    ...customChains,\r\n  }).find(({ id }) => rendererChain?.id === id)\r\n\r\n  const providerOptions = useContext(ProviderOptionsContext)\r\n  const disableJumperLink = providerOptions?.disableJumperLink\r\n  const includeListingCurrency =\r\n    providerOptions.alwaysIncludeListingCurrency !== false\r\n\r\n  const { data: wagmiWallet } = useWalletClient({ chainId: rendererChain?.id })\r\n\r\n  const wallet = walletClient || wagmiWallet\r\n\r\n  const blockExplorerBaseUrl =\r\n    wagmiChain?.blockExplorers?.default?.url || 'https://etherscan.io'\r\n\r\n  const {\r\n    data: collections,\r\n    mutate: mutateCollection,\r\n    isFetchingPage: isFetchingCollections,\r\n  } = useCollections(\r\n    open && {\r\n      contract: collectionId ? undefined : collectionContract,\r\n      id: collectionId ? collectionId : undefined,\r\n    },\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n\r\n  const collection = collections && collections[0] ? collections[0] : undefined\r\n\r\n  const is1155 = collection?.contractKind === 'erc1155'\r\n  const isSingleToken1155 = is1155 && collection?.tokenCount === '1'\r\n\r\n  const { data: tokens } = useTokens(\r\n    open && (tokenId || isSingleToken1155)\r\n      ? {\r\n          collection: isSingleToken1155 ? collection?.id : undefined,\r\n          tokens: isSingleToken1155\r\n            ? undefined\r\n            : `${collectionContract}:${tokenId}`,\r\n        }\r\n      : undefined,\r\n    {},\r\n    rendererChain?.id\r\n  )\r\n\r\n  const tokenData = tokens && tokens[0] ? tokens[0] : undefined\r\n\r\n  const [_paymentCurrency, _setPaymentCurrency] = useState<\r\n    EnhancedCurrency | undefined\r\n  >(undefined)\r\n\r\n  const paymentKey = useMemo(() => {\r\n    if (token) {\r\n      return token\r\n    } else if (tokenData?.token?.tokenId && collectionContract) {\r\n      return `${collectionContract}:${tokenData?.token?.tokenId}`\r\n    } else if (collectionId) {\r\n      return collectionId\r\n    } else return collectionContract\r\n  }, [token, collectionId, , collectionContract, tokenData?.token?.tokenId])\r\n\r\n  const paymentTokens = usePaymentTokens({\r\n    open,\r\n    address: address as Address,\r\n    quantityToken: {\r\n      [`${paymentKey}`]: itemAmount,\r\n    },\r\n    path: orders,\r\n    nativeOnly: false,\r\n    chainId: rendererChain?.id,\r\n    crossChainDisabled: !is1155,\r\n  })\r\n\r\n  const paymentCurrency = paymentTokens?.find(\r\n    (paymentToken: EnhancedCurrency) =>\r\n      paymentToken?.address === _paymentCurrency?.address &&\r\n      paymentToken?.chainId === _paymentCurrency?.chainId\r\n  )\r\n\r\n  const usdPrice = paymentCurrency?.usdPrice || 0\r\n  const usdPriceRaw = paymentCurrency?.usdPriceRaw || 0n\r\n\r\n  const feeUsd = formatUnits(\r\n    feeOnTop * usdPriceRaw,\r\n    (paymentCurrency?.decimals || 18) + 6\r\n  )\r\n\r\n  const fetchBuyPath = useCallback(\r\n    (\r\n      paymentCurrency: EnhancedCurrency | undefined,\r\n      paymentTokens: EnhancedCurrency[]\r\n    ) => {\r\n      if (!open || !client || paymentTokens.length === 0) {\r\n        return\r\n      }\r\n\r\n      setIsFetchingPath(true)\r\n\r\n      let options: BuyTokenOptions = {\r\n        partial: true,\r\n        onlyPath: true,\r\n      }\r\n\r\n      if (is1155) {\r\n        if (feesOnTopBps && feesOnTopBps?.length > 0) {\r\n          const fixedFees = feesOnTopBps.map((fullFee) => {\r\n            const [referrer] = fullFee.split(':')\r\n            return `${referrer}:1`\r\n          })\r\n          options.feesOnTop = fixedFees\r\n        } else if (feesOnTopUsd && feesOnTopUsd.length > 0) {\r\n          const feesOnTopFixed = feesOnTopUsd.map((feeOnTop) => {\r\n            const [recipient] = feeOnTop.split(':')\r\n            return `${recipient}:1`\r\n          })\r\n          options.feesOnTop = feesOnTopFixed\r\n        } else if (!feesOnTopUsd && !feesOnTopBps) {\r\n          delete options.feesOnTop\r\n        }\r\n      }\r\n\r\n      if (normalizeRoyalties !== undefined) {\r\n        options.normalizeRoyalties = normalizeRoyalties\r\n      }\r\n\r\n      if (paymentCurrency) {\r\n        options.currency = paymentCurrency.address\r\n        if (paymentCurrency.chainId) {\r\n          options.currencyChainId = paymentCurrency.chainId\r\n        }\r\n      } else if (!includeListingCurrency) {\r\n        options.currency = paymentTokens[0].address\r\n        if (paymentTokens[0].chainId) {\r\n          options.currencyChainId = paymentTokens[0].chainId\r\n        }\r\n        _setPaymentCurrency(paymentTokens[0])\r\n      }\r\n\r\n      return client?.actions\r\n        .buyToken({\r\n          chainId: rendererChain?.id,\r\n          items: [\r\n            {\r\n              collection:\r\n                token ?? tokenData?.token?.tokenId ? undefined : collection?.id,\r\n              token:\r\n                token ?? tokenData?.token?.tokenId\r\n                  ? `${collectionContract}:${\r\n                      tokenId ?? tokenData?.token?.tokenId\r\n                    }`\r\n                  : undefined,\r\n              fillType: 'trade',\r\n            },\r\n          ],\r\n          expectedPrice: undefined,\r\n          options,\r\n          wallet: {\r\n            address: async () => {\r\n              return address || zeroAddress\r\n            },\r\n          } as any,\r\n          precheck: true,\r\n          onProgress: () => {},\r\n        })\r\n        .then((rawData) => {\r\n          let data = rawData as BuyResponses\r\n\r\n          if ('path' in data) {\r\n            let pathData = data['path']\r\n            setOrders(pathData ?? [])\r\n\r\n            if (data.fees) {\r\n              setBuyResponseFees(data.fees)\r\n            }\r\n\r\n            const pathOrderQuantity =\r\n              pathData?.reduce(\r\n                (quantity, order) => quantity + (order?.quantity || 1),\r\n                0\r\n              ) || 0\r\n            let totalMaxQuantity = pathOrderQuantity\r\n            if ('maxQuantities' in data && data.maxQuantities?.[0]) {\r\n              if (is1155) {\r\n                totalMaxQuantity = data.maxQuantities.reduce(\r\n                  (total, currentQuantity) =>\r\n                    total + Number(currentQuantity.maxQuantity ?? 1),\r\n                  0\r\n                )\r\n              } else {\r\n                let maxQuantity = data.maxQuantities?.[0].maxQuantity\r\n                // if value is null/undefined, we don't know max quantity, but simulation succeeed with quantity of 1\r\n                totalMaxQuantity = maxQuantity ? Number(maxQuantity) : 1\r\n              }\r\n            }\r\n            setMaxItemAmount(\r\n              pathOrderQuantity > totalMaxQuantity\r\n                ? totalMaxQuantity\r\n                : pathOrderQuantity\r\n            )\r\n\r\n            if (!paymentCurrency && pathData?.[0]) {\r\n              const listingToken = {\r\n                address: (pathData[0].buyInCurrency ||\r\n                  pathData[0].currency) as Address,\r\n                decimals:\r\n                  pathData[0].buyInCurrencyDecimals ||\r\n                  pathData[0].currencyDecimals ||\r\n                  18,\r\n                symbol:\r\n                  pathData[0].buyInCurrencySymbol ||\r\n                  pathData[0].currencySymbol ||\r\n                  '',\r\n                name:\r\n                  pathData[0].buyInCurrencySymbol ||\r\n                  pathData[0].currencySymbol ||\r\n                  '',\r\n                chainId: rendererChain?.id || 1,\r\n              }\r\n\r\n              _setPaymentCurrency(listingToken)\r\n            }\r\n          }\r\n        })\r\n        .catch((err) => {\r\n          setOrders([])\r\n          throw err\r\n        })\r\n        .finally(() => {\r\n          setFetchedInitialOrders(true)\r\n          setIsFetchingPath(false)\r\n        })\r\n    },\r\n    [\r\n      address,\r\n      client,\r\n      wallet,\r\n      rendererChain,\r\n      normalizeRoyalties,\r\n      collectionId,\r\n      tokenData?.token?.tokenId,\r\n      collectionContract,\r\n      collection?.id,\r\n      tokenId,\r\n      rendererChain?.paymentTokens,\r\n      is1155,\r\n      includeListingCurrency,\r\n      feesOnTopBps,\r\n      feesOnTopUsd,\r\n      _setPaymentCurrency,\r\n    ]\r\n  )\r\n\r\n  const setPaymentCurrency: typeof _setPaymentCurrency = useCallback(\r\n    (\r\n      value:\r\n        | EnhancedCurrency\r\n        | ((\r\n            prevState: EnhancedCurrency | undefined\r\n          ) => EnhancedCurrency | undefined)\r\n        | undefined\r\n    ) => {\r\n      if (typeof value === 'function') {\r\n        _setPaymentCurrency((prevState) => {\r\n          const newValue = value(prevState)\r\n          if (\r\n            newValue?.address !== paymentCurrency?.address ||\r\n            newValue?.chainId !== paymentCurrency?.chainId\r\n          ) {\r\n            fetchBuyPath(newValue, paymentTokens)?.catch((err) => {\r\n              if (\r\n                err?.statusCode === 400 &&\r\n                err?.message?.includes('Price too high')\r\n              ) {\r\n                _setPaymentCurrency(prevState)\r\n              }\r\n            })\r\n          }\r\n          return newValue\r\n        })\r\n      } else {\r\n        if (\r\n          value?.address !== paymentCurrency?.address ||\r\n          value?.chainId !== paymentCurrency?.chainId\r\n        ) {\r\n          _setPaymentCurrency(value)\r\n          fetchBuyPath(value, paymentTokens)?.catch((err) => {\r\n            if (\r\n              err?.statusCode === 400 &&\r\n              err?.message?.includes('Price too high')\r\n            ) {\r\n              _setPaymentCurrency(paymentCurrency)\r\n            }\r\n          })\r\n        }\r\n      }\r\n    },\r\n    [fetchBuyPath, _setPaymentCurrency, paymentCurrency]\r\n  )\r\n\r\n  const fetchBuyPathIfIdle = useCallback(() => {\r\n    if (collection && sweepStep === SweepStep.Idle) {\r\n      fetchBuyPath(paymentCurrency, paymentTokens)\r\n    }\r\n  }, [fetchBuyPath, sweepStep, collection])\r\n\r\n  useEffect(() => {\r\n    if (open) {\r\n      fetchBuyPathIfIdle()\r\n\r\n      const intervalId = setInterval(fetchBuyPathIfIdle, 60000) // Poll buy api every 1 minute\r\n      return () => clearInterval(intervalId)\r\n    }\r\n  }, [client, wallet, open, fetchBuyPathIfIdle, tokenId, is1155, collection])\r\n\r\n  useEffect(() => {\r\n    let totalFees = 0n\r\n\r\n    if (\r\n      paymentCurrency?.currencyTotalRaw &&\r\n      paymentCurrency.currencyTotalRaw > 0n\r\n    ) {\r\n      let currencyTotalRawMinusRelayerFees = paymentCurrency?.currencyTotalRaw\r\n\r\n      // if cross-chain, subtract relayer fees from currencyTotalRaw\r\n      if (buyResponseFees?.relayer?.amount?.raw) {\r\n        const relayerFees = BigInt(buyResponseFees?.relayer?.amount?.raw ?? 0)\r\n\r\n        currencyTotalRawMinusRelayerFees -= relayerFees\r\n      }\r\n\r\n      if (feesOnTopBps && feesOnTopBps.length > 0) {\r\n        const fees = feesOnTopBps.reduce((totalFees, feeOnTop) => {\r\n          const [_, fee] = feeOnTop.split(':')\r\n          return (\r\n            totalFees +\r\n            (BigInt(fee) * currencyTotalRawMinusRelayerFees) / 10000n\r\n          )\r\n        }, 0n)\r\n        totalFees += fees\r\n        setFeeOnTop(fees)\r\n      } else if (feesOnTopUsd && feesOnTopUsd.length > 0 && usdPriceRaw) {\r\n        const fees = feesOnTopUsd.reduce((totalFees, feeOnTop) => {\r\n          const [_, fee] = feeOnTop.split(':')\r\n          const atomicFee = BigInt(fee)\r\n          const convertedAtomicFee =\r\n            atomicFee * BigInt(10 ** paymentCurrency?.decimals!)\r\n          const currencyFee = convertedAtomicFee / usdPriceRaw\r\n          return totalFees + currencyFee\r\n        }, 0n)\r\n        totalFees += fees\r\n        setFeeOnTop(fees)\r\n      } else {\r\n        setFeeOnTop(0n)\r\n      }\r\n\r\n      setTotalIncludingFees(paymentCurrency.currencyTotalRaw + totalFees)\r\n      setAverageUnitPrice(\r\n        paymentCurrency.currencyTotalRaw / BigInt(itemAmount || 1)\r\n      )\r\n    } else {\r\n      setTotalIncludingFees(0n)\r\n      setAverageUnitPrice(0n)\r\n    }\r\n  }, [\r\n    paymentCurrency,\r\n    feesOnTopBps,\r\n    feesOnTopUsd,\r\n    usdPriceRaw,\r\n    itemAmount,\r\n    buyResponseFees,\r\n  ])\r\n\r\n  const addFundsLink = paymentCurrency?.address\r\n    ? `https://jumper.exchange/?toChain=${rendererChain?.id}&toToken=${paymentCurrency?.address}`\r\n    : `https://jumper.exchange/?toChain=${rendererChain?.id}`\r\n\r\n  // Determine if user has enough funds in paymentToken\r\n  useEffect(() => {\r\n    if (\r\n      paymentCurrency?.balance != undefined &&\r\n      totalIncludingFees != undefined &&\r\n      BigInt(paymentCurrency?.balance) < totalIncludingFees\r\n    ) {\r\n      setHasEnoughCurrency(false)\r\n    } else {\r\n      setHasEnoughCurrency(true)\r\n    }\r\n  }, [totalIncludingFees, paymentCurrency?.balance])\r\n\r\n  useEffect(() => {\r\n    let updatedTokens = []\r\n    let quantity = 0\r\n    for (var i = 0; i < orders.length; i++) {\r\n      const order = orders[i]\r\n      if (order.quantity && order.quantity > 1) {\r\n        quantity += order.quantity\r\n      } else {\r\n        quantity++\r\n      }\r\n      updatedTokens.push(order)\r\n      if (quantity >= itemAmount) {\r\n        break\r\n      }\r\n    }\r\n    setSelectedTokens(updatedTokens)\r\n  }, [itemAmount, maxItemAmount, orders])\r\n\r\n  // Reset state on close\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setSelectedTokens([])\r\n      setOrders([])\r\n      setItemAmount(1)\r\n      setMaxItemAmount(1)\r\n      setSweepStep(SweepStep.Idle)\r\n      setTransactionError(null)\r\n      setFetchedInitialOrders(false)\r\n      setIsFetchingPath(false)\r\n      _setPaymentCurrency(undefined)\r\n      setBuyResponseFees(undefined)\r\n      setStepData(null)\r\n    } else {\r\n      setItemAmount(defaultQuantity || 1)\r\n    }\r\n  }, [open])\r\n\r\n  open\r\n    ? (axios.defaults.headers.common['x-rkui-context'] = 'sweepModalRenderer')\r\n    : delete axios.defaults.headers.common?.['x-rkui-context']\r\n\r\n  useEffect(() => {\r\n    if (maxItemAmount > 0 && itemAmount > maxItemAmount) {\r\n      setItemAmount(maxItemAmount)\r\n    }\r\n  }, [maxItemAmount, itemAmount])\r\n\r\n  const sweepTokens = useCallback(async () => {\r\n    if (!wallet) {\r\n      onConnectWallet()\r\n      if (document.body.style) {\r\n        document.body.style.pointerEvents = 'auto'\r\n      }\r\n      client?.log(['Missing wallet, prompting connection'], LogLevel.Verbose)\r\n      return\r\n    }\r\n\r\n    let activeWalletChain = getAccount(config).chain\r\n    if (paymentCurrency?.chainId !== activeWalletChain?.id) {\r\n      activeWalletChain = await switchChain(config, {\r\n        chainId: paymentCurrency?.chainId as number,\r\n      })\r\n    }\r\n    if (paymentCurrency?.chainId !== activeWalletChain?.id) {\r\n      const error = new Error(`Mismatching chainIds`)\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    if (!client) {\r\n      const error = new Error('ReservoirClient was not initialized')\r\n      setTransactionError(error)\r\n      throw error\r\n    }\r\n\r\n    setTransactionError(null)\r\n    let options: BuyTokenOptions = {\r\n      partial: true,\r\n      currency: paymentCurrency?.address,\r\n      currencyChainId: paymentCurrency?.chainId,\r\n    }\r\n\r\n    const relayerFee = BigInt(buyResponseFees?.relayer?.amount?.raw ?? 0)\r\n\r\n    if (feesOnTopBps && feesOnTopBps?.length > 0) {\r\n      const fixedFees = feesOnTopBps.map((fullFee) => {\r\n        const [referrer, feeBps] = fullFee.split(':')\r\n        let totalFeeTruncated = totalIncludingFees - feeOnTop\r\n\r\n        // if relayer fee, subtract from total\r\n        if (relayerFee) {\r\n          totalFeeTruncated -= relayerFee\r\n        }\r\n\r\n        const fee = Math.floor(\r\n          Number(totalFeeTruncated * BigInt(feeBps)) / 10000\r\n        )\r\n        const atomicUnitsFee = formatUnits(BigInt(fee), 0)\r\n        return `${referrer}:${atomicUnitsFee}`\r\n      })\r\n      options.feesOnTop = fixedFees\r\n    } else if (feesOnTopUsd && feesOnTopUsd.length > 0 && usdPriceRaw) {\r\n      const feesOnTopFixed = feesOnTopUsd.map((feeOnTop) => {\r\n        const [recipient, fee] = feeOnTop.split(':')\r\n        const atomicFee = BigInt(fee)\r\n        const convertedAtomicFee =\r\n          atomicFee * BigInt(10 ** paymentCurrency?.decimals!)\r\n        const currencyFee = convertedAtomicFee / usdPriceRaw\r\n        const parsedFee = formatUnits(currencyFee, 0)\r\n        return `${recipient}:${parsedFee}`\r\n      })\r\n      options.feesOnTop = feesOnTopFixed\r\n    } else if (!feesOnTopUsd && !feesOnTopBps) {\r\n      delete options.feesOnTop\r\n    }\r\n\r\n    if (normalizeRoyalties !== undefined) {\r\n      options.normalizeRoyalties = normalizeRoyalties\r\n    }\r\n\r\n    if (usePermit) {\r\n      options.usePermit = true\r\n    }\r\n\r\n    setSweepStep(SweepStep.Approving)\r\n\r\n    client.actions\r\n      .buyToken({\r\n        chainId: rendererChain?.id,\r\n        items: [\r\n          {\r\n            collection: tokenData?.token?.tokenId ? undefined : collection?.id,\r\n            token: tokenData?.token?.tokenId\r\n              ? `${collectionContract}:${tokenData?.token?.tokenId}`\r\n              : undefined,\r\n            quantity: itemAmount,\r\n            fillType: 'trade',\r\n          },\r\n        ],\r\n        expectedPrice: {\r\n          [paymentCurrency?.address || zeroAddress]: {\r\n            raw: totalIncludingFees - relayerFee,\r\n            currencyAddress: paymentCurrency?.address,\r\n            currencyDecimals: paymentCurrency?.decimals || 18,\r\n          },\r\n        },\r\n        wallet,\r\n        options,\r\n        onProgress: (steps: Execute['steps'], path: Execute['path']) => {\r\n          if (!steps) {\r\n            return\r\n          }\r\n\r\n          const executableSteps = steps.filter(\r\n            (step) => step.items && step.items.length > 0\r\n          )\r\n\r\n          let stepCount = executableSteps.length\r\n\r\n          let currentStepItem:\r\n            | NonNullable<Execute['steps'][0]['items']>[0]\r\n            | undefined\r\n\r\n          const currentStepIndex = executableSteps.findIndex((step) => {\r\n            currentStepItem = step.items?.find(\r\n              (item) => item.status === 'incomplete'\r\n            )\r\n            return currentStepItem\r\n          })\r\n\r\n          const currentStep =\r\n            currentStepIndex > -1\r\n              ? executableSteps[currentStepIndex]\r\n              : executableSteps[stepCount - 1]\r\n\r\n          if (currentStepItem) {\r\n            setStepData({\r\n              totalSteps: stepCount,\r\n              stepProgress: currentStepIndex,\r\n              currentStep,\r\n              currentStepItem,\r\n              path: path,\r\n            })\r\n          }\r\n\r\n          if (\r\n            currentStepIndex + 1 === executableSteps.length &&\r\n            currentStep?.items?.every((item) => item.txHashes)\r\n          ) {\r\n            setSweepStep(SweepStep.Finalizing)\r\n          }\r\n\r\n          if (\r\n            steps.every(\r\n              (step) =>\r\n                !step.items ||\r\n                step.items.length == 0 ||\r\n                step.items?.every((item) => item.status === 'complete')\r\n            )\r\n          ) {\r\n            setSweepStep(SweepStep.Complete)\r\n          }\r\n        },\r\n      })\r\n      .catch((error: Error) => {\r\n        setTransactionError(error)\r\n        setSweepStep(SweepStep.Idle)\r\n        mutateCollection()\r\n        fetchBuyPath(paymentCurrency, paymentTokens)\r\n      })\r\n  }, [\r\n    selectedTokens,\r\n    client,\r\n    wallet,\r\n    config,\r\n    address,\r\n    totalIncludingFees,\r\n    normalizeRoyalties,\r\n    wagmiChain,\r\n    rendererChain,\r\n    collectionId,\r\n    collection?.id,\r\n    tokenId,\r\n    feesOnTopBps,\r\n    onConnectWallet,\r\n    feesOnTopUsd,\r\n    itemAmount,\r\n    tokenData?.token?.tokenId,\r\n    collectionContract,\r\n    paymentCurrency?.address,\r\n    paymentCurrency?.chainId,\r\n    paymentCurrency?.currencyTotalRaw,\r\n    paymentTokens,\r\n    buyResponseFees,\r\n    usePermit,\r\n  ])\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        collection,\r\n        token: tokenData,\r\n        loading:\r\n          isFetchingCollections ||\r\n          (!isFetchingCollections && collection && !fetchedInitialOrders) ||\r\n          ((token !== undefined || isSingleToken1155) && !tokenData) ||\r\n          !(paymentTokens.length > 0),\r\n        isFetchingPath,\r\n        address: address,\r\n        selectedTokens,\r\n        setSelectedTokens,\r\n        itemAmount,\r\n        setItemAmount,\r\n        maxItemAmount,\r\n        setMaxItemAmount,\r\n        paymentCurrency,\r\n        setPaymentCurrency,\r\n        chainCurrency,\r\n        paymentTokens,\r\n        totalIncludingFees,\r\n        buyResponseFees,\r\n        averageUnitPrice,\r\n        feeOnTop,\r\n        feeUsd,\r\n        usdPrice,\r\n        disableJumperLink,\r\n        usdPriceRaw,\r\n        isConnected: wallet !== undefined,\r\n        currentChain,\r\n        orders,\r\n        balance: paymentCurrency?.balance\r\n          ? BigInt(paymentCurrency.balance)\r\n          : undefined,\r\n        hasEnoughCurrency,\r\n        addFundsLink,\r\n        blockExplorerBaseUrl,\r\n        transactionError,\r\n        stepData,\r\n        setStepData,\r\n        sweepStep,\r\n        setSweepStep,\r\n        sweepTokens,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n","import React, { FC } from 'react'\r\nimport {\r\n  Box,\r\n  Button,\r\n  ChainIcon,\r\n  CryptoCurrencyIcon,\r\n  Flex,\r\n  Text,\r\n} from '../primitives'\r\nimport { EnhancedCurrency } from '../hooks/usePaymentTokens'\r\nimport { formatUnits, zeroAddress } from 'viem'\r\nimport EthIconCircleBlue from '../img/EthIconCircleBlue'\r\nimport { formatNumber } from '../lib/numbers'\r\n\r\ntype Props = {\r\n  paymentTokens: EnhancedCurrency[]\r\n  setCurrency: React.Dispatch<\r\n    React.SetStateAction<EnhancedCurrency | undefined>\r\n  >\r\n  goBack: () => void\r\n  currency?: EnhancedCurrency\r\n  itemAmount: number\r\n  chainId: number\r\n}\r\n\r\nconst PaymentTokenRow = ({\r\n  setCurrency,\r\n  paymentToken,\r\n  goBack,\r\n  currency,\r\n}: {\r\n  setCurrency: Props['setCurrency']\r\n  paymentToken: EnhancedCurrency\r\n  goBack: Props['goBack']\r\n  currency?: EnhancedCurrency\r\n}) => {\r\n  const isSelectedCurrency =\r\n    currency?.address.toLowerCase() === paymentToken?.address &&\r\n    currency?.chainId === paymentToken?.chainId\r\n  const formattedBalance = formatUnits(\r\n    BigInt(paymentToken?.balance || 0),\r\n    paymentToken?.decimals || 18\r\n  )\r\n  return (\r\n    <Button\r\n      color=\"ghost\"\r\n      size=\"none\"\r\n      css={{\r\n        display: 'flex',\r\n        alignItems: 'center',\r\n        justifyContent: 'space-between',\r\n        width: '100%',\r\n        p: '$4',\r\n        background: '$neutralBg',\r\n        borderRadius: 8,\r\n        border: isSelectedCurrency ? '1px solid $accentBorderHover' : 'none',\r\n        '&:hover': {\r\n          background: '$neutralBgHover',\r\n        },\r\n        '&:disabled': {\r\n          background: 'transparent',\r\n          cursor: 'not-allowed',\r\n        },\r\n      }}\r\n      onClick={() => {\r\n        setCurrency(paymentToken)\r\n        goBack()\r\n      }}\r\n    >\r\n      <Flex\r\n        align=\"center\"\r\n        css={{\r\n          gap: '$3',\r\n          width: '100%',\r\n        }}\r\n      >\r\n        {paymentToken?.address === zeroAddress ? (\r\n          <Box\r\n            css={{\r\n              display: 'flex',\r\n              width: 34,\r\n              height: 34,\r\n              'object-fit': 'contain',\r\n              position: 'relative',\r\n            }}\r\n          >\r\n            <EthIconCircleBlue />\r\n            <ChainIcon\r\n              chainId={paymentToken.chainId}\r\n              color={true}\r\n              css={{\r\n                position: 'absolute',\r\n                bottom: -5,\r\n                right: -5,\r\n                width: 20,\r\n                height: 20,\r\n              }}\r\n            />\r\n          </Box>\r\n        ) : (\r\n          <CryptoCurrencyIcon\r\n            chainId={paymentToken.chainId}\r\n            address={paymentToken?.address as string}\r\n            css={{ width: 34, height: 34, 'object-fit': 'contain' }}\r\n          />\r\n        )}\r\n        <Text style=\"subtitle2\" css={{ mr: 'auto' }} ellipsify>\r\n          {paymentToken?.name}\r\n        </Text>\r\n        <Text style=\"subtitle2\" color=\"subtle\">\r\n          Balance: {formatNumber(Number(formattedBalance), 6)}\r\n        </Text>\r\n      </Flex>\r\n    </Button>\r\n  )\r\n}\r\n\r\nexport const SelectPaymentToken: FC<Props> = ({\r\n  paymentTokens,\r\n  setCurrency,\r\n  goBack,\r\n  currency,\r\n  itemAmount,\r\n  chainId,\r\n}) => {\r\n  const availablePaymentTokens = paymentTokens.filter((paymentToken) => {\r\n    const isSelectedCurrency =\r\n      currency?.address.toLowerCase() === paymentToken?.address &&\r\n      currency?.chainId === paymentToken?.chainId\r\n    const hasMaxItemAmount = paymentToken?.maxItems != undefined\r\n    const hasMaxPricePerItem = paymentToken?.maxPricePerItem != undefined\r\n    const hasCurrencyTotalRaw = paymentToken?.currencyTotalRaw != undefined\r\n\r\n    const maxPurchasablePrice = paymentToken?.capacityPerRequest\r\n    const maxItemAmount = paymentToken?.maxItems\r\n      ? BigInt(paymentToken?.maxItems)\r\n      : undefined\r\n\r\n    return Boolean(\r\n      isSelectedCurrency ||\r\n        (!hasMaxPricePerItem && !hasMaxItemAmount && hasCurrencyTotalRaw) ||\r\n        (maxPurchasablePrice &&\r\n          paymentToken?.currencyTotalRaw !== undefined &&\r\n          maxPurchasablePrice >= paymentToken?.currencyTotalRaw &&\r\n          maxItemAmount &&\r\n          maxItemAmount >= itemAmount)\r\n    )\r\n  })\r\n\r\n  const nativeCurrencies = availablePaymentTokens.filter(\r\n    (token) => token.chainId === chainId\r\n  )\r\n  const crossChainCurrencies = availablePaymentTokens.filter(\r\n    (token) => token.chainId !== chainId\r\n  )\r\n\r\n  return (\r\n    <Flex direction=\"column\" css={{ width: '100%', gap: '$3', px: '$3' }}>\r\n      {nativeCurrencies.map((paymentToken, idx) => (\r\n        <PaymentTokenRow\r\n          key={idx}\r\n          currency={currency}\r\n          goBack={goBack}\r\n          setCurrency={setCurrency}\r\n          paymentToken={paymentToken}\r\n        />\r\n      ))}\r\n      {crossChainCurrencies.length > 0 ? (\r\n        <Flex direction=\"column\" align=\"start\" css={{ gap: '$2' }}>\r\n          <Text style=\"subtitle2\" color=\"subtle\">\r\n            CrossChain ETH\r\n          </Text>\r\n          <Text color=\"accent\" style=\"body3\">\r\n            *CrossChain payment is currently limited to a single item.\r\n          </Text>\r\n        </Flex>\r\n      ) : null}\r\n      {crossChainCurrencies.map((paymentToken, idx) => (\r\n        <PaymentTokenRow\r\n          key={idx}\r\n          currency={currency}\r\n          goBack={goBack}\r\n          setCurrency={setCurrency}\r\n          paymentToken={paymentToken}\r\n        />\r\n      ))}\r\n    </Flex>\r\n  )\r\n}\r\n","import React from 'react'\r\n\r\nexport default () => (\r\n  <svg\r\n    width=\"auto\"\r\n    height=\"100%\"\r\n    viewBox=\"0 0 80 80\"\r\n    fill=\"none\"\r\n    xmlns=\"http://www.w3.org/2000/svg\"\r\n  >\r\n    <path\r\n      d=\"M40 80C62.0914 80 80 62.0914 80 40C80 17.9086 62.0914 0 40 0C17.9086 0 0 17.9086 0 40C0 62.0914 17.9086 80 40 80Z\"\r\n      fill=\"#627EEA\"\r\n    />\r\n    <path\r\n      d=\"M41.2451 10V32.175L59.9876 40.55L41.2451 10Z\"\r\n      fill=\"white\"\r\n      fill-opacity=\"0.602\"\r\n    />\r\n    <path d=\"M41.245 10L22.5 40.55L41.245 32.175V10Z\" fill=\"white\" />\r\n    <path\r\n      d=\"M41.2451 54.92V69.9875L60.0001 44.04L41.2451 54.92Z\"\r\n      fill=\"white\"\r\n      fill-opacity=\"0.602\"\r\n    />\r\n    <path d=\"M41.245 69.9875V54.9175L22.5 44.04L41.245 69.9875Z\" fill=\"white\" />\r\n    <path\r\n      d=\"M41.2451 51.4326L59.9876 40.5501L41.2451 32.1801V51.4326Z\"\r\n      fill=\"white\"\r\n      fill-opacity=\"0.2\"\r\n    />\r\n    <path\r\n      d=\"M22.5 40.5501L41.245 51.4326V32.1801L22.5 40.5501Z\"\r\n      fill=\"white\"\r\n      fill-opacity=\"0.602\"\r\n    />\r\n  </svg>\r\n)\r\n","import { useFallbackState } from '../../hooks'\r\nimport { keyframes } from '../../../stitches.config'\r\nimport {\r\n  Box,\r\n  Flex,\r\n  Text,\r\n  Button,\r\n  Anchor,\r\n  FormatCryptoCurrency,\r\n  FormatCurrency,\r\n  Loader,\r\n  ChainIcon,\r\n} from '../../primitives'\r\nimport Popover from '../../primitives/Popover'\r\nimport React, {\r\n  ComponentPropsWithRef,\r\n  Dispatch,\r\n  ReactElement,\r\n  ReactNode,\r\n  SetStateAction,\r\n  useContext,\r\n  useEffect,\r\n  useMemo,\r\n  useState,\r\n} from 'react'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport {\r\n  faClose,\r\n  faLock,\r\n  faRefresh,\r\n  faShoppingCart,\r\n} from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport { ProviderOptionsContext } from '../../ReservoirKitProvider'\r\nimport CartItem from './CartItem'\r\nimport CartToast from './CartToast'\r\nimport CartPopoverRenderer from './CartPopoverRenderer'\r\nimport {\r\n  CheckoutStatus,\r\n  CheckoutTransactionError,\r\n} from '../../context/CartProvider'\r\nimport { useAccount } from 'wagmi'\r\nimport { CartCheckoutModal } from './CartCheckoutModal'\r\nimport { Logo } from '../../modal/Modal'\r\nimport { truncateAddress } from '../../lib/truncate'\r\nimport getChainBlockExplorerUrl from '../../lib/getChainBlockExplorerUrl'\r\n\r\nconst scaleUp = keyframes({\r\n  '0%': { opacity: 0, transform: 'scale(0.9) translateY(-10px)' },\r\n  '100%': { opacity: 1, transform: 'scale(1) translateY(0)' },\r\n})\r\n\r\nconst scaleDown = keyframes({\r\n  '0%': { opacity: 1, transform: 'scale(1) translateY(0)' },\r\n  '100%': { opacity: 0, transform: 'scale(0.9) translateY(-10px)' },\r\n})\r\n\r\ntype Props = {\r\n  trigger: ReactNode\r\n  side?: ComponentPropsWithRef<typeof Popover>['side']\r\n  openState?: [boolean, Dispatch<SetStateAction<boolean>>]\r\n  tokenUrl?: string\r\n  onConnectWallet: () => void\r\n}\r\n\r\nconst CONTENT_OFFSET = 8\r\n\r\nexport function CartPopover({\r\n  trigger,\r\n  side,\r\n  openState,\r\n  tokenUrl,\r\n  onConnectWallet,\r\n}: Props): ReactElement {\r\n  const [popoverTrigger, setPopoverTrigger] =\r\n    useState<HTMLButtonElement | null>(null)\r\n  const [open, setOpen] = useFallbackState(\r\n    openState ? openState[0] : false,\r\n    openState\r\n  )\r\n  const providerOptionsContext = useContext(ProviderOptionsContext)\r\n  const [displayPendingTransaction, setDisplayPendingTransaction] =\r\n    useState(false)\r\n  const [purchaseComplete, setPurchaseComplete] = useState(false)\r\n  const { isConnected } = useAccount()\r\n\r\n  useEffect(() => {\r\n    if (!open) {\r\n      setDisplayPendingTransaction(false)\r\n      setPurchaseComplete(false)\r\n    }\r\n  }, [open])\r\n\r\n  const triggerBottom = useMemo(\r\n    () =>\r\n      (popoverTrigger?.offsetTop || 0) +\r\n      (popoverTrigger?.offsetHeight || 0) +\r\n      CONTENT_OFFSET,\r\n    [trigger]\r\n  )\r\n\r\n  return (\r\n    <CartPopoverRenderer open={open}>\r\n      {({\r\n        loading,\r\n        items,\r\n        unavailableItems,\r\n        priceChangeItems,\r\n        totalPrice,\r\n        feeOnTop,\r\n        usdPrice,\r\n        hasEnoughCurrency,\r\n        balance,\r\n        currency,\r\n        cartCurrencyConverted,\r\n        transaction,\r\n        blockExplorerBaseUrl,\r\n        cartChain,\r\n        remove,\r\n        clear,\r\n        checkout,\r\n      }) => {\r\n        useEffect(() => {\r\n          if (transaction?.status === CheckoutStatus.Complete) {\r\n            setDisplayPendingTransaction(false)\r\n            setPurchaseComplete(true)\r\n          }\r\n        }, [transaction?.status])\r\n\r\n        const unavailableItemsSubject =\r\n          unavailableItems.length > 1 ? 'items' : 'item'\r\n        const priceChangeItemsSubject =\r\n          priceChangeItems.length > 1 ? 'items prices' : 'item price'\r\n        const isCartEmpty = items.length === 0\r\n        const hasValidItems = items.length > unavailableItems.length\r\n\r\n        return (\r\n          <Popover.Root modal={true} open={open} onOpenChange={setOpen}>\r\n            <Popover.Trigger asChild ref={setPopoverTrigger}>\r\n              {trigger}\r\n            </Popover.Trigger>\r\n            <Popover.Content\r\n              side={side}\r\n              sideOffset={CONTENT_OFFSET}\r\n              css={{\r\n                display: 'flex',\r\n                flexDirection: 'column',\r\n                zIndex: 1001,\r\n                transformOrigin:\r\n                  'var(--radix-popover-content-transform-origin)',\r\n                animation: `${open ? scaleUp : scaleDown} 0.2s ease-in-out`,\r\n                overflowY: 'auto',\r\n                borderRadius: '$borderRadius',\r\n                $$shadowColor: '$colors$gray7',\r\n                boxShadow: 'box-shadow: 0px 2px 16px $$shadowColor',\r\n                border: '1px solid $borderColor',\r\n                p: 24,\r\n                minHeight: 500,\r\n                width: 395,\r\n                maxHeight: `calc(100vh - ${\r\n                  triggerBottom || 0\r\n                }px - (25px * 2) - 10px)`,\r\n                backgroundColor: '$contentBackground',\r\n                boxSizing: 'border-box',\r\n                '@media(max-width: 520px)': {\r\n                  height: `calc(100vh - ${triggerBottom || 0}px - (25px * 2))`,\r\n                  width: '100vw',\r\n                  minHeight: '100%',\r\n                },\r\n              }}\r\n            >\r\n              {loading && (\r\n                <Loader\r\n                  css={{\r\n                    backgroundColor: '$contentBackground',\r\n                    position: 'absolute',\r\n                    inset: 0,\r\n                    opacity: 0.6,\r\n                    zIndex: 10000,\r\n                  }}\r\n                />\r\n              )}\r\n              <Flex align=\"center\" css={{ mb: '$4' }}>\r\n                <Text style=\"h6\">Cart</Text>\r\n                {!isCartEmpty && (\r\n                  <Flex\r\n                    align=\"center\"\r\n                    justify=\"center\"\r\n                    css={{\r\n                      background: '$accentSolid',\r\n                      height: 20,\r\n                      width: 20,\r\n                      borderRadius: '99999px',\r\n                      ml: '$2',\r\n                    }}\r\n                  >\r\n                    <Text style=\"subtitle3\" color=\"button\">\r\n                      {items.length}\r\n                    </Text>\r\n                  </Flex>\r\n                )}\r\n                {!isCartEmpty && (\r\n                  <Text\r\n                    style=\"subtitle3\"\r\n                    css={{\r\n                      color: '$accentSolid',\r\n                      cursor: 'pointer',\r\n                      ml: 24,\r\n                      '&:hover': { color: '$accentSolidHover' },\r\n                    }}\r\n                    onClick={clear}\r\n                  >\r\n                    Clear All\r\n                  </Text>\r\n                )}\r\n                <Button\r\n                  size=\"none\"\r\n                  color=\"ghost\"\r\n                  css={{ color: '$neutralSolid', ml: 'auto' }}\r\n                  onClick={() => {\r\n                    setOpen(false)\r\n                  }}\r\n                >\r\n                  <FontAwesomeIcon icon={faClose} width=\"16\" height=\"16\" />\r\n                </Button>\r\n              </Flex>\r\n              {cartCurrencyConverted && (\r\n                <CartToast\r\n                  kind=\"warning\"\r\n                  message={`Mixed currency items are only available to be checked out with ${currency?.symbol}`}\r\n                />\r\n              )}\r\n              <Flex align=\"center\" css={{ mb: '$4' }}>\r\n                <ChainIcon\r\n                  chainId={cartChain?.id}\r\n                  height={12}\r\n                  css={{ mr: 5, alignItems: 'center', width: '12px' }}\r\n                />\r\n                <Text style=\"body3\" color=\"subtle\">\r\n                  {cartChain?.name}\r\n                </Text>\r\n              </Flex>\r\n              {unavailableItems.length > 0 && (\r\n                <CartToast\r\n                  kind=\"error\"\r\n                  message={`${unavailableItems.length} ${unavailableItemsSubject} no longer available`}\r\n                  link={\r\n                    <Text\r\n                      color=\"accent\"\r\n                      style=\"subtitle3\"\r\n                      css={{ ml: 'auto', mt: 3, cursor: 'pointer' }}\r\n                      onClick={(e) => {\r\n                        e.preventDefault()\r\n                        remove(\r\n                          unavailableItems.map(\r\n                            (item) => `${item.collection.id}:${item.token.id}`\r\n                          )\r\n                        )\r\n                      }}\r\n                    >\r\n                      Remove {unavailableItemsSubject}\r\n                    </Text>\r\n                  }\r\n                />\r\n              )}\r\n              {priceChangeItems.length > 0 && (\r\n                <CartToast\r\n                  kind=\"warning\"\r\n                  message={`${priceChangeItems.length} ${priceChangeItemsSubject} updated`}\r\n                />\r\n              )}\r\n              {transaction?.error && (\r\n                <CartToast\r\n                  kind=\"error\"\r\n                  message={\r\n                    transaction.errorType ===\r\n                    CheckoutTransactionError.UserDenied\r\n                      ? 'User denied transaction signature.'\r\n                      : transaction.error.message\r\n                  }\r\n                />\r\n              )}\r\n              {purchaseComplete\r\n                ? transaction?.txHashes?.map((hash) => {\r\n                    const truncatedTxHash = truncateAddress(hash.txHash)\r\n                    const blockExplorerBaseUrl = getChainBlockExplorerUrl(\r\n                      hash.chainId\r\n                    )\r\n                    return (\r\n                      <CartToast\r\n                        message={`Transaction Complete`}\r\n                        link={\r\n                          <Anchor\r\n                            href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                            target=\"_blank\"\r\n                            css={{ ml: 'auto', fontSize: 12, mt: 2 }}\r\n                            weight=\"medium\"\r\n                            color=\"primary\"\r\n                          >\r\n                            View transaction: {truncatedTxHash}\r\n                          </Anchor>\r\n                        }\r\n                      />\r\n                    )\r\n                  })\r\n                : null}\r\n              {!isCartEmpty && (\r\n                <Flex\r\n                  direction=\"column\"\r\n                  css={{ gap: '$4', mb: '$4', overflowY: 'auto', mx: -24 }}\r\n                >\r\n                  {items.map((item) => (\r\n                    <CartItem\r\n                      key={`${item.collection.id}:${item.token.id}`}\r\n                      item={item}\r\n                      usdConversion={usdPrice}\r\n                      tokenUrl={tokenUrl}\r\n                    />\r\n                  ))}\r\n                </Flex>\r\n              )}\r\n              {isCartEmpty &&\r\n                !(\r\n                  displayPendingTransaction &&\r\n                  transaction?.status === CheckoutStatus.Finalizing\r\n                ) && (\r\n                  <Flex\r\n                    direction=\"column\"\r\n                    align=\"center\"\r\n                    justify=\"center\"\r\n                    css={{ color: '$neutralBorderHover', flex: 1, gap: '$5' }}\r\n                  >\r\n                    <FontAwesomeIcon\r\n                      icon={faShoppingCart}\r\n                      width=\"30\"\r\n                      height=\"30\"\r\n                      style={{ height: 30 }}\r\n                    />\r\n                    <Text style=\"body2\" color=\"subtle\">\r\n                      No items in your cart\r\n                    </Text>\r\n                  </Flex>\r\n                )}\r\n              <Flex direction=\"column\" css={{ mt: 'auto', pb: 10 }}>\r\n                {!isCartEmpty && feeOnTop ? (\r\n                  <Flex css={{ mb: '$4' }}>\r\n                    <Text style=\"subtitle3\">Referrer Fee</Text>\r\n                    <Flex\r\n                      direction=\"column\"\r\n                      justify=\"center\"\r\n                      css={{ ml: 'auto', gap: '$1', '> div': { ml: 'auto' } }}\r\n                    >\r\n                      <FormatCryptoCurrency\r\n                        textStyle=\"subtitle3\"\r\n                        amount={feeOnTop}\r\n                        address={currency?.contract}\r\n                        decimals={currency?.decimals}\r\n                        symbol={currency?.symbol}\r\n                        logoWidth={12}\r\n                        chainId={cartChain?.id}\r\n                      />\r\n                      {usdPrice && (\r\n                        <FormatCurrency\r\n                          amount={usdPrice * feeOnTop}\r\n                          style=\"subtitle3\"\r\n                          color=\"subtle\"\r\n                          css={{ textAlign: 'end' }}\r\n                        />\r\n                      )}\r\n                    </Flex>\r\n                  </Flex>\r\n                ) : null}\r\n                {!isCartEmpty && (\r\n                  <Flex css={{ mb: 28 }}>\r\n                    <Text style=\"h6\">Total</Text>\r\n                    <Flex\r\n                      direction=\"column\"\r\n                      justify=\"center\"\r\n                      css={{ ml: 'auto', gap: '$1', '> div': { ml: 'auto' } }}\r\n                    >\r\n                      {providerOptionsContext.preferDisplayFiatTotal &&\r\n                      usdPrice ? (\r\n                        <>\r\n                          <FormatCurrency\r\n                            amount={usdPrice * totalPrice}\r\n                            style=\"h6\"\r\n                            color=\"base\"\r\n                            css={{ textAlign: 'end' }}\r\n                          />\r\n                          <FormatCryptoCurrency\r\n                            textStyle=\"subtitle3\"\r\n                            textColor=\"subtle\"\r\n                            amount={totalPrice}\r\n                            address={currency?.contract}\r\n                            decimals={currency?.decimals}\r\n                            symbol={currency?.symbol}\r\n                            logoWidth={12}\r\n                            chainId={cartChain?.id}\r\n                          />\r\n                        </>\r\n                      ) : (\r\n                        <>\r\n                          <FormatCryptoCurrency\r\n                            textStyle=\"h6\"\r\n                            amount={totalPrice}\r\n                            address={currency?.contract}\r\n                            decimals={currency?.decimals}\r\n                            symbol={currency?.symbol}\r\n                            logoWidth={18}\r\n                            chainId={cartChain?.id}\r\n                          />\r\n                          {usdPrice && (\r\n                            <FormatCurrency\r\n                              amount={usdPrice * totalPrice}\r\n                              style=\"subtitle3\"\r\n                              color=\"subtle\"\r\n                              css={{ textAlign: 'end' }}\r\n                            />\r\n                          )}\r\n                        </>\r\n                      )}\r\n                    </Flex>\r\n                  </Flex>\r\n                )}\r\n                <CartCheckoutModal\r\n                  open={\r\n                    (transaction?.status == CheckoutStatus.Approving ||\r\n                      transaction?.status == CheckoutStatus.Finalizing ||\r\n                      transaction?.status == CheckoutStatus.Complete) &&\r\n                    !transaction?.error\r\n                  }\r\n                  items={items}\r\n                  currency={currency}\r\n                  totalPrice={totalPrice}\r\n                  usdPrice={usdPrice || 0}\r\n                  transaction={transaction}\r\n                  cartChain={cartChain}\r\n                  blockExplorerBaseUrl={blockExplorerBaseUrl}\r\n                  setCartPopoverOpen={setOpen}\r\n                />\r\n\r\n                {!hasEnoughCurrency && isConnected && (\r\n                  <Flex\r\n                    align=\"center\"\r\n                    justify=\"center\"\r\n                    css={{ mb: '$2', gap: '$2' }}\r\n                  >\r\n                    <Text style=\"body3\" color=\"error\">\r\n                      Insufficient balance\r\n                    </Text>\r\n                    <FormatCryptoCurrency\r\n                      textStyle=\"body3\"\r\n                      chainId={cartChain?.id}\r\n                      amount={balance}\r\n                      address={currency?.contract}\r\n                      decimals={currency?.decimals}\r\n                      symbol={currency?.symbol}\r\n                      logoWidth={10}\r\n                    />\r\n                  </Flex>\r\n                )}\r\n                {isCartEmpty && !displayPendingTransaction && (\r\n                  <Button disabled={true}>Select Items to Buy</Button>\r\n                )}\r\n                {!isCartEmpty &&\r\n                  hasValidItems &&\r\n                  (transaction?.status === CheckoutStatus.Idle ||\r\n                    !displayPendingTransaction) && (\r\n                    <Button\r\n                      disabled={!hasEnoughCurrency && isConnected}\r\n                      onClick={async () => {\r\n                        if (!isConnected) {\r\n                          onConnectWallet?.()\r\n                        } else {\r\n                          checkout()\r\n                            .then(() => {\r\n                              setDisplayPendingTransaction(true)\r\n                            })\r\n                            .catch((e) => {\r\n                              console.error(e)\r\n                              setDisplayPendingTransaction(false)\r\n                            })\r\n                        }\r\n                      }}\r\n                    >\r\n                      {hasEnoughCurrency || !isConnected\r\n                        ? 'Purchase'\r\n                        : 'Add Funds to Purchase'}\r\n                    </Button>\r\n                  )}\r\n                {!isCartEmpty && !hasValidItems && (\r\n                  <Button\r\n                    color=\"secondary\"\r\n                    onClick={() => {\r\n                      clear()\r\n                    }}\r\n                  >\r\n                    <FontAwesomeIcon icon={faRefresh} width=\"16\" height=\"16\" />\r\n                    Refresh Cart\r\n                  </Button>\r\n                )}\r\n\r\n                {!providerOptionsContext.disablePoweredByReservoir && (\r\n                  <Flex\r\n                    align=\"center\"\r\n                    css={{\r\n                      mx: 'auto',\r\n                      alignItems: 'center',\r\n                      justifyContent: 'center',\r\n                      mt: 26,\r\n                      gap: '$1',\r\n                      visibility: '$poweredByReservoirVisibility',\r\n                    }}\r\n                  >\r\n                    <Box css={{ color: '$neutralBorderHover' }}>\r\n                      <FontAwesomeIcon icon={faLock} width={9} height={10} />\r\n                    </Box>\r\n                    <Text\r\n                      style=\"tiny\"\r\n                      color=\"subtle\"\r\n                      css={{\r\n                        display: 'inline-flex',\r\n                        alignItems: 'center',\r\n                        gap: 4,\r\n                        lineHeight: '14px',\r\n                        fontWeight: 400,\r\n                        color: '$neutralText',\r\n                      }}\r\n                    >\r\n                      Powered by{' '}\r\n                      <Anchor\r\n                        href=\"https://reservoir.tools/\"\r\n                        target=\"_blank\"\r\n                        weight=\"heavy\"\r\n                        color=\"gray\"\r\n                        css={{\r\n                          height: 12,\r\n                          fontSize: 12,\r\n                          '&:hover': {\r\n                            color: '$neutralSolid',\r\n                            fill: '$neutralSolid',\r\n                          },\r\n                        }}\r\n                      >\r\n                        <Logo />\r\n                      </Anchor>\r\n                    </Text>\r\n                  </Flex>\r\n                )}\r\n              </Flex>\r\n            </Popover.Content>\r\n            {open && (\r\n              <Box\r\n                css={{\r\n                  backgroundColor: '$overlayBackground',\r\n                  position: 'fixed',\r\n                  inset: 0,\r\n                  zIndex: 1000,\r\n                }}\r\n              ></Box>\r\n            )}\r\n          </Popover.Root>\r\n        )\r\n      }}\r\n    </CartPopoverRenderer>\r\n  )\r\n}\r\n\r\nCartPopover.Custom = CartPopoverRenderer\r\n\r\nexport default CartPopover\r\n","import React, { FC, useContext } from 'react'\r\nimport { useCart, useReservoirClient } from '../../hooks'\r\nimport {\r\n  Button,\r\n  Flex,\r\n  FormatCryptoCurrency,\r\n  FormatCurrency,\r\n  Text,\r\n} from '../../primitives'\r\nimport { styled } from '../../../stitches.config'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport {faArrowDown, faArrowUp, faClose} from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport { Cart } from '../../context/CartProvider'\r\nimport { formatNumber } from '../../lib/numbers'\r\nimport QuantitySelector from '../../modal/QuantitySelector'\r\nimport * as allChains from 'viem/chains'\r\nimport { Chain } from 'viem'\r\nimport { customChains } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { ProviderOptionsContext } from '../../ReservoirKitProvider'\r\n\r\ntype Props = {\r\n  item: Cart['items'][0]\r\n  usdConversion: number | null\r\n  tokenUrl?: string\r\n}\r\n\r\nconst CartItemImage = styled('img', {\r\n  width: 56,\r\n  height: 56,\r\n  borderRadius: 4,\r\n  objectFit: 'cover',\r\n})\r\n\r\nconst CloseButton = styled(Button, {\r\n  position: 'absolute',\r\n  width: 24,\r\n  height: 24,\r\n  top: -8,\r\n  right: -8,\r\n  flexShrink: 0,\r\n  defaultVariants: {\r\n    size: 'none',\r\n    corners: 'circle',\r\n  },\r\n})\r\n\r\nconst CartItem: FC<Props> = ({ item, usdConversion, tokenUrl }) => {\r\n  const providerOptionsContext = useContext(ProviderOptionsContext)\r\n  const { token, collection, order } = item\r\n  const contract = collection.id.split(':')[0]\r\n  const client = useReservoirClient()\r\n  const {\r\n    remove,\r\n    data: cartCurrency,\r\n    setQuantity,\r\n  } = useCart((cart) => cart.currency)\r\n  const { data: cartChain } = useCart((cart) => cart.chain)\r\n\r\n  const currencyConverted =\r\n    item.price && item.price?.currency?.contract !== cartCurrency?.contract\r\n  let price = currencyConverted\r\n    ? item.price?.amount?.native\r\n    : item.price?.amount?.decimal\r\n  let previousPrice =\r\n    item.previousPrice?.currency?.contract !== cartCurrency?.contract\r\n      ? item.previousPrice?.amount?.native\r\n      : item.previousPrice?.amount?.decimal\r\n  let priceDiff = 0\r\n  let priceIncrease = false\r\n  let priceDecrease = false\r\n  if (price !== undefined && previousPrice !== undefined) {\r\n    priceDiff = Math.abs(((price - previousPrice) / price) * 100)\r\n    priceIncrease = price > previousPrice\r\n    priceDecrease = price < previousPrice\r\n  }\r\n  let usdPrice = (usdConversion || 0) * (price || 0)\r\n  const reservoirChain = client?.chains.find(\r\n    (chain) => cartChain?.id === chain.id\r\n  )\r\n\r\n  if (price && order?.quantity) {\r\n    price = price * order.quantity\r\n    usdPrice = usdPrice * order.quantity\r\n  }\r\n\r\n  return (\r\n    <Flex\r\n      direction=\"column\"\r\n      css={{\r\n        transition: 'background-color 0.25s ease-in-out',\r\n        '&:hover': {\r\n          backgroundColor: '$neutralBgHover',\r\n        },\r\n      }}\r\n    >\r\n      <Flex\r\n        onClick={() => {\r\n          let chain: Chain | undefined = Object.values(allChains).find(\r\n            (chain) => cartChain?.id === chain.id\r\n          )\r\n\r\n          if (!chain) {\r\n            chain =\r\n              Object.values(customChains).find(\r\n                (chain) => chain.id === reservoirChain?.id\r\n              ) ?? allChains.mainnet\r\n          }\r\n\r\n          let url: string | undefined = tokenUrl\r\n          if (!url && cartChain) {\r\n            let tokenMetaKey: string | null = null\r\n            if (cartChain.id === allChains.mainnet.id) {\r\n              tokenMetaKey = 'reservoir:token-url-mainnet'\r\n            } else {\r\n              tokenMetaKey = `reservoir:token-url-${chain?.name.toLowerCase()}`\r\n            }\r\n            const tokenMetaTag = document.querySelector(\r\n              `meta[property='${tokenMetaKey}']`\r\n            )\r\n            if (tokenMetaTag) {\r\n              url = tokenMetaTag.getAttribute('content') || undefined\r\n            }\r\n          }\r\n          if (url) {\r\n            window.location.href = url\r\n              .replace('${contract}', contract)\r\n              .replace('${tokenId}', token.id)\r\n          }\r\n        }}\r\n        css={{\r\n          width: '100%',\r\n          px: 24,\r\n          py: 8,\r\n          cursor: 'pointer',\r\n        }}\r\n      >\r\n        <Flex css={{ position: 'relative', minWidth: 0, flexShrink: 0 }}>\r\n          <CartItemImage\r\n            src={`${reservoirChain?.baseApiUrl}/redirect/tokens/${contract}:${token.id}/image/v1?imageSize=small`}\r\n            css={!price ? { filter: 'grayscale(1)' } : {}}\r\n            onError={({ currentTarget }) => {\r\n              const collectionImage = `${reservoirChain?.baseApiUrl}/redirect/collections/${collection.id}/image/v1`\r\n              if (currentTarget.src != collectionImage) {\r\n                currentTarget.src = collectionImage\r\n              }\r\n            }}\r\n          />\r\n          <CloseButton\r\n            css={{\r\n              '&:hover': {\r\n                background: '$errorAccent',\r\n              },\r\n              background: !item.price ? '$errorAccent' : '$neutralSolid',\r\n            }}\r\n            onClick={(e) => {\r\n              e.stopPropagation()\r\n              e.preventDefault()\r\n              if (order?.id) {\r\n                remove([order?.id])\r\n              } else {\r\n                remove([`${collection.id}:${token.id}`])\r\n              }\r\n            }}\r\n          >\r\n            <FontAwesomeIcon icon={faClose} width=\"16\" height=\"16\" />\r\n          </CloseButton>\r\n        </Flex>\r\n        <Flex\r\n          direction=\"column\"\r\n          justify=\"center\"\r\n          css={{ gap: 2, ml: '$2', minWidth: 0 }}\r\n        >\r\n          <Flex align=\"center\" css={{ gap: '$1' }}>\r\n            <Text style=\"h6\" color={price ? undefined : 'subtle'} ellipsify>\r\n              {token.name ? token.name : `#${token.id}`}\r\n            </Text>\r\n          </Flex>\r\n          <Text style=\"body3\" color=\"subtle\" ellipsify>\r\n            {collection.name}\r\n          </Text>\r\n          {!price && !order?.id && (\r\n            <Text style=\"body3\" color=\"error\">\r\n              Item no longer available\r\n            </Text>\r\n          )}\r\n          {!price && order?.id && (\r\n            <Text style=\"body3\" color=\"error\">\r\n              Listing no longer available\r\n            </Text>\r\n          )}\r\n          {!priceIncrease && !priceDecrease && currencyConverted && (\r\n            <Flex\r\n              css={{ gap: '$1', color: '$accentSolidHover' }}\r\n              align=\"center\"\r\n            >\r\n              <Text style=\"body3\" color=\"accent\">\r\n                Currency converted\r\n              </Text>\r\n            </Flex>\r\n          )}\r\n          {priceIncrease && (\r\n            <Flex\r\n              css={{ gap: '$1', color: '$accentSolidHover' }}\r\n              align=\"center\"\r\n            >\r\n              <FontAwesomeIcon width=\"11\" icon={faArrowUp} />\r\n              <Text style=\"body2\" color=\"accent\">\r\n                Price has gone up {formatNumber(priceDiff)}%\r\n              </Text>\r\n            </Flex>\r\n          )}\r\n          {priceDecrease && (\r\n            <Flex\r\n              css={{ gap: '$1', color: '$accentSolidHover' }}\r\n              align=\"center\"\r\n            >\r\n              <FontAwesomeIcon width=\"11\" icon={faArrowDown} />\r\n              <Text style=\"body3\" color=\"accent\">\r\n                Price went down {formatNumber(priceDiff)}%\r\n              </Text>\r\n            </Flex>\r\n          )}\r\n        </Flex>\r\n        {price ? (\r\n          <Flex\r\n            direction=\"column\"\r\n            justify=\"center\"\r\n            css={{\r\n              ml: 'auto',\r\n              flexShrink: 0,\r\n              gap: '$1',\r\n              '> div': { ml: 'auto' },\r\n            }}\r\n          >\r\n            {providerOptionsContext.preferDisplayFiatTotal &&\r\n            usdPrice &&\r\n            usdPrice > 0 ? (\r\n              <>\r\n                <FormatCurrency\r\n                  amount={usdPrice}\r\n                  style=\"subtitle3\"\r\n                  color=\"base\"\r\n                  css={{ textAlign: 'end' }}\r\n                />\r\n                <FormatCryptoCurrency\r\n                  textStyle=\"tiny\"\r\n                  textColor=\"subtle\"\r\n                  amount={price}\r\n                  address={cartCurrency?.contract}\r\n                  decimals={cartCurrency?.decimals}\r\n                  symbol={cartCurrency?.symbol}\r\n                  logoWidth={10}\r\n                  chainId={cartChain?.id}\r\n                />\r\n              </>\r\n            ) : (\r\n              <>\r\n                <FormatCryptoCurrency\r\n                  textStyle=\"subtitle3\"\r\n                  amount={price}\r\n                  address={cartCurrency?.contract}\r\n                  decimals={cartCurrency?.decimals}\r\n                  symbol={cartCurrency?.symbol}\r\n                  logoWidth={12}\r\n                  chainId={cartChain?.id}\r\n                />\r\n                {usdPrice && usdPrice > 0 ? (\r\n                  <FormatCurrency\r\n                    amount={usdPrice}\r\n                    style=\"tiny\"\r\n                    color=\"subtle\"\r\n                    css={{ textAlign: 'end' }}\r\n                  />\r\n                ) : null}\r\n              </>\r\n            )}\r\n          </Flex>\r\n        ) : null}\r\n      </Flex>\r\n      {order && order?.quantityRemaining > 1 && price ? (\r\n        <Flex\r\n          justify=\"between\"\r\n          align=\"center\"\r\n          css={{ width: '100%', px: 24, pb: 8, gap: '$3' }}\r\n        >\r\n          <Flex\r\n            direction=\"column\"\r\n            align=\"start\"\r\n            css={{ gap: '$1', overflow: 'hidden', minWidth: 0 }}\r\n          >\r\n            <Text style=\"body3\">Quantity</Text>\r\n            <Text\r\n              style=\"body3\"\r\n              color=\"subtle\"\r\n              ellipsify\r\n              css={{ width: '100%' }}\r\n            >\r\n              {formatNumber(order.quantityRemaining)} items available\r\n            </Text>\r\n          </Flex>\r\n          <QuantitySelector\r\n            min={1}\r\n            max={order.quantityRemaining as number}\r\n            quantity={order.quantity}\r\n            setQuantity={(number) => setQuantity(order.id, number)}\r\n            css={{\r\n              border: '1px solid $neutralBorder',\r\n              background: 'none',\r\n            }}\r\n          />\r\n        </Flex>\r\n      ) : null}\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default CartItem\r\n","import React, { FC, ReactNode } from 'react'\r\nimport { Flex, Text } from '../../primitives'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport {\r\n  faCircleCheck,\r\n  faCircleInfo,\r\n  faTriangleExclamation,\r\n} from '@fortawesome/free-solid-svg-icons'\r\n\r\nexport type CartToastKind = 'success' | 'error' | 'warning'\r\n\r\ntype Props = {\r\n  kind?: CartToastKind\r\n  message: string\r\n  link?: ReactNode\r\n}\r\n\r\nconst CartToast: FC<Props> = ({ kind = 'success', message, link }) => {\r\n  return (\r\n    <Flex\r\n      css={{\r\n        width: '100%',\r\n        background: '$wellBackground',\r\n        p: '$2',\r\n        borderRadius: '$borderRadius',\r\n        mb: '$2',\r\n      }}\r\n    >\r\n      {kind === 'success' && (\r\n        <Text color=\"success\">\r\n          <FontAwesomeIcon icon={faCircleCheck} width=\"16\" height=\"16\" />\r\n        </Text>\r\n      )}\r\n      {kind === 'error' && (\r\n        <Text color=\"error\">\r\n          <FontAwesomeIcon\r\n            icon={faTriangleExclamation}\r\n            width=\"16\"\r\n            height=\"16\"\r\n          />\r\n        </Text>\r\n      )}\r\n      {kind === 'warning' && (\r\n        <Text color=\"error\">\r\n          <FontAwesomeIcon icon={faCircleInfo} width=\"16\" height=\"16\" />\r\n        </Text>\r\n      )}\r\n      <Text css={{ ml: '$1', mt: 3 }} style=\"body3\">\r\n        {message}\r\n      </Text>\r\n      {link}\r\n    </Flex>\r\n  )\r\n}\r\n\r\nexport default CartToast\r\n","import { useCoinConversion, useCart, useReservoirClient } from '../../hooks'\r\nimport React, { FC, ReactNode, useEffect, useMemo, useState } from 'react'\r\nimport { useAccount, useBalance, useChains, useReadContracts } from 'wagmi'\r\nimport { zeroAddress, parseUnits, erc20Abi, Address } from 'viem'\r\nimport { toFixed } from '../../lib/numbers'\r\nimport {\r\n  Cart,\r\n  CheckoutStatus,\r\n  CheckoutTransactionError,\r\n} from '../../context/CartProvider'\r\n\r\ntype ChildrenProps = {\r\n  loading: boolean\r\n  currency?: NonNullable<Cart['items'][0]['price']>['currency']\r\n  cartCurrencyConverted?: Boolean\r\n  totalPrice: number\r\n  feeOnTop?: number\r\n  usdPrice: number | null\r\n  balance?: bigint\r\n  hasEnoughCurrency: boolean\r\n  items: Cart['items']\r\n  unavailableItems: Cart['items']\r\n  priceChangeItems: Cart['items']\r\n  transaction?: Cart['transaction']\r\n  blockExplorerBaseUrl: string\r\n  cartChain: Cart['chain']\r\n  checkout: ReturnType<typeof useCart>['checkout']\r\n  clear: ReturnType<typeof useCart>['clear']\r\n  remove: ReturnType<typeof useCart>['remove']\r\n  add: ReturnType<typeof useCart>['add']\r\n  validate: ReturnType<typeof useCart>['validate']\r\n}\r\n\r\ntype Props = {\r\n  open: boolean\r\n  children: (props: ChildrenProps) => ReactNode\r\n}\r\n\r\nexport const CartPopoverRenderer: FC<Props> = ({ open, children }) => {\r\n  const client = useReservoirClient()\r\n  const [hasEnoughCurrency, setHasEnoughCurrency] = useState(true)\r\n  const { data, clear, clearTransaction, validate, remove, add, checkout } =\r\n    useCart((cart) => cart)\r\n  const {\r\n    isValidating,\r\n    totalPrice,\r\n    items,\r\n    currency,\r\n    transaction,\r\n    feeOnTop,\r\n    chain: cartChain,\r\n  } = data\r\n  const usdConversion = useCoinConversion(\r\n    open ? 'USD' : undefined,\r\n    currency?.symbol || currency?.name\r\n  )\r\n  const usdPrice = usdConversion.length > 0 ? usdConversion[0].price : null\r\n\r\n  const chains = useChains()\r\n  const chain = chains.find((chain) => chain.id === transaction?.chain.id)\r\n  const blockExplorerBaseUrl =\r\n    chain?.blockExplorers?.default?.url || 'https://etherscan.io'\r\n  const cartCurrencyConverted = items.some(\r\n    (item) =>\r\n      item.price && item.price?.currency?.contract !== currency?.contract\r\n  )\r\n\r\n  useEffect(() => {\r\n    if (open) {\r\n      validate()\r\n    } else if (\r\n      transaction?.status === CheckoutStatus.Complete ||\r\n      transaction?.error\r\n    ) {\r\n      clearTransaction()\r\n    }\r\n  }, [open])\r\n\r\n  const unavailableItems = useMemo(\r\n    () => items.filter((item) => !item.price),\r\n    [items]\r\n  )\r\n  const priceChangeItems = useMemo(\r\n    () =>\r\n      items.filter(\r\n        ({ previousPrice, price }) =>\r\n          previousPrice &&\r\n          price?.amount?.decimal !== undefined &&\r\n          previousPrice.amount?.decimal !== price?.amount?.decimal\r\n      ),\r\n    [items]\r\n  )\r\n  const { address } = useAccount()\r\n\r\n  const { data: balance } = useBalance({\r\n    chainId: cartChain?.id || client?.currentChain()?.id,\r\n    address: address,\r\n    query: {\r\n      enabled: currency?.contract === zeroAddress,\r\n    },\r\n  })\r\n\r\n  const { data: tokenBalance } = useReadContracts({\r\n    allowFailure: false,\r\n    contracts: [\r\n      {\r\n        address: currency?.contract as Address,\r\n        abi: erc20Abi,\r\n        functionName: 'balanceOf',\r\n        chainId: cartChain?.id || client?.currentChain()?.id,\r\n        args: [address as Address],\r\n      },\r\n    ],\r\n    query: {\r\n      enabled: address && currency?.contract !== zeroAddress,\r\n    },\r\n  })\r\n\r\n  useEffect(() => {\r\n    if (balance) {\r\n      const totalPriceTruncated = toFixed(totalPrice, currency?.decimals || 18)\r\n      if (!balance.value) {\r\n        setHasEnoughCurrency(false)\r\n      } else if (\r\n        balance.value <\r\n        parseUnits(`${totalPriceTruncated as number}`, currency?.decimals || 18)\r\n      ) {\r\n        setHasEnoughCurrency(false)\r\n      } else {\r\n        setHasEnoughCurrency(true)\r\n      }\r\n    }\r\n  }, [totalPrice, balance, currency])\r\n\r\n  useEffect(() => {\r\n    if (\r\n      hasEnoughCurrency &&\r\n      transaction?.errorType === CheckoutTransactionError.InsufficientBalance\r\n    ) {\r\n      setHasEnoughCurrency(false)\r\n    }\r\n  }, [transaction])\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        loading: isValidating,\r\n        items,\r\n        unavailableItems,\r\n        priceChangeItems,\r\n        currency,\r\n        cartCurrencyConverted,\r\n        totalPrice,\r\n        feeOnTop,\r\n        usdPrice,\r\n        hasEnoughCurrency,\r\n        balance: balance?.value ?? tokenBalance?.[0],\r\n        transaction,\r\n        blockExplorerBaseUrl,\r\n        cartChain,\r\n        checkout,\r\n        clear,\r\n        remove,\r\n        add,\r\n        validate,\r\n      })}\r\n    </>\r\n  )\r\n}\r\n\r\nexport default CartPopoverRenderer\r\n","import React, { ReactElement, useContext, useEffect, useState } from 'react'\r\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\r\nimport { AnimatePresence } from 'framer-motion'\r\nimport { AnimatedOverlay, StyledAnimatedContent } from '../../primitives/Dialog'\r\nimport { Anchor, Button, Flex, Text, Box, Loader } from '../../primitives'\r\nimport { styled } from '@stitches/react'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport faClose from '@fortawesome/free-solid-svg-icons/faClose'\r\nimport {\r\n  faCheckCircle,\r\n  faCircleExclamation,\r\n  faCube,\r\n  faLock,\r\n  faWallet,\r\n} from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport { ProviderOptionsContext } from '../../ReservoirKitProvider'\r\nimport { TokenCheckout } from '../../modal/TokenCheckout'\r\nimport { Cart, CheckoutStatus } from '../../context/CartProvider'\r\nimport SigninStep from '../../modal/SigninStep'\r\nimport { ApprovePurchasingCollapsible } from '../../modal/ApprovePurchasingCollapsible'\r\nimport { Execute } from '@sh-reservoir0x/reservoir-sdk'\r\nimport { Logo } from '../../modal/Modal'\r\nimport { truncateAddress } from '../../lib/truncate'\r\nimport getChainBlockExplorerUrl from '../../lib/getChainBlockExplorerUrl'\r\n\r\nconst Title = styled(DialogPrimitive.Title, {\r\n  margin: 0,\r\n})\r\n\r\nexport type Path = NonNullable<Execute['path']>[0]\r\n\r\ntype Props = {\r\n  items: Cart['items']\r\n  totalPrice: number\r\n  usdPrice: number\r\n  currency: NonNullable<Cart['items'][0]['price']>['currency']\r\n  cartChain: Cart['chain']\r\n  blockExplorerBaseUrl: string\r\n  transaction?: Cart['transaction']\r\n  open?: boolean\r\n  setCartPopoverOpen: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport function CartCheckoutModal({\r\n  items,\r\n  totalPrice,\r\n  usdPrice,\r\n  currency,\r\n  cartChain,\r\n  blockExplorerBaseUrl,\r\n  transaction,\r\n  open,\r\n  setCartPopoverOpen,\r\n}: Props): ReactElement | null {\r\n  const [dialogOpen, setDialogOpen] = useState(false)\r\n  const providerOptionsContext = useContext(ProviderOptionsContext)\r\n\r\n  const images = items.slice(0, 2).map((item) => {\r\n    const { token, collection } = item\r\n    const contract = collection.id.split(':')[0]\r\n\r\n    return `${cartChain?.baseApiUrl}/redirect/tokens/${contract}:${token.id}/image/v1?imageSize=small`\r\n  })\r\n\r\n  const totalSales =\r\n    transaction?.currentStep?.items?.reduce((total, item) => {\r\n      item.transfersData?.forEach((transferData) => {\r\n        total += Number(transferData.amount || 1)\r\n      })\r\n      return total\r\n    }, 0) || 0\r\n\r\n  const totalQuantity =\r\n    transaction?.items?.reduce((total, item) => {\r\n      total += item?.order?.quantity || 1\r\n      return total\r\n    }, 0) || 0\r\n\r\n  const failedSales = totalQuantity - totalSales\r\n  const successfulSales = totalQuantity - failedSales\r\n\r\n  const pathMap = transaction?.path\r\n    ? (transaction.path as Path[]).reduce(\r\n        (paths: Record<string, Path>, path: Path) => {\r\n          if (path.orderId) {\r\n            paths[path.orderId] = path\r\n          }\r\n\r\n          return paths\r\n        },\r\n        {} as Record<string, Path>\r\n      )\r\n    : {}\r\n\r\n  useEffect(() => {\r\n    if (open !== undefined && open !== dialogOpen) {\r\n      setDialogOpen(open)\r\n    }\r\n  }, [open])\r\n\r\n  return (\r\n    <DialogPrimitive.Root\r\n      onOpenChange={(open) => {\r\n        setDialogOpen(open)\r\n        if (!open) {\r\n          setCartPopoverOpen(false)\r\n        }\r\n      }}\r\n      open={dialogOpen}\r\n    >\r\n      <AnimatePresence>\r\n        {dialogOpen && (\r\n          <DialogPrimitive.DialogPortal forceMount>\r\n            <AnimatedOverlay style={{ zIndex: 1002 }} />\r\n            <StyledAnimatedContent\r\n              forceMount\r\n              css={{\r\n                zIndex: 1003,\r\n              }}\r\n            >\r\n              <Flex\r\n                css={{\r\n                  p: 16,\r\n                  backgroundColor: '$headerBackground',\r\n                  alignItems: 'center',\r\n                  justifyContent: 'space-between',\r\n                  borderTopRightRadius: '$borderRadius',\r\n                  borderTopLeftRadius: '$borderRadius',\r\n                }}\r\n              >\r\n                <Title css={{ alignItems: 'center', display: 'flex' }}>\r\n                  <Text style=\"h6\">Complete Checkout</Text>\r\n                </Title>\r\n                <DialogPrimitive.Close asChild>\r\n                  <Button\r\n                    color=\"ghost\"\r\n                    size=\"none\"\r\n                    css={{ color: '$neutralText' }}\r\n                  >\r\n                    <FontAwesomeIcon icon={faClose} width={16} height={16} />\r\n                  </Button>\r\n                </DialogPrimitive.Close>\r\n              </Flex>\r\n              <Box css={{ maxHeight: '85vh', overflowY: 'auto' }}>\r\n                {transaction?.status === CheckoutStatus.Approving && (\r\n                  <Flex direction=\"column\">\r\n                    <Box\r\n                      css={{\r\n                        p: '$4',\r\n                        borderBottom: '1px solid $neutralBorder',\r\n                      }}\r\n                    >\r\n                      <TokenCheckout\r\n                        itemCount={items.length}\r\n                        images={images}\r\n                        totalPrice={totalPrice}\r\n                        usdPrice={usdPrice}\r\n                        currency={currency}\r\n                        chain={cartChain}\r\n                      />\r\n                    </Box>\r\n                    <Flex\r\n                      direction=\"column\"\r\n                      css={{ p: '$4', overflowY: 'auto' }}\r\n                    >\r\n                      <Flex\r\n                        direction=\"column\"\r\n                        align=\"center\"\r\n                        justify=\"center\"\r\n                        css={{\r\n                          color: '$neutralBorderHover',\r\n                          flex: 1,\r\n                          gap: '$5',\r\n                        }}\r\n                      >\r\n                        {transaction?.currentStep == undefined ? (\r\n                          <Flex css={{ py: '$5' }}>\r\n                            <Loader />\r\n                          </Flex>\r\n                        ) : null}\r\n                        {transaction?.currentStep &&\r\n                        transaction?.currentStep?.id === 'auth' ? (\r\n                          <SigninStep css={{ mt: 48, mb: '$4', gap: 20 }} />\r\n                        ) : null}\r\n                        {transaction?.currentStep &&\r\n                        transaction?.currentStep?.id !== 'auth' ? (\r\n                          <>\r\n                            {transaction?.currentStep?.items &&\r\n                            transaction.currentStep?.items.length > 1 ? (\r\n                              <Flex\r\n                                direction=\"column\"\r\n                                css={{ gap: '$4', width: '100%' }}\r\n                              >\r\n                                <Text style=\"h6\" css={{ textAlign: 'center' }}>\r\n                                  Approve Purchases\r\n                                </Text>\r\n                                <Text style=\"subtitle3\" color=\"subtle\">\r\n                                  Due to limitations with Blur, the purchase of\r\n                                  these items needs to be split into{' '}\r\n                                  {transaction?.currentStep?.items.length}{' '}\r\n                                  separate transactions.\r\n                                </Text>\r\n                                {transaction.currentStep?.items.map((item) => (\r\n                                  <ApprovePurchasingCollapsible\r\n                                    item={item}\r\n                                    pathMap={pathMap}\r\n                                    usdPrice={usdPrice}\r\n                                    chain={cartChain}\r\n                                    open={true}\r\n                                  />\r\n                                ))}\r\n                              </Flex>\r\n                            ) : (\r\n                              <Flex\r\n                                direction=\"column\"\r\n                                align=\"center\"\r\n                                css={{ gap: '$4', py: '$4' }}\r\n                              >\r\n                                <Text style=\"h6\">\r\n                                  Confirm transaction in your wallet\r\n                                </Text>\r\n                                <Box css={{ color: '$neutralText' }}>\r\n                                  <FontAwesomeIcon\r\n                                    icon={faWallet}\r\n                                    style={{\r\n                                      width: '32px',\r\n                                      height: '32px',\r\n                                      margin: '12px 0px',\r\n                                    }}\r\n                                  />\r\n                                </Box>\r\n                              </Flex>\r\n                            )}\r\n                          </>\r\n                        ) : null}\r\n                      </Flex>\r\n                    </Flex>\r\n                    <Button disabled={true} css={{ m: '$4' }}>\r\n                      <Loader />\r\n                      Waiting for approval...\r\n                    </Button>\r\n                  </Flex>\r\n                )}\r\n                {transaction?.status === CheckoutStatus.Finalizing && (\r\n                  <Flex direction=\"column\">\r\n                    <Flex direction=\"column\" css={{ px: '$4', py: '$5' }}>\r\n                      <Flex\r\n                        direction=\"column\"\r\n                        align=\"center\"\r\n                        justify=\"center\"\r\n                        css={{\r\n                          gap: '$4',\r\n                        }}\r\n                      >\r\n                        <Text style=\"h6\">Finalizing on blockchain</Text>\r\n                        <Text\r\n                          style=\"subtitle3\"\r\n                          color=\"subtle\"\r\n                          css={{ textAlign: 'center' }}\r\n                        >\r\n                          You can close this modal while it finalizes on the\r\n                          blockchain. The transaction will continue in the\r\n                          background.\r\n                        </Text>\r\n\r\n                        <FontAwesomeIcon\r\n                          icon={faCube}\r\n                          style={{ height: 24, width: 24 }}\r\n                        />\r\n                        <Flex direction=\"column\" css={{ gap: '$2', mb: '$3' }}>\r\n                          {transaction?.currentStep?.items?.map(\r\n                            (item, itemIndex) => {\r\n                              if (\r\n                                Array.isArray(item?.txHashes) &&\r\n                                item?.txHashes.length > 0\r\n                              ) {\r\n                                return item.txHashes.map(\r\n                                  (hash, txHashIndex) => {\r\n                                    const truncatedTxHash = truncateAddress(\r\n                                      hash.txHash\r\n                                    )\r\n                                    const blockExplorerBaseUrl =\r\n                                      getChainBlockExplorerUrl(hash.chainId)\r\n                                    return (\r\n                                      <Anchor\r\n                                        key={`${itemIndex}-${txHashIndex}`}\r\n                                        href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                                        color=\"primary\"\r\n                                        weight=\"medium\"\r\n                                        target=\"_blank\"\r\n                                        css={{ fontSize: 12 }}\r\n                                      >\r\n                                        View transaction: {truncatedTxHash}\r\n                                      </Anchor>\r\n                                    )\r\n                                  }\r\n                                )\r\n                              } else {\r\n                                return null\r\n                              }\r\n                            }\r\n                          )}\r\n                        </Flex>\r\n                      </Flex>\r\n                    </Flex>\r\n                    <Button disabled={true} css={{ m: '$4' }}>\r\n                      <Loader />\r\n                      Waiting to be Validated...\r\n                    </Button>\r\n                  </Flex>\r\n                )}\r\n\r\n                {transaction?.status === CheckoutStatus.Complete && (\r\n                  <Flex\r\n                    direction=\"column\"\r\n                    align=\"center\"\r\n                    css={{ width: '100%', p: '$4' }}\r\n                  >\r\n                    <Flex\r\n                      direction=\"column\"\r\n                      align=\"center\"\r\n                      css={{ width: '100%', p: '$4' }}\r\n                    >\r\n                      <Flex\r\n                        direction=\"column\"\r\n                        align=\"center\"\r\n                        css={{ px: '$4', py: '$5', gap: 24 }}\r\n                      >\r\n                        <Box\r\n                          css={{\r\n                            color: failedSales\r\n                              ? '$errorAccent'\r\n                              : '$successAccent',\r\n                          }}\r\n                        >\r\n                          <FontAwesomeIcon\r\n                            icon={\r\n                              failedSales ? faCircleExclamation : faCheckCircle\r\n                            }\r\n                            fontSize={32}\r\n                          />\r\n                        </Box>\r\n                        <Text style=\"h5\" css={{ textAlign: 'center' }}>\r\n                          {failedSales\r\n                            ? `${successfulSales} ${\r\n                                successfulSales > 1 ? 'items' : 'item'\r\n                              } purchased, ${failedSales} ${\r\n                                failedSales > 1 ? 'items' : 'item'\r\n                              } failed`\r\n                            : 'Congrats! Purchase was successful.'}\r\n                        </Text>\r\n                        <Flex direction=\"column\" css={{ gap: '$2', mb: '$3' }}>\r\n                          {transaction?.currentStep?.items?.map(\r\n                            (item, itemIndex) => {\r\n                              if (\r\n                                Array.isArray(item?.txHashes) &&\r\n                                item?.txHashes.length > 0\r\n                              ) {\r\n                                return item.txHashes.map(\r\n                                  (hash, txHashIndex) => {\r\n                                    const truncatedTxHash = truncateAddress(\r\n                                      hash.txHash\r\n                                    )\r\n                                    const blockExplorerBaseUrl =\r\n                                      getChainBlockExplorerUrl(hash.chainId)\r\n                                    return (\r\n                                      <Anchor\r\n                                        key={`${itemIndex}-${txHashIndex}`}\r\n                                        href={`${blockExplorerBaseUrl}/tx/${hash.txHash}`}\r\n                                        color=\"primary\"\r\n                                        weight=\"medium\"\r\n                                        target=\"_blank\"\r\n                                        css={{ fontSize: 12 }}\r\n                                      >\r\n                                        View transaction: {truncatedTxHash}\r\n                                      </Anchor>\r\n                                    )\r\n                                  }\r\n                                )\r\n                              } else {\r\n                                return null\r\n                              }\r\n                            }\r\n                          )}\r\n                        </Flex>\r\n                      </Flex>\r\n                    </Flex>\r\n                    <Flex css={{ width: '100%', p: '$4' }}>\r\n                      <Button\r\n                        css={{ width: '100%' }}\r\n                        onClick={() => setDialogOpen(false)}\r\n                      >\r\n                        Close\r\n                      </Button>\r\n                    </Flex>\r\n                  </Flex>\r\n                )}\r\n              </Box>\r\n\r\n              {!providerOptionsContext.disablePoweredByReservoir && (\r\n                <Flex\r\n                  align=\"center\"\r\n                  css={{\r\n                    mx: 'auto',\r\n                    alignItems: 'center',\r\n                    justifyContent: 'center',\r\n                    pb: 12,\r\n                    gap: '$1',\r\n                    visibility: '$poweredByReservoirVisibility',\r\n                    borderBottomRightRadius: '$borderRadius',\r\n                    borderBottomLeftRadius: '$borderRadius',\r\n                  }}\r\n                >\r\n                  <Box css={{ color: '$neutralBorderHover' }}>\r\n                    <FontAwesomeIcon icon={faLock} width={9} height={10} />\r\n                  </Box>\r\n                  <Text\r\n                    style=\"tiny\"\r\n                    color=\"subtle\"\r\n                    css={{\r\n                      display: 'inline-flex',\r\n                      alignItems: 'center',\r\n                      gap: 4,\r\n                      lineHeight: '12px',\r\n                      fontWeight: 400,\r\n                      color: '$neutralText',\r\n                    }}\r\n                  >\r\n                    Powered by{' '}\r\n                    <Anchor\r\n                      href=\"https://reservoir.tools/\"\r\n                      target=\"_blank\"\r\n                      weight=\"heavy\"\r\n                      color=\"gray\"\r\n                      css={{\r\n                        height: 12,\r\n                        fontSize: 12,\r\n                        '&:hover': {\r\n                          color: '$neutralSolid',\r\n                          fill: '$neutralSolid',\r\n                        },\r\n                      }}\r\n                    >\r\n                      <Logo />\r\n                    </Anchor>\r\n                  </Text>\r\n                </Flex>\r\n              )}\r\n            </StyledAnimatedContent>\r\n          </DialogPrimitive.DialogPortal>\r\n        )}\r\n      </AnimatePresence>\r\n    </DialogPrimitive.Root>\r\n  )\r\n}\r\n","import CollectButtonRenderer, {\r\n  Collection,\r\n  MintStages,\r\n  Token,\r\n} from './CollectButtonRenderer'\r\nimport { Button, Loader } from '../../primitives'\r\nimport React, { ComponentPropsWithoutRef, ReactElement, useMemo } from 'react'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\nimport { SweepModal } from '../../modal/sweep/SweepModal'\r\nimport { CSS } from '@stitches/react'\r\nimport { MintModal } from '../../modal/mint/MintModal'\r\nimport FormatCrypto from '../../primitives/FormatCrypto'\r\n\r\ntype Props = {\r\n  contract?: string\r\n  collectionId?: string\r\n  token?: string\r\n  onConnectWallet: () => void\r\n  optionalMintModalProps?: Omit<\r\n    ComponentPropsWithoutRef<typeof MintModal>,\r\n    | 'trigger'\r\n    | 'chainId'\r\n    | 'contract'\r\n    | 'collectionId'\r\n    | 'token'\r\n    | 'onConnectWallet'\r\n  >\r\n  optionalSweepModalProps?: Omit<\r\n    ComponentPropsWithoutRef<typeof SweepModal>,\r\n    | 'trigger'\r\n    | 'chainId'\r\n    | 'contract'\r\n    | 'collectionId'\r\n    | 'token'\r\n    | 'onConnectWallet'\r\n  >\r\n  customTriggerRenderer?: (\r\n    loading: boolean,\r\n    publicMintData?: MintStages[0],\r\n    mintData?: MintStages,\r\n    collection?: Collection,\r\n    tokenData?: Token\r\n  ) => ReactElement\r\n  triggerCss?: CSS\r\n  swrOptions?: SWRInfiniteConfiguration\r\n  chainId?: number\r\n}\r\n\r\nexport function CollectButton({\r\n  token,\r\n  contract,\r\n  collectionId,\r\n  onConnectWallet,\r\n  optionalMintModalProps,\r\n  optionalSweepModalProps,\r\n  customTriggerRenderer,\r\n  triggerCss,\r\n  swrOptions,\r\n  chainId,\r\n}: Props): ReactElement {\r\n  return (\r\n    <CollectButtonRenderer\r\n      token={token}\r\n      contract={contract}\r\n      collectionId={collectionId}\r\n      swrOptions={swrOptions}\r\n      chainId={chainId}\r\n    >\r\n      {({ loading, tokenData, publicMintData, mintStages, collection }) => {\r\n        const mintPriceDecimal = publicMintData?.price?.amount?.decimal\r\n        const mintCurrency =\r\n          publicMintData?.price?.currency?.symbol?.toUpperCase()\r\n\r\n        const mintPrice =\r\n          typeof mintPriceDecimal === 'number' &&\r\n          mintPriceDecimal !== null &&\r\n          mintPriceDecimal !== undefined\r\n            ? mintPriceDecimal === 0\r\n              ? 'Free'\r\n              : `${mintPriceDecimal} ${mintCurrency}`\r\n            : undefined\r\n\r\n        const sweepPriceData = tokenData\r\n          ? tokenData?.market?.floorAsk?.price\r\n          : collection?.floorAsk?.price\r\n\r\n        const sweepSymbol = sweepPriceData?.currency?.symbol\r\n        const sweepPriceRaw = sweepPriceData?.amount?.raw\r\n\r\n        const trigger = useMemo(() => {\r\n          if (customTriggerRenderer) {\r\n            return customTriggerRenderer(\r\n              loading,\r\n              publicMintData,\r\n              mintStages,\r\n              collection,\r\n              tokenData\r\n            )\r\n          } else if (loading) {\r\n            return (\r\n              <Button css={{ ...triggerCss }}>\r\n                <Loader />\r\n              </Button>\r\n            )\r\n          } else if (publicMintData && mintPrice) {\r\n            return <Button css={{ ...triggerCss }}>Mint {mintPrice}</Button>\r\n          } else if (sweepPriceRaw) {\r\n            return (\r\n              <Button css={{ ...triggerCss }}>\r\n                Collect{' '}\r\n                <FormatCrypto\r\n                  amount={sweepPriceRaw}\r\n                  decimals={sweepPriceData?.currency?.decimals}\r\n                  maximumFractionDigits={4}\r\n                  textStyle=\"h6\"\r\n                  css={{ color: '$buttonTextColor' }}\r\n                />\r\n                {sweepSymbol}\r\n              </Button>\r\n            )\r\n          } else {\r\n            return null\r\n          }\r\n        }, [\r\n          customTriggerRenderer,\r\n          loading,\r\n          tokenData,\r\n          publicMintData,\r\n          mintStages,\r\n          collection,\r\n        ])\r\n\r\n        if (publicMintData && mintPrice) {\r\n          return (\r\n            <MintModal\r\n              trigger={trigger}\r\n              chainId={chainId}\r\n              collectionId={collectionId}\r\n              contract={contract}\r\n              token={token}\r\n              onConnectWallet={onConnectWallet}\r\n              {...optionalMintModalProps}\r\n            />\r\n          )\r\n        } else if (sweepPriceRaw) {\r\n          return (\r\n            <SweepModal\r\n              trigger={trigger}\r\n              chainId={chainId}\r\n              collectionId={collectionId}\r\n              contract={contract}\r\n              token={token}\r\n              onConnectWallet={onConnectWallet}\r\n              {...optionalSweepModalProps}\r\n            />\r\n          )\r\n        } else {\r\n          return trigger\r\n        }\r\n      }}\r\n    </CollectButtonRenderer>\r\n  )\r\n}\r\n\r\nCollectButton.Custom = CollectButtonRenderer\r\n","import { useCollections, useReservoirClient, useTokens } from '../../hooks'\r\nimport React, { ReactElement, ReactNode, useMemo } from 'react'\r\nimport { SWRInfiniteConfiguration } from 'swr/infinite'\r\n\r\ntype Props = {\r\n  contract?: string\r\n  collectionId?: string\r\n  token?: string\r\n  swrOptions?: SWRInfiniteConfiguration\r\n  chainId?: number\r\n  children: (props: ChildrenProps) => ReactNode\r\n}\r\n\r\nexport type Collection = ReturnType<typeof useCollections>['data']['0']\r\nexport type Token = ReturnType<typeof useTokens>['data']['0']\r\nexport type MintStages = NonNullable<NonNullable<Collection>['mintStages']>\r\n\r\ntype ChildrenProps = {\r\n  collection?: Collection\r\n  tokenData?: Token\r\n  mintStages?: MintStages\r\n  publicMintData?: MintStages['0']\r\n  loading: boolean\r\n}\r\n\r\nexport function CollectButtonRenderer({\r\n  token,\r\n  contract,\r\n  collectionId,\r\n  swrOptions,\r\n  chainId,\r\n  children,\r\n}: Props): ReactElement {\r\n  const client = useReservoirClient()\r\n  const currentChain = client?.currentChain()\r\n  const chain = chainId\r\n    ? client?.chains.find(({ id }) => id === chainId) || currentChain\r\n    : currentChain\r\n\r\n  const { data: tokens, isFetchingPage: isFetchingTokens } = useTokens(\r\n    token && !collectionId && !contract\r\n      ? {\r\n          tokens: [token],\r\n        }\r\n      : false,\r\n    undefined,\r\n    chain?.id\r\n  )\r\n  const _collectionId =\r\n    !collectionId && tokens && tokens[0]\r\n      ? tokens[0].token?.collection?.id\r\n      : collectionId\r\n  const collectionQuery: Parameters<typeof useCollections>[0] = useMemo(() => {\r\n    let query: Parameters<typeof useCollections>[0] = {\r\n      includeMintStages: true,\r\n    }\r\n    if (_collectionId) {\r\n      query.id = _collectionId\r\n    } else if (contract) {\r\n      query.contract = contract\r\n    } else {\r\n      query = false\r\n    }\r\n    return query\r\n  }, [_collectionId, contract])\r\n  const { data: collections, isFetchingPage: isFetchingCollections } =\r\n    useCollections(collectionQuery, swrOptions, chain?.id)\r\n\r\n  const tokenData = tokens && tokens[0] ? tokens[0] : undefined\r\n  const collection = collections && collections[0] ? collections[0] : undefined\r\n  const mintStages = collection?.mintStages\r\n  const publicMintData = collection?.mintStages?.find(\r\n    (stage) => stage.kind === 'public'\r\n  )\r\n\r\n  return (\r\n    <>\r\n      {children({\r\n        publicMintData,\r\n        mintStages,\r\n        collection,\r\n        tokenData,\r\n        loading:\r\n          ((contract !== undefined || collection !== undefined) &&\r\n            isFetchingCollections &&\r\n            !collection) ||\r\n          (token !== undefined && isFetchingTokens && !tokenData),\r\n      })}\r\n    </>\r\n  )\r\n}\r\n\r\nexport default CollectButtonRenderer\r\n"],"names":[],"version":3,"file":"index.mjs.map"}