@0xsequence/marketplace-sdk 0.5.2 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/builder-types-wOwfTJpd.d.ts +73 -0
  2. package/dist/{chunk-FCF57DZI.js → chunk-7FN62HOP.js} +5 -9
  3. package/dist/chunk-7FN62HOP.js.map +1 -0
  4. package/dist/{chunk-MSTTVFVQ.js → chunk-BVXIRVEC.js} +251 -241
  5. package/dist/chunk-BVXIRVEC.js.map +1 -0
  6. package/dist/{chunk-XP3WY5AX.js → chunk-BZD2LDJJ.js} +2 -2
  7. package/dist/{chunk-XP3WY5AX.js.map → chunk-BZD2LDJJ.js.map} +1 -1
  8. package/dist/chunk-DZKPDV63.js +27 -0
  9. package/dist/chunk-DZKPDV63.js.map +1 -0
  10. package/dist/{chunk-I37CRQ4S.js → chunk-H5YWG6WN.js} +128 -88
  11. package/dist/chunk-H5YWG6WN.js.map +1 -0
  12. package/dist/{chunk-ZUEQGPLO.js → chunk-J6F5QOW5.js} +2 -2
  13. package/dist/{chunk-ZUEQGPLO.js.map → chunk-J6F5QOW5.js.map} +1 -1
  14. package/dist/{chunk-LJAB3S6U.js → chunk-TFRAOS7F.js} +22 -13
  15. package/dist/chunk-TFRAOS7F.js.map +1 -0
  16. package/dist/{chunk-5NORRVPM.js → chunk-UZIAX32Y.js} +1 -1
  17. package/dist/{chunk-5NORRVPM.js.map → chunk-UZIAX32Y.js.map} +1 -1
  18. package/dist/{chunk-MKGSGTQC.js → chunk-Y7YTLAO2.js} +3 -3
  19. package/dist/{create-config-BXvwUh55.d.ts → create-config-Bltg8Enl.d.ts} +1 -1
  20. package/dist/index.css +1 -1
  21. package/dist/index.d.ts +3 -3
  22. package/dist/index.js +10 -6
  23. package/dist/react/_internal/index.d.ts +3 -3
  24. package/dist/react/_internal/index.js +6 -6
  25. package/dist/react/_internal/wagmi/index.d.ts +2 -3
  26. package/dist/react/_internal/wagmi/index.js +1 -1
  27. package/dist/react/hooks/index.d.ts +72 -20
  28. package/dist/react/hooks/index.js +5 -7
  29. package/dist/react/index.css +1 -1
  30. package/dist/react/index.css.map +1 -1
  31. package/dist/react/index.d.ts +4 -4
  32. package/dist/react/index.js +10 -12
  33. package/dist/react/ssr/index.d.ts +54 -41
  34. package/dist/react/ssr/index.js +5 -9
  35. package/dist/react/ssr/index.js.map +1 -1
  36. package/dist/react/ui/components/collectible-card/index.css +1 -1
  37. package/dist/react/ui/components/collectible-card/index.css.map +1 -1
  38. package/dist/react/ui/components/collectible-card/index.d.ts +2 -2
  39. package/dist/react/ui/components/collectible-card/index.js +8 -8
  40. package/dist/react/ui/index.css +1 -1
  41. package/dist/react/ui/index.css.map +1 -1
  42. package/dist/react/ui/index.d.ts +2 -2
  43. package/dist/react/ui/index.js +8 -8
  44. package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +2 -2
  45. package/dist/react/ui/modals/_internal/components/actionModal/index.js +6 -6
  46. package/dist/react/ui/styles/index.d.ts +1 -1
  47. package/dist/styles/index.css +1 -1
  48. package/dist/styles/index.css.map +1 -1
  49. package/dist/styles/index.d.ts +1 -1
  50. package/dist/styles/index.js +1 -1
  51. package/dist/types/index.d.ts +1 -3
  52. package/dist/types/index.js +9 -5
  53. package/dist/{types-Yto6KrTN.d.ts → types-BY3husBh.d.ts} +1 -1
  54. package/dist/utils/index.d.ts +2 -2
  55. package/dist/utils/index.js +4 -4
  56. package/package.json +11 -10
  57. package/src/react/_internal/api/__mocks__/indexer.msw.ts +197 -0
  58. package/src/react/_internal/api/__mocks__/marketplace.msw.ts +140 -1
  59. package/src/react/_internal/api/__mocks__/metadata.msw.ts +162 -0
  60. package/src/react/_internal/test/mocks/publicClient.ts +39 -0
  61. package/src/react/_internal/test/mocks/wagmi.ts +61 -0
  62. package/src/react/_internal/test/mocks/wallet.ts +61 -0
  63. package/src/react/_internal/test/setup.ts +28 -0
  64. package/src/react/_internal/test-utils.tsx +31 -2
  65. package/src/react/_internal/wagmi/__tests__/create-config.test.ts +53 -20
  66. package/src/react/_internal/wagmi/create-config.ts +3 -4
  67. package/src/react/_internal/wagmi/embedded.ts +1 -4
  68. package/src/react/_internal/wagmi/universal.ts +1 -4
  69. package/src/react/_internal/wallet/wallet.ts +1 -0
  70. package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +314 -0
  71. package/src/react/hooks/__tests__/useBalanceOfCollectible.test.tsx +148 -0
  72. package/src/react/hooks/__tests__/useCancelOrder.test.tsx +410 -0
  73. package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +269 -0
  74. package/src/react/hooks/__tests__/useCollectible.test.tsx +120 -0
  75. package/src/react/hooks/__tests__/useCollection.test.tsx +101 -0
  76. package/src/react/hooks/__tests__/useCollectionBalanceDetails.test.tsx +175 -0
  77. package/src/react/hooks/__tests__/useCollectionDetails.test.tsx +82 -0
  78. package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +133 -0
  79. package/src/react/hooks/__tests__/useCountListingsForCollectible.test.tsx +108 -0
  80. package/src/react/hooks/__tests__/useCountOfCollectables.test.tsx +129 -0
  81. package/src/react/hooks/__tests__/useCountOffersForCollectible.test.tsx +108 -0
  82. package/src/react/hooks/__tests__/useCurrencies.test.tsx +176 -0
  83. package/src/react/hooks/__tests__/useCurrency.test.tsx +153 -0
  84. package/src/react/hooks/__tests__/useCurrencyBalance.test.tsx +111 -0
  85. package/src/react/hooks/__tests__/useFilters.test.tsx +127 -0
  86. package/src/react/hooks/__tests__/useFloorOrder.test.tsx +101 -0
  87. package/src/react/hooks/__tests__/useGenerateBuyTransaction.test.tsx +173 -0
  88. package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +207 -0
  89. package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +207 -0
  90. package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +205 -0
  91. package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +181 -0
  92. package/src/react/hooks/__tests__/useHighestOffer.test.tsx +118 -0
  93. package/src/react/hooks/__tests__/useListBalances.test.tsx +136 -0
  94. package/src/react/hooks/__tests__/useListCollectibleActivities.test.tsx +200 -0
  95. package/src/react/hooks/__tests__/useListCollectibles.test.tsx +232 -0
  96. package/src/react/hooks/__tests__/useListCollectionActivities.test.tsx +235 -0
  97. package/src/react/hooks/__tests__/useListCollections.test.tsx +296 -0
  98. package/src/react/hooks/__tests__/useListListingsForCollectible.test.tsx +140 -0
  99. package/src/react/hooks/__tests__/useListOffersForCollectible.test.tsx +140 -0
  100. package/src/react/hooks/__tests__/useLowestListing.test.tsx +148 -0
  101. package/src/react/hooks/__tests__/useMarketplaceConfig.test.tsx +106 -0
  102. package/src/react/hooks/__tests__/useRoyaltyPercentage.test.tsx +129 -0
  103. package/src/react/hooks/index.ts +0 -1
  104. package/src/react/hooks/options/__mocks__/marketplaceConfig.msw.ts +66 -10
  105. package/src/react/hooks/options/__tests__/marketplaceConfigOptions.test.tsx +2 -11
  106. package/src/react/hooks/options/marketplaceConfigOptions.ts +8 -3
  107. package/src/react/hooks/useAutoSelectFeeOption.tsx +4 -3
  108. package/src/react/hooks/useCancelTransactionSteps.tsx +17 -9
  109. package/src/react/hooks/useCollectionDetailsPolling.tsx +1 -1
  110. package/src/react/hooks/useCurrencies.tsx +29 -28
  111. package/src/react/hooks/useFilters.tsx +69 -2
  112. package/src/react/hooks/useGenerateBuyTransaction.tsx +13 -5
  113. package/src/react/hooks/useListCollectibleActivities.tsx +1 -0
  114. package/src/react/hooks/useListCollectibles.tsx +1 -0
  115. package/src/react/hooks/useListCollectionActivities.tsx +1 -0
  116. package/src/react/hooks/useListCollections.tsx +2 -2
  117. package/src/react/ui/components/_internals/custom-select/__tests__/CustomSelect.test.tsx +6 -2
  118. package/src/react/ui/components/collectible-card/CollectibleCard.tsx +1 -1
  119. package/src/react/ui/components/collectible-card/Footer.tsx +9 -5
  120. package/src/react/ui/modals/BuyModal/Modal.tsx +9 -4
  121. package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx +0 -1
  122. package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +4 -2
  123. package/src/react/ui/modals/BuyModal/hooks/__tests__/useBuyCollectable.test.tsx +1 -24
  124. package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +152 -210
  125. package/src/react/ui/modals/BuyModal/hooks/__tests__/useFees.test.tsx +19 -49
  126. package/src/react/ui/modals/BuyModal/hooks/useFees.ts +6 -6
  127. package/src/react/ui/modals/BuyModal/modals/Modal1155.tsx +4 -2
  128. package/src/react/ui/modals/BuyModal/modals/__tests__/Modal1155.test.tsx +161 -52
  129. package/src/react/ui/modals/BuyModal/store.ts +7 -0
  130. package/src/react/ui/modals/CreateListingModal/Modal.tsx +1 -3
  131. package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +59 -227
  132. package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +2 -1
  133. package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +9 -5
  134. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +1 -8
  135. package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +41 -118
  136. package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +2 -1
  137. package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +9 -5
  138. package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +4 -3
  139. package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +33 -31
  140. package/src/react/ui/modals/SellModal/hooks/useSell.tsx +1 -0
  141. package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +9 -5
  142. package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +0 -1
  143. package/src/react/ui/modals/_internal/components/actionModal/ErrorModal.tsx +4 -2
  144. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +129 -57
  145. package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +1 -3
  146. package/src/react/ui/modals/_internal/components/priceInput/__tests__/index.test.tsx +1 -3
  147. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
  148. package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +8 -8
  149. package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +1 -0
  150. package/src/types/builder-types.ts +79 -0
  151. package/src/types/index.ts +1 -1
  152. package/src/utils/__tests__/get-public-rpc-client.test.ts +2 -0
  153. package/src/utils/getMarketplaceDetails.ts +2 -2
  154. package/tsconfig.tsbuildinfo +1 -1
  155. package/vitest.config.js +2 -1
  156. package/dist/chunk-FCF57DZI.js.map +0 -1
  157. package/dist/chunk-I37CRQ4S.js.map +0 -1
  158. package/dist/chunk-LJAB3S6U.js.map +0 -1
  159. package/dist/chunk-MSTTVFVQ.js.map +0 -1
  160. package/dist/chunk-RK6KYMZM.js +0 -18
  161. package/dist/chunk-RK6KYMZM.js.map +0 -1
  162. package/dist/marketplace-config-znEu4L0K.d.ts +0 -60
  163. package/src/react/hooks/useCurrencyOptions.tsx +0 -16
  164. package/src/types/marketplace-config.ts +0 -67
  165. /package/dist/{chunk-MKGSGTQC.js.map → chunk-Y7YTLAO2.js.map} +0 -0
@@ -138,7 +138,7 @@ function getMarketplaceDetails({
138
138
  originName,
139
139
  kind
140
140
  }) {
141
- if (kind == "sequence_marketplace_v1" /* sequence_marketplace_v1 */ || kind == "sequence_marketplace_v2" /* sequence_marketplace_v2 */) {
141
+ if (kind === "sequence_marketplace_v1" /* sequence_marketplace_v1 */ || kind === "sequence_marketplace_v2" /* sequence_marketplace_v2 */) {
142
142
  return MARKETPLACES.sequence;
143
143
  }
144
144
  let name = originName.toLowerCase();
@@ -171,4 +171,4 @@ export {
171
171
  calculatePriceDifferencePercentage,
172
172
  getMarketplaceDetails
173
173
  };
174
- //# sourceMappingURL=chunk-XP3WY5AX.js.map
174
+ //# sourceMappingURL=chunk-BZD2LDJJ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/address.ts","../src/utils/get-public-rpc-client.ts","../src/utils/network.ts","../src/utils/price.ts","../src/utils/getMarketplaceDetails.ts"],"sourcesContent":["export const truncateMiddle = (\n\taddress: string,\n\tminPrefix = 20,\n\tminSuffix = 3,\n): string => {\n\tif (minPrefix + minSuffix >= 40) {\n\t\treturn address;\n\t}\n\treturn `${address.substring(0, 2 + minPrefix)}…${address.substring(address.length - minSuffix)}`;\n};\n\nexport const truncateEnd = (text: string | undefined, truncateAt: number) => {\n\tif (!text) return '';\n\n\tlet finalText = text;\n\n\tif (text.length >= truncateAt) {\n\t\tfinalText = `${text.slice(0, truncateAt)}...`;\n\t}\n\n\treturn finalText;\n};\n\nexport const compareAddress = (a = '', b = '') => {\n\treturn a.toLowerCase() === b.toLowerCase();\n};\n","import { allNetworks, findNetworkConfig } from '@0xsequence/network';\nimport { http, type PublicClient, createPublicClient } from 'viem';\nimport type { ChainId } from '../react/_internal';\nimport { MissingConfigError } from './_internal/error/transaction';\n\nexport const getPublicRpcClient = (chainId: ChainId): PublicClient => {\n\tif (chainId === undefined) {\n\t\tthrow new MissingConfigError(\n\t\t\t`Network configuration for chainId: ${chainId}`,\n\t\t);\n\t}\n\n\tconst network = findNetworkConfig(allNetworks, chainId);\n\n\tif (!network) {\n\t\tthrow new MissingConfigError(\n\t\t\t`Network configuration for chainId: ${chainId}`,\n\t\t);\n\t}\n\n\treturn createPublicClient({\n\t\tchain: {\n\t\t\t...network,\n\t\t\tid: Number(chainId),\n\t\t\tname: network.name,\n\t\t\tnativeCurrency: { ...network.nativeToken },\n\t\t\trpcUrls: {\n\t\t\t\tdefault: {\n\t\t\t\t\thttp: [network.rpcUrl],\n\t\t\t\t},\n\t\t\t\tpublic: {\n\t\t\t\t\thttp: [network.rpcUrl],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tbatch: {\n\t\t\tmulticall: true,\n\t\t},\n\t\ttransport: http(),\n\t});\n};\n","import { networks, type ChainId as sequenceChainId } from '@0xsequence/network';\nimport type { ChainId } from '../react/_internal';\n\nexport const getPresentableChainName = (chainId: ChainId) => {\n\tconst id = Number(chainId) as sequenceChainId;\n\treturn networks[id]?.name;\n};\n","import { formatUnits } from 'viem';\n\ntype CalculatePriceDifferencePercentageArgs = {\n\tinputPriceRaw: bigint;\n\tbasePriceRaw: bigint;\n\tdecimals: number;\n};\n\nexport const calculatePriceDifferencePercentage = ({\n\tinputPriceRaw,\n\tbasePriceRaw,\n\tdecimals,\n}: CalculatePriceDifferencePercentageArgs) => {\n\tconst inputPrice = Number(formatUnits(inputPriceRaw, decimals));\n\tconst basePrice = Number(formatUnits(basePriceRaw, decimals));\n\tconst difference = inputPrice - basePrice;\n\tconst percentageDifference = (difference / basePrice) * 100;\n\n\treturn percentageDifference.toFixed(2);\n};\n","import { MarketplaceKind } from '../types';\nimport type { ComponentType } from 'react';\nimport type { Image } from '@0xsequence/design-system';\nimport {\n\tSequenceLogo,\n\tOpenSeaLogo,\n\tMagicEdenLogo,\n\tMintifyLogo,\n\tLooksRareLogo,\n\tX2y2Logo,\n\tBlurLogo,\n\tAlienSwapLogo,\n} from '../react/ui/components/marketplace-logos';\n\ninterface Marketplace {\n\tlogo: ComponentType<React.ComponentProps<typeof Image>>;\n\tdisplayName: string;\n}\n\nconst MARKETPLACES: Record<string, Marketplace> = {\n\tsequence: {\n\t\tlogo: SequenceLogo,\n\t\tdisplayName: 'Sequence',\n\t},\n\topensea: {\n\t\tlogo: OpenSeaLogo,\n\t\tdisplayName: 'OpenSea',\n\t},\n\tmagiceden: {\n\t\tlogo: MagicEdenLogo,\n\t\tdisplayName: 'Magic Eden',\n\t},\n\tmintify: {\n\t\tlogo: MintifyLogo,\n\t\tdisplayName: 'Mintify',\n\t},\n\tlooksrare: {\n\t\tlogo: LooksRareLogo,\n\t\tdisplayName: 'Looks Rare',\n\t},\n\tx2y2: {\n\t\tlogo: X2y2Logo,\n\t\tdisplayName: 'X2Y2',\n\t},\n\tblur: {\n\t\tlogo: BlurLogo,\n\t\tdisplayName: 'Blur',\n\t},\n\talienswap: {\n\t\tlogo: AlienSwapLogo,\n\t\tdisplayName: 'AlienSwap',\n\t},\n} as const;\n\nconst KIND_TO_MARKETPLACE: Partial<\n\tRecord<MarketplaceKind, keyof typeof MARKETPLACES>\n> = {\n\t[MarketplaceKind.sequence_marketplace_v1]: 'sequence',\n\t[MarketplaceKind.sequence_marketplace_v2]: 'sequence',\n\t[MarketplaceKind.opensea]: 'opensea',\n\t[MarketplaceKind.mintify]: 'mintify',\n\t[MarketplaceKind.looks_rare]: 'looksrare',\n\t[MarketplaceKind.x2y2]: 'x2y2',\n\t[MarketplaceKind.blur]: 'blur',\n};\n\ntype MarketplaceDetailsProp = {\n\toriginName: string;\n\tkind: MarketplaceKind;\n};\n\n// TODO: add suport for more marketplaces and improve detection of marketplace\nexport function getMarketplaceDetails({\n\toriginName,\n\tkind,\n}: MarketplaceDetailsProp) {\n\tif (\n\t\tkind == MarketplaceKind.sequence_marketplace_v1 ||\n\t\tkind == MarketplaceKind.sequence_marketplace_v2\n\t) {\n\t\treturn MARKETPLACES.sequence;\n\t}\n\n\tlet name = originName.toLowerCase();\n\n\ttry {\n\t\t//Check if the name can be parsed as a url\n\t\tnew URL(name);\n\t\t// if it can we are naively trying to extract the root domain\n\t\tname = getRootDomain(name) || name;\n\t} catch {}\n\n\tname = name.replace(/ /g, '');\n\n\tconst details = MARKETPLACES[name];\n\n\tif (details) {\n\t\treturn details;\n\t}\n\n\tif (KIND_TO_MARKETPLACE[kind]) {\n\t\treturn MARKETPLACES[KIND_TO_MARKETPLACE[kind]];\n\t}\n}\n\nfunction getRootDomain(url: string) {\n\tconst domain = url.replace(/^(https?:\\/\\/)?(www\\.)?/, '');\n\tconst parts = domain.split('.');\n\treturn parts[parts.length - 2] || parts[0];\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/utils/address.ts","../src/utils/get-public-rpc-client.ts","../src/utils/network.ts","../src/utils/price.ts","../src/utils/getMarketplaceDetails.ts"],"sourcesContent":["export const truncateMiddle = (\n\taddress: string,\n\tminPrefix = 20,\n\tminSuffix = 3,\n): string => {\n\tif (minPrefix + minSuffix >= 40) {\n\t\treturn address;\n\t}\n\treturn `${address.substring(0, 2 + minPrefix)}…${address.substring(address.length - minSuffix)}`;\n};\n\nexport const truncateEnd = (text: string | undefined, truncateAt: number) => {\n\tif (!text) return '';\n\n\tlet finalText = text;\n\n\tif (text.length >= truncateAt) {\n\t\tfinalText = `${text.slice(0, truncateAt)}...`;\n\t}\n\n\treturn finalText;\n};\n\nexport const compareAddress = (a = '', b = '') => {\n\treturn a.toLowerCase() === b.toLowerCase();\n};\n","import { allNetworks, findNetworkConfig } from '@0xsequence/network';\nimport { http, type PublicClient, createPublicClient } from 'viem';\nimport type { ChainId } from '../react/_internal';\nimport { MissingConfigError } from './_internal/error/transaction';\n\nexport const getPublicRpcClient = (chainId: ChainId): PublicClient => {\n\tif (chainId === undefined) {\n\t\tthrow new MissingConfigError(\n\t\t\t`Network configuration for chainId: ${chainId}`,\n\t\t);\n\t}\n\n\tconst network = findNetworkConfig(allNetworks, chainId);\n\n\tif (!network) {\n\t\tthrow new MissingConfigError(\n\t\t\t`Network configuration for chainId: ${chainId}`,\n\t\t);\n\t}\n\n\treturn createPublicClient({\n\t\tchain: {\n\t\t\t...network,\n\t\t\tid: Number(chainId),\n\t\t\tname: network.name,\n\t\t\tnativeCurrency: { ...network.nativeToken },\n\t\t\trpcUrls: {\n\t\t\t\tdefault: {\n\t\t\t\t\thttp: [network.rpcUrl],\n\t\t\t\t},\n\t\t\t\tpublic: {\n\t\t\t\t\thttp: [network.rpcUrl],\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tbatch: {\n\t\t\tmulticall: true,\n\t\t},\n\t\ttransport: http(),\n\t});\n};\n","import { networks, type ChainId as sequenceChainId } from '@0xsequence/network';\nimport type { ChainId } from '../react/_internal';\n\nexport const getPresentableChainName = (chainId: ChainId) => {\n\tconst id = Number(chainId) as sequenceChainId;\n\treturn networks[id]?.name;\n};\n","import { formatUnits } from 'viem';\n\ntype CalculatePriceDifferencePercentageArgs = {\n\tinputPriceRaw: bigint;\n\tbasePriceRaw: bigint;\n\tdecimals: number;\n};\n\nexport const calculatePriceDifferencePercentage = ({\n\tinputPriceRaw,\n\tbasePriceRaw,\n\tdecimals,\n}: CalculatePriceDifferencePercentageArgs) => {\n\tconst inputPrice = Number(formatUnits(inputPriceRaw, decimals));\n\tconst basePrice = Number(formatUnits(basePriceRaw, decimals));\n\tconst difference = inputPrice - basePrice;\n\tconst percentageDifference = (difference / basePrice) * 100;\n\n\treturn percentageDifference.toFixed(2);\n};\n","import { MarketplaceKind } from '../types';\nimport type { ComponentType } from 'react';\nimport type { Image } from '@0xsequence/design-system';\nimport {\n\tSequenceLogo,\n\tOpenSeaLogo,\n\tMagicEdenLogo,\n\tMintifyLogo,\n\tLooksRareLogo,\n\tX2y2Logo,\n\tBlurLogo,\n\tAlienSwapLogo,\n} from '../react/ui/components/marketplace-logos';\n\ninterface Marketplace {\n\tlogo: ComponentType<React.ComponentProps<typeof Image>>;\n\tdisplayName: string;\n}\n\nconst MARKETPLACES: Record<string, Marketplace> = {\n\tsequence: {\n\t\tlogo: SequenceLogo,\n\t\tdisplayName: 'Sequence',\n\t},\n\topensea: {\n\t\tlogo: OpenSeaLogo,\n\t\tdisplayName: 'OpenSea',\n\t},\n\tmagiceden: {\n\t\tlogo: MagicEdenLogo,\n\t\tdisplayName: 'Magic Eden',\n\t},\n\tmintify: {\n\t\tlogo: MintifyLogo,\n\t\tdisplayName: 'Mintify',\n\t},\n\tlooksrare: {\n\t\tlogo: LooksRareLogo,\n\t\tdisplayName: 'Looks Rare',\n\t},\n\tx2y2: {\n\t\tlogo: X2y2Logo,\n\t\tdisplayName: 'X2Y2',\n\t},\n\tblur: {\n\t\tlogo: BlurLogo,\n\t\tdisplayName: 'Blur',\n\t},\n\talienswap: {\n\t\tlogo: AlienSwapLogo,\n\t\tdisplayName: 'AlienSwap',\n\t},\n} as const;\n\nconst KIND_TO_MARKETPLACE: Partial<\n\tRecord<MarketplaceKind, keyof typeof MARKETPLACES>\n> = {\n\t[MarketplaceKind.sequence_marketplace_v1]: 'sequence',\n\t[MarketplaceKind.sequence_marketplace_v2]: 'sequence',\n\t[MarketplaceKind.opensea]: 'opensea',\n\t[MarketplaceKind.mintify]: 'mintify',\n\t[MarketplaceKind.looks_rare]: 'looksrare',\n\t[MarketplaceKind.x2y2]: 'x2y2',\n\t[MarketplaceKind.blur]: 'blur',\n};\n\ntype MarketplaceDetailsProp = {\n\toriginName: string;\n\tkind: MarketplaceKind;\n};\n\n// TODO: add suport for more marketplaces and improve detection of marketplace\nexport function getMarketplaceDetails({\n\toriginName,\n\tkind,\n}: MarketplaceDetailsProp) {\n\tif (\n\t\tkind === MarketplaceKind.sequence_marketplace_v1 ||\n\t\tkind === MarketplaceKind.sequence_marketplace_v2\n\t) {\n\t\treturn MARKETPLACES.sequence;\n\t}\n\n\tlet name = originName.toLowerCase();\n\n\ttry {\n\t\t//Check if the name can be parsed as a url\n\t\tnew URL(name);\n\t\t// if it can we are naively trying to extract the root domain\n\t\tname = getRootDomain(name) || name;\n\t} catch {}\n\n\tname = name.replace(/ /g, '');\n\n\tconst details = MARKETPLACES[name];\n\n\tif (details) {\n\t\treturn details;\n\t}\n\n\tif (KIND_TO_MARKETPLACE[kind]) {\n\t\treturn MARKETPLACES[KIND_TO_MARKETPLACE[kind]];\n\t}\n}\n\nfunction getRootDomain(url: string) {\n\tconst domain = url.replace(/^(https?:\\/\\/)?(www\\.)?/, '');\n\tconst parts = domain.split('.');\n\treturn parts[parts.length - 2] || parts[0];\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,27 @@
1
+ "use client"
2
+
3
+ // src/types/builder-types.ts
4
+ var MarketplaceWallet = /* @__PURE__ */ ((MarketplaceWallet2) => {
5
+ MarketplaceWallet2["UNIVERSAL"] = "UNIVERSAL";
6
+ MarketplaceWallet2["EMBEDDED"] = "EMBEDDED";
7
+ return MarketplaceWallet2;
8
+ })(MarketplaceWallet || {});
9
+ var FilterCondition = /* @__PURE__ */ ((FilterCondition2) => {
10
+ FilterCondition2["ENTIRE_KEY"] = "ENTIRE_KEY";
11
+ FilterCondition2["SPECIFIC_VALUE"] = "SPECIFIC_VALUE";
12
+ return FilterCondition2;
13
+ })(FilterCondition || {});
14
+ var MarketplaceType = /* @__PURE__ */ ((MarketplaceType2) => {
15
+ MarketplaceType2["AMM"] = "AMM";
16
+ MarketplaceType2["P2P"] = "P2P";
17
+ MarketplaceType2["SEQUENCE"] = "SEQUENCE";
18
+ MarketplaceType2["ORDERBOOK"] = "ORDERBOOK";
19
+ return MarketplaceType2;
20
+ })(MarketplaceType || {});
21
+
22
+ export {
23
+ MarketplaceWallet,
24
+ FilterCondition,
25
+ MarketplaceType
26
+ };
27
+ //# sourceMappingURL=chunk-DZKPDV63.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/builder-types.ts"],"sourcesContent":["import type { OrderbookKind } from '../react/_internal/api/marketplace.gen';\n\n// Manual copy of the types from builder\nexport enum MarketplaceWallet {\n\tUNIVERSAL = 'UNIVERSAL',\n\tEMBEDDED = 'EMBEDDED',\n}\n\nexport enum FilterCondition {\n\tENTIRE_KEY = 'ENTIRE_KEY',\n\tSPECIFIC_VALUE = 'SPECIFIC_VALUE',\n}\n\nexport enum MarketplaceType { // This is only used for marketplace v1\n\tAMM = 'AMM',\n\tP2P = 'P2P',\n\tSEQUENCE = 'SEQUENCE',\n\tORDERBOOK = 'ORDERBOOK',\n}\n\nexport interface MarketplaceWalletOptions {\n\twalletType: MarketplaceWallet;\n\toidcIssuers: { [key: string]: string };\n\tconnectors: Array<string>;\n\tincludeEIP6963Wallets: boolean;\n}\n\nexport interface MetadataFilterRule {\n\tkey: string;\n\tcondition: FilterCondition;\n\tvalue?: string;\n}\n\nexport interface CollectionFilterSettings {\n\tfilterOrder: Array<string>;\n\texclusions: Array<MetadataFilterRule>;\n}\n\nexport interface MarketplaceCollection {\n\tmarketplaceType: MarketplaceType;\n\tchainId: number;\n\taddress: string;\n\texchanges: Array<string>;\n\tbannerUrl: string;\n\tfeePercentage: number;\n\tcurrencyOptions: Array<string>;\n\tdestinationMarketplace: OrderbookKind;\n\tfilterSettings?: CollectionFilterSettings;\n}\n\nexport interface MarketplaceSocials {\n\ttwitter: string;\n\tdiscord: string;\n\twebsite: string;\n\ttiktok: string;\n\tinstagram: string;\n\tyoutube: string;\n}\n\nexport interface MarketplaceSettings {\n\tpublisherId: string;\n\ttitle: string;\n\tshortDescription: string;\n\tsocials: MarketplaceSocials;\n\tfaviconUrl: string;\n\tlandingBannerUrl: string;\n\tcollections: Array<MarketplaceCollection>;\n\twalletOptions: MarketplaceWalletOptions;\n\tlandingPageLayout: string;\n\tlogoUrl: string;\n\tbannerUrl: string;\n\tfontUrl?: string;\n\togImage?: string;\n}\n\nexport interface MarketplaceConfig extends MarketplaceSettings {\n\tcssString: string;\n\tmanifestUrl: string;\n}\n"],"mappings":";;;AAGO,IAAK,oBAAL,kBAAKA,uBAAL;AACN,EAAAA,mBAAA,eAAY;AACZ,EAAAA,mBAAA,cAAW;AAFA,SAAAA;AAAA,GAAA;AAKL,IAAK,kBAAL,kBAAKC,qBAAL;AACN,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,oBAAiB;AAFN,SAAAA;AAAA,GAAA;AAKL,IAAK,kBAAL,kBAAKC,qBAAL;AACN,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,cAAW;AACX,EAAAA,iBAAA,eAAY;AAJD,SAAAA;AAAA,GAAA;","names":["MarketplaceWallet","FilterCondition","MarketplaceType"]}
@@ -15,9 +15,10 @@ import {
15
15
  switchChainModalContent
16
16
  } from "./chunk-FI723DGL.js";
17
17
  import {
18
+ compareAddress,
18
19
  getPresentableChainName,
19
20
  getPublicRpcClient
20
- } from "./chunk-XP3WY5AX.js";
21
+ } from "./chunk-BZD2LDJJ.js";
21
22
  import {
22
23
  EIP2981_ABI
23
24
  } from "./chunk-3OHM45R3.js";
@@ -78,9 +79,9 @@ import {
78
79
 
79
80
  // src/react/hooks/useAutoSelectFeeOption.tsx
80
81
  import { zeroAddress } from "viem";
81
- import { useAccount } from "wagmi";
82
- import { useCallback } from "react";
83
82
  import { useChain } from "@0xsequence/kit";
83
+ import { useCallback } from "react";
84
+ import { useAccount } from "wagmi";
84
85
 
85
86
  // src/react/hooks/useCollectionBalanceDetails.tsx
86
87
  import { z } from "zod";
@@ -981,65 +982,18 @@ var useCollection = (args) => {
981
982
  };
982
983
 
983
984
  // src/react/hooks/useCurrencies.tsx
984
- import { queryOptions as queryOptions6, useQuery as useQuery6 } from "@tanstack/react-query";
985
+ import { queryOptions as queryOptions7, useQuery as useQuery7 } from "@tanstack/react-query";
985
986
  import { zeroAddress as zeroAddress2 } from "viem";
986
987
  import { z as z7 } from "zod";
987
- var ChainIdCoerce = ChainIdSchema.transform((val) => val.toString());
988
- var UseCurrenciesArgsSchema = z7.object({
989
- chainId: ChainIdCoerce,
990
- includeNativeCurrency: z7.boolean().optional().default(true),
991
- currencyOptions: z7.array(AddressSchema).optional(),
992
- query: QueryArgSchema
993
- });
994
- var fetchCurrencies = async (chainId, config) => {
995
- const parsedChainId = ChainIdCoerce.parse(chainId);
996
- const marketplaceClient = getMarketplaceClient(parsedChainId, config);
997
- return marketplaceClient.listCurrencies().then(
998
- (resp) => resp.currencies.map((currency) => ({
999
- ...currency,
1000
- // TODO: remove this, when we are sure of the schema
1001
- contractAddress: currency.contractAddress || zeroAddress2
1002
- }))
1003
- );
1004
- };
1005
- var selectCurrencies = (data, args) => {
1006
- const argsParsed = UseCurrenciesArgsSchema.parse(args);
1007
- let filteredData = data;
1008
- if (!argsParsed.includeNativeCurrency) {
1009
- filteredData = filteredData.filter((currency) => !currency.nativeCurrency);
1010
- }
1011
- if (argsParsed.currencyOptions) {
1012
- const lowerCaseCurrencyOptions = argsParsed.currencyOptions.map(
1013
- (option) => option.toLowerCase()
1014
- );
1015
- filteredData = filteredData.filter(
1016
- (currency) => lowerCaseCurrencyOptions.includes(currency.contractAddress.toLowerCase())
1017
- );
1018
- }
1019
- return filteredData;
1020
- };
1021
- var currenciesOptions = (args, config) => {
1022
- return queryOptions6({
1023
- ...args.query,
1024
- queryKey: [...currencyKeys.lists, args.chainId],
1025
- queryFn: () => fetchCurrencies(args.chainId, config),
1026
- select: (data) => selectCurrencies(data, args),
1027
- enabled: args.query?.enabled
1028
- });
1029
- };
1030
- var useCurrencies = (args) => {
1031
- const config = useConfig();
1032
- return useQuery6(currenciesOptions(args, config));
1033
- };
1034
988
 
1035
989
  // src/react/hooks/useMarketplaceConfig.tsx
1036
- import { useQuery as useQuery7 } from "@tanstack/react-query";
990
+ import { useQuery as useQuery6 } from "@tanstack/react-query";
1037
991
 
1038
992
  // src/react/hooks/options/marketplaceConfigOptions.ts
1039
- import { queryOptions as queryOptions7 } from "@tanstack/react-query";
993
+ import { queryOptions as queryOptions6 } from "@tanstack/react-query";
1040
994
  var fetchBuilderConfig = async (projectId, env) => {
1041
995
  const url = `${builderMarketplaceApi(projectId, env)}`;
1042
- const response = await fetch(`${url}/config.json`);
996
+ const response = await fetch(`${url}/settings.json`);
1043
997
  const json = await response.json();
1044
998
  if (!response.ok) {
1045
999
  console.error("Failed to fetch marketplace config:", response.status, json);
@@ -1076,7 +1030,7 @@ var marketplaceConfigOptions = (config) => {
1076
1030
  env = config._internal.builderEnv ?? env;
1077
1031
  }
1078
1032
  const projectId = config.projectId;
1079
- return queryOptions7({
1033
+ return queryOptions6({
1080
1034
  queryKey: [...configKeys.marketplace, env, projectId],
1081
1035
  queryFn: () => fetchMarketplaceConfig(env, projectId)
1082
1036
  });
@@ -1085,19 +1039,56 @@ var marketplaceConfigOptions = (config) => {
1085
1039
  // src/react/hooks/useMarketplaceConfig.tsx
1086
1040
  var useMarketplaceConfig = () => {
1087
1041
  const config = useConfig();
1088
- return useQuery7(marketplaceConfigOptions(config));
1042
+ return useQuery6(marketplaceConfigOptions(config));
1089
1043
  };
1090
1044
 
1091
- // src/react/hooks/useCurrencyOptions.tsx
1092
- var useCurrencyOptions = ({
1093
- collectionAddress
1094
- }) => {
1095
- const { data: marketplaceConfig } = useMarketplaceConfig();
1096
- const collections = marketplaceConfig?.collections;
1097
- const currencyOptions2 = collections?.find(
1098
- (collection) => collection.collectionAddress === collectionAddress
1099
- )?.currencyOptions;
1100
- return currencyOptions2;
1045
+ // src/react/hooks/useCurrencies.tsx
1046
+ var ChainIdCoerce = ChainIdSchema.transform((val) => val.toString());
1047
+ var UseCurrenciesArgsSchema = z7.object({
1048
+ chainId: ChainIdCoerce,
1049
+ includeNativeCurrency: z7.boolean().optional().default(true),
1050
+ collectionAddress: AddressSchema.optional(),
1051
+ query: QueryArgSchema
1052
+ });
1053
+ var fetchCurrencies = async (args, config) => {
1054
+ const parsedArgs = UseCurrenciesArgsSchema.parse(args);
1055
+ const marketplaceClient = getMarketplaceClient(parsedArgs.chainId, config);
1056
+ let currencies = await marketplaceClient.listCurrencies().then(
1057
+ (resp) => resp.currencies.map((currency) => ({
1058
+ ...currency,
1059
+ contractAddress: currency.contractAddress || zeroAddress2
1060
+ }))
1061
+ );
1062
+ if (parsedArgs.collectionAddress) {
1063
+ const queryClient = getQueryClient();
1064
+ const marketplaceConfig = await queryClient.fetchQuery(
1065
+ marketplaceConfigOptions(config)
1066
+ );
1067
+ const currenciesOptions2 = marketplaceConfig.collections.find(
1068
+ (collection) => collection.address === args.collectionAddress
1069
+ )?.currencyOptions;
1070
+ if (currenciesOptions2) {
1071
+ currencies = currencies.filter(
1072
+ (currency) => currenciesOptions2.includes(currency.contractAddress)
1073
+ );
1074
+ }
1075
+ }
1076
+ if (!parsedArgs.includeNativeCurrency) {
1077
+ currencies = currencies.filter((currency) => !currency.nativeCurrency);
1078
+ }
1079
+ return currencies;
1080
+ };
1081
+ var currenciesOptions = (args, config) => {
1082
+ return queryOptions7({
1083
+ ...args.query,
1084
+ queryKey: [...currencyKeys.lists, args],
1085
+ queryFn: () => fetchCurrencies(args, config),
1086
+ enabled: args.query?.enabled
1087
+ });
1088
+ };
1089
+ var useCurrencies = (args) => {
1090
+ const config = useConfig();
1091
+ return useQuery7(currenciesOptions(args, config));
1101
1092
  };
1102
1093
 
1103
1094
  // src/react/hooks/useCurrency.tsx
@@ -1146,15 +1137,52 @@ import { z as z9 } from "zod";
1146
1137
  var UseFiltersSchema = z9.object({
1147
1138
  chainId: ChainIdSchema.pipe(z9.coerce.string()),
1148
1139
  collectionAddress: AddressSchema,
1140
+ showAllFilters: z9.boolean().default(false).optional(),
1149
1141
  query: QueryArgSchema
1150
1142
  });
1151
1143
  var fetchFilters = async (args, config) => {
1152
1144
  const parsedArgs = UseFiltersSchema.parse(args);
1153
1145
  const metadataClient = getMetadataClient(config);
1154
- return metadataClient.tokenCollectionFilters({
1146
+ const filters = await metadataClient.tokenCollectionFilters({
1155
1147
  chainID: parsedArgs.chainId,
1156
1148
  contractAddress: parsedArgs.collectionAddress
1157
1149
  }).then((resp) => resp.filters);
1150
+ if (args.showAllFilters) return filters;
1151
+ const queryClient = getQueryClient();
1152
+ const marketplaceConfig = await queryClient.fetchQuery(
1153
+ marketplaceConfigOptions(config)
1154
+ );
1155
+ const collectionFilters = marketplaceConfig.collections.find(
1156
+ (c) => compareAddress(c.address, parsedArgs.collectionAddress)
1157
+ )?.filterSettings;
1158
+ if (!collectionFilters) return filters;
1159
+ const { filterOrder, exclusions } = collectionFilters;
1160
+ const sortedFilters = filters.toSorted((a, b) => {
1161
+ const aIndex = filterOrder.indexOf(a.name) > -1 ? filterOrder.indexOf(a.name) : filterOrder.length;
1162
+ const bIndex = filterOrder.indexOf(b.name) > -1 ? filterOrder.indexOf(b.name) : filterOrder.length;
1163
+ return aIndex - bIndex;
1164
+ });
1165
+ const filteredResults = sortedFilters.reduce(
1166
+ (acc, filter) => {
1167
+ const exclusionRule = exclusions.find((rule) => rule.key === filter.name);
1168
+ if (!exclusionRule) {
1169
+ acc.push(filter);
1170
+ return acc;
1171
+ }
1172
+ if (exclusionRule.condition === "ENTIRE_KEY" /* ENTIRE_KEY */) {
1173
+ return acc;
1174
+ }
1175
+ if (exclusionRule.condition === "SPECIFIC_VALUE" /* SPECIFIC_VALUE */ && exclusionRule.value) {
1176
+ const filteredValues = filter.values?.filter((value) => value !== exclusionRule.value) || [];
1177
+ if (filteredValues.length > 0) {
1178
+ acc.push({ ...filter, values: filteredValues });
1179
+ }
1180
+ }
1181
+ return acc;
1182
+ },
1183
+ []
1184
+ );
1185
+ return filteredResults;
1158
1186
  };
1159
1187
  var filtersOptions = (args, config) => {
1160
1188
  return queryOptions9({
@@ -1298,7 +1326,8 @@ var fetchCollectibleActivities = async (args, config) => {
1298
1326
  var listCollectibleActivitiesOptions = (args, config) => {
1299
1327
  return queryOptions12({
1300
1328
  queryKey: [...collectableKeys.collectibleActivities, args, config],
1301
- queryFn: () => fetchCollectibleActivities(args, config)
1329
+ queryFn: () => fetchCollectibleActivities(args, config),
1330
+ enabled: args.query?.enabled ?? true
1302
1331
  });
1303
1332
  };
1304
1333
  var useListCollectibleActivities = (args) => {
@@ -1331,7 +1360,8 @@ var listCollectiblesOptions = (args, config) => {
1331
1360
  queryKey: [...collectableKeys.lists, args],
1332
1361
  queryFn: ({ pageParam }) => fetchCollectibles(args, marketplaceClient, pageParam),
1333
1362
  initialPageParam: { page: 1, pageSize: 30 },
1334
- getNextPageParam: (lastPage) => lastPage.page?.more ? lastPage.page : void 0
1363
+ getNextPageParam: (lastPage) => lastPage.page?.more ? lastPage.page : void 0,
1364
+ enabled: args.query?.enabled ?? true
1335
1365
  });
1336
1366
  };
1337
1367
  var useListCollectibles = (args) => {
@@ -1358,7 +1388,8 @@ var fetchListCollectionActivities = async (args, config) => {
1358
1388
  var listCollectionActivitiesOptions = (args, config) => {
1359
1389
  return queryOptions13({
1360
1390
  queryKey: [...collectionKeys.collectionActivities, args, config],
1361
- queryFn: () => fetchListCollectionActivities(args, config)
1391
+ queryFn: () => fetchListCollectionActivities(args, config),
1392
+ enabled: args.query?.enabled ?? true
1362
1393
  });
1363
1394
  };
1364
1395
  var useListCollectionActivities = (args) => {
@@ -1771,11 +1802,11 @@ var fetchListCollections = async ({ marketplaceConfig }, config) => {
1771
1802
  return [];
1772
1803
  }
1773
1804
  const collectionsByChain = marketplaceConfig.collections.reduce((acc, curr) => {
1774
- const { chainId, collectionAddress } = curr;
1805
+ const { chainId, address } = curr;
1775
1806
  if (!acc[chainId]) {
1776
1807
  acc[chainId] = [];
1777
1808
  }
1778
- acc[chainId].push(collectionAddress);
1809
+ acc[chainId].push(address);
1779
1810
  return acc;
1780
1811
  }, {});
1781
1812
  const promises = Object.entries(collectionsByChain).map(
@@ -1808,7 +1839,7 @@ var useListCollections = (args = {}) => {
1808
1839
  };
1809
1840
 
1810
1841
  // src/react/hooks/useGenerateBuyTransaction.tsx
1811
- import { queryOptions as queryOptions22, useQuery as useQuery22 } from "@tanstack/react-query";
1842
+ import { queryOptions as queryOptions22, skipToken as skipToken2, useQuery as useQuery22 } from "@tanstack/react-query";
1812
1843
  import { useAccount as useAccount4 } from "wagmi";
1813
1844
  import { z as z24 } from "zod";
1814
1845
  var UseGenerateBuyTransactionArgsSchema = z24.object({
@@ -1845,10 +1876,15 @@ var generateBuyTransactionOptions = (args, config) => {
1845
1876
  var useGenerateBuyTransaction = (args) => {
1846
1877
  const { address } = useAccount4();
1847
1878
  const config = useConfig();
1848
- return useQuery22(
1849
- // biome-ignore lint/style/noNonNullAssertion: <explanation>
1850
- generateBuyTransactionOptions({ buyer: address, ...args }, config)
1851
- );
1879
+ return useQuery22({
1880
+ queryKey: ["generateBuyTransaction", args],
1881
+ queryFn: address ? () => {
1882
+ return fetchGenerateBuyTransaction(
1883
+ { buyer: address, ...args },
1884
+ config
1885
+ );
1886
+ } : skipToken2
1887
+ });
1852
1888
  };
1853
1889
 
1854
1890
  // src/react/hooks/useCancelOrder.tsx
@@ -1978,6 +2014,7 @@ var wallet = ({
1978
2014
  });
1979
2015
  return await wallet2.signTypedData({
1980
2016
  account: wallet2.account,
2017
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
1981
2018
  domain: stepItem.signature.domain,
1982
2019
  // biome-ignore lint/style/noNonNullAssertion: <explanation>
1983
2020
  types: stepItem.signature.types,
@@ -2292,10 +2329,10 @@ var useCancelTransactionSteps = ({
2292
2329
  chainId
2293
2330
  });
2294
2331
  const getWalletChainId = async () => {
2295
- return await wallet2.getChainId();
2332
+ return await wallet2?.getChainId();
2296
2333
  };
2297
2334
  const switchChain = async () => {
2298
- await wallet2.switchChain(Number(chainId));
2335
+ await wallet2?.switchChain(Number(chainId));
2299
2336
  };
2300
2337
  const checkAndSwitchChain = async () => {
2301
2338
  const walletChainId = await getWalletChainId();
@@ -2323,7 +2360,10 @@ var useCancelTransactionSteps = ({
2323
2360
  marketplace
2324
2361
  }) => {
2325
2362
  try {
2326
- const address = await wallet2.address();
2363
+ const address = await wallet2?.address();
2364
+ if (!address) {
2365
+ throw new Error("Wallet address not found");
2366
+ }
2327
2367
  const steps = await generateCancelTransactionAsync({
2328
2368
  collectionAddress,
2329
2369
  maker: address,
@@ -2368,7 +2408,8 @@ var useCancelTransactionSteps = ({
2368
2408
  if (!transactionStep && !signatureStep) {
2369
2409
  throw new Error("No transaction or signature step found");
2370
2410
  }
2371
- let hash, reservoirOrderId;
2411
+ let hash;
2412
+ let reservoirOrderId;
2372
2413
  if (transactionStep && wallet2) {
2373
2414
  hash = await executeTransaction({ transactionStep });
2374
2415
  if (hash) {
@@ -2407,7 +2448,7 @@ var useCancelTransactionSteps = ({
2407
2448
  const executeTransaction = async ({
2408
2449
  transactionStep
2409
2450
  }) => {
2410
- const hash = await wallet2.handleSendTransactionStep(
2451
+ const hash = await wallet2?.handleSendTransactionStep(
2411
2452
  Number(chainId),
2412
2453
  transactionStep
2413
2454
  );
@@ -2416,7 +2457,7 @@ var useCancelTransactionSteps = ({
2416
2457
  const executeSignature = async ({
2417
2458
  signatureStep
2418
2459
  }) => {
2419
- const signature = await wallet2.handleSignMessageStep(
2460
+ const signature = await wallet2?.handleSignMessageStep(
2420
2461
  signatureStep
2421
2462
  );
2422
2463
  const result = await marketplaceClient.execute({
@@ -2551,7 +2592,7 @@ var collectionDetailsPollingOptions = (args, config) => {
2551
2592
  return false;
2552
2593
  }
2553
2594
  const interval = Math.min(
2554
- INITIAL_POLLING_INTERVAL * Math.pow(1.5, currentAttempt),
2595
+ INITIAL_POLLING_INTERVAL * 1.5 ** currentAttempt,
2555
2596
  MAX_POLLING_INTERVAL
2556
2597
  );
2557
2598
  return interval;
@@ -2581,11 +2622,10 @@ export {
2581
2622
  useCollectible,
2582
2623
  collectionOptions,
2583
2624
  useCollection,
2584
- currenciesOptions,
2585
- useCurrencies,
2586
2625
  marketplaceConfigOptions,
2587
2626
  useMarketplaceConfig,
2588
- useCurrencyOptions,
2627
+ currenciesOptions,
2628
+ useCurrencies,
2589
2629
  currencyOptions,
2590
2630
  useCurrency,
2591
2631
  fetchFilters,
@@ -2644,4 +2684,4 @@ export {
2644
2684
  collectionDetailsPollingOptions,
2645
2685
  useCollectionDetailsPolling
2646
2686
  };
2647
- //# sourceMappingURL=chunk-I37CRQ4S.js.map
2687
+ //# sourceMappingURL=chunk-H5YWG6WN.js.map