@0xsequence/marketplace-sdk 0.8.1 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/.changeset/flat-parks-clean.md +8 -0
  2. package/CHANGELOG.md +9 -0
  3. package/dist/{builder-types-QlHwc9bI.d.ts → builder-types-Wrqq6YoW.d.ts} +1 -1
  4. package/dist/{chunk-3JU7SQVE.js → chunk-4DFOSZTE.js} +60 -23
  5. package/dist/chunk-4DFOSZTE.js.map +1 -0
  6. package/dist/{chunk-Q5RKAMYF.js → chunk-BGY4WXER.js} +43 -1
  7. package/dist/chunk-BGY4WXER.js.map +1 -0
  8. package/dist/{chunk-X3QNSQER.js → chunk-F6CUGMI4.js} +44 -67
  9. package/dist/chunk-F6CUGMI4.js.map +1 -0
  10. package/dist/{chunk-A5ACY5YV.js → chunk-LDHGFXPJ.js} +2 -2
  11. package/dist/{chunk-BN36GABQ.js → chunk-S2UFNIYX.js} +82 -61
  12. package/dist/chunk-S2UFNIYX.js.map +1 -0
  13. package/dist/{chunk-BCO4CYE4.js → chunk-SJU6QZHM.js} +2 -2
  14. package/dist/{chunk-2VHHJNXY.js → chunk-WXKV5N4T.js} +3 -3
  15. package/dist/{chunk-ABSYNRT5.js → chunk-XOHAZXBZ.js} +3 -11
  16. package/dist/chunk-XOHAZXBZ.js.map +1 -0
  17. package/dist/{create-config-ClkUr27C.d.ts → create-config-B58hoCDv.d.ts} +1 -1
  18. package/dist/{index-CnaFSNE9.d.ts → index-PhhCRKUH.d.ts} +1 -1
  19. package/dist/index.d.ts +3 -3
  20. package/dist/index.js +10 -6
  21. package/dist/{listCollectibles-B0tbqnRd.d.ts → lowestListing-CuLxIWxy.d.ts} +49 -42
  22. package/dist/{marketplace.gen-BTHxxhG2.d.ts → marketplace.gen-De2-sxiG.d.ts} +1 -1
  23. package/dist/react/_internal/api/index.d.ts +2 -2
  24. package/dist/react/_internal/databeat/index.d.ts +1 -1
  25. package/dist/react/_internal/databeat/index.js +7 -7
  26. package/dist/react/_internal/index.d.ts +5 -5
  27. package/dist/react/_internal/wagmi/index.d.ts +3 -3
  28. package/dist/react/hooks/index.d.ts +8 -143
  29. package/dist/react/hooks/index.js +8 -10
  30. package/dist/react/hooks/options/index.d.ts +3 -3
  31. package/dist/react/index.d.ts +8 -8
  32. package/dist/react/index.js +12 -14
  33. package/dist/react/queries/index.d.ts +2 -2
  34. package/dist/react/queries/index.js +10 -27
  35. package/dist/react/queries/index.js.map +1 -1
  36. package/dist/react/ssr/index.d.ts +2 -2
  37. package/dist/react/ui/components/collectible-card/index.d.ts +1 -1
  38. package/dist/react/ui/components/collectible-card/index.js +10 -10
  39. package/dist/react/ui/icons/index.js +4 -4
  40. package/dist/react/ui/index.d.ts +1 -1
  41. package/dist/react/ui/index.js +10 -10
  42. package/dist/react/ui/modals/_internal/components/actionModal/index.js +7 -7
  43. package/dist/{services-ybGoDJd9.d.ts → services-BdzIAR9w.d.ts} +1 -1
  44. package/dist/types/index.d.ts +3 -3
  45. package/dist/{types-o_pKUpQG.d.ts → types-CmHOStH3.d.ts} +2 -2
  46. package/dist/utils/abi/index.js +5 -5
  47. package/dist/utils/index.d.ts +54 -2
  48. package/dist/utils/index.js +10 -6
  49. package/package.json +4 -2
  50. package/src/react/hooks/__tests__/useHighestOffer.test.tsx +7 -8
  51. package/src/react/hooks/__tests__/useLowestListing.test.tsx +4 -5
  52. package/src/react/hooks/useHighestOffer.tsx +1 -39
  53. package/src/react/hooks/useLowestListing.tsx +4 -51
  54. package/src/react/queries/highestOffer.ts +25 -30
  55. package/src/react/queries/index.ts +1 -0
  56. package/src/react/queries/lowestListing.ts +52 -0
  57. package/src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx +6 -9
  58. package/src/react/ui/modals/BuyModal/Modal.tsx +26 -8
  59. package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +6 -2
  60. package/src/react/ui/modals/MakeOfferModal/Modal.tsx +4 -4
  61. package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +1 -5
  62. package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +4 -4
  63. package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +1 -1
  64. package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +18 -14
  65. package/src/types/api-types.ts +1 -1
  66. package/src/types/types.ts +5 -0
  67. package/src/utils/price.ts +103 -0
  68. package/dist/chunk-3JU7SQVE.js.map +0 -1
  69. package/dist/chunk-ABSYNRT5.js.map +0 -1
  70. package/dist/chunk-BN36GABQ.js.map +0 -1
  71. package/dist/chunk-Q5RKAMYF.js.map +0 -1
  72. package/dist/chunk-X3QNSQER.js.map +0 -1
  73. /package/dist/{chunk-A5ACY5YV.js.map → chunk-LDHGFXPJ.js.map} +0 -0
  74. /package/dist/{chunk-BCO4CYE4.js.map → chunk-SJU6QZHM.js.map} +0 -0
  75. /package/dist/{chunk-2VHHJNXY.js.map → chunk-WXKV5N4T.js.map} +0 -0
@@ -0,0 +1,8 @@
1
+ ---
2
+ "@0xsequence/marketplace-sdk": patch
3
+ ---
4
+
5
+ - Unified order type and new query for lowest listing [#278](https://github.com/0xsequence/marketplace-sdk/pull/278)
6
+ - Fixed earnings calculation and improved number formatting in transaction details [#281](https://github.com/0xsequence/marketplace-sdk/pull/281)
7
+ - Fixed incorrect native currency decimals in QuantetyModal [#280](https://github.com/0xsequence/marketplace-sdk/pull/280)
8
+ - Fixed React state updates during render in BuyModal [#277](https://github.com/0xsequence/marketplace-sdk/pull/277)
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @0xsequence/marketplace-sdk
2
2
 
3
+ ## 0.8.2
4
+
5
+ ### Patch Changes
6
+
7
+ - - Unified order type and new query for lowest listing [#278](https://github.com/0xsequence/marketplace-sdk/pull/278)
8
+ - Fixed earnings calculation and improved number formatting in transaction details [#281](https://github.com/0xsequence/marketplace-sdk/pull/281)
9
+ - Fixed incorrect native currency decimals in QuantetyModal [#280](https://github.com/0xsequence/marketplace-sdk/pull/280)
10
+ - Fixed React state updates during render in BuyModal [#277](https://github.com/0xsequence/marketplace-sdk/pull/277)
11
+
3
12
  ## 0.8.1
4
13
 
5
14
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- import { O as OrderbookKind } from './marketplace.gen-BTHxxhG2.js';
1
+ import { O as OrderbookKind } from './marketplace.gen-De2-sxiG.js';
2
2
 
3
3
  declare enum MarketplaceWallet {
4
4
  UNIVERSAL = "UNIVERSAL",
@@ -45,31 +45,29 @@ function balanceOfCollectibleOptions(args, config) {
45
45
  });
46
46
  }
47
47
 
48
- // src/react/queries/highestOffer.ts
48
+ // src/react/queries/getTokenSupplies.ts
49
49
  import { queryOptions as queryOptions2 } from "@tanstack/react-query";
50
- async function fetchHighestOffer(args, config) {
51
- const marketplaceClient = getMarketplaceClient(args.chainId, config);
52
- const data = await marketplaceClient.getCollectibleHighestOffer({
53
- contractAddress: args.collectionAddress,
54
- tokenId: args.tokenId
55
- });
56
- let order;
57
- if (data.order) {
58
- order = {
59
- ...data.order,
60
- priceAmount: BigInt(data.order.priceAmount),
61
- priceAmountNet: BigInt(data.order.priceAmountNet)
62
- };
50
+ async function getTokenSupplies(args, config) {
51
+ if (args.isLaos721) {
52
+ const laosApi = new LaosAPI();
53
+ return laosApi.getTokenSupplies({
54
+ chainId: args.chainId.toString(),
55
+ contractAddress: args.contractAddress
56
+ });
63
57
  }
64
- return order ?? null;
58
+ const indexerClient = getIndexerClient(args.chainId, config);
59
+ return await indexerClient.getTokenSupplies(args);
65
60
  }
66
- function highestOfferOptions(args, config) {
61
+ function getTokenSuppliesOptions(args, config) {
67
62
  return queryOptions2({
68
- queryKey: [...collectableKeys.highestOffers, args],
69
- queryFn: () => fetchHighestOffer(args, config)
63
+ queryKey: ["getTokenSupplies", args],
64
+ queryFn: () => getTokenSupplies(args, config)
70
65
  });
71
66
  }
72
67
 
68
+ // src/react/queries/listCollectibles.ts
69
+ import { infiniteQueryOptions as infiniteQueryOptions2 } from "@tanstack/react-query";
70
+
73
71
  // src/react/queries/listBalances.ts
74
72
  import { infiniteQueryOptions } from "@tanstack/react-query";
75
73
  async function fetchBalances(args, config, page) {
@@ -119,7 +117,6 @@ function listBalancesOptions(args, config) {
119
117
  }
120
118
 
121
119
  // src/react/queries/listCollectibles.ts
122
- import { infiniteQueryOptions as infiniteQueryOptions2 } from "@tanstack/react-query";
123
120
  async function fetchCollectibles(args, config, page) {
124
121
  const marketplaceClient = getMarketplaceClient(args.chainId, config);
125
122
  const parsedArgs = {
@@ -169,14 +166,54 @@ function listCollectiblesOptions(args, config) {
169
166
  });
170
167
  }
171
168
 
169
+ // src/react/queries/highestOffer.ts
170
+ import { queryOptions as queryOptions3 } from "@tanstack/react-query";
171
+ async function fetchHighestOffer(args, config) {
172
+ const marketplaceClient = getMarketplaceClient(args.chainId, config);
173
+ const data = await marketplaceClient.getCollectibleHighestOffer({
174
+ contractAddress: args.collectionAddress,
175
+ ...args
176
+ });
177
+ return data.order ?? null;
178
+ }
179
+ function highestOfferOptions(args, config) {
180
+ return queryOptions3({
181
+ enabled: args.query?.enabled ?? true,
182
+ queryKey: [...collectableKeys.highestOffers, args],
183
+ queryFn: () => fetchHighestOffer(args, config)
184
+ });
185
+ }
186
+
187
+ // src/react/queries/lowestListing.ts
188
+ import { queryOptions as queryOptions4 } from "@tanstack/react-query";
189
+ async function fetchLowestListing(args, config) {
190
+ const marketplaceClient = getMarketplaceClient(args.chainId, config);
191
+ const data = await marketplaceClient.getCollectibleLowestListing({
192
+ contractAddress: args.collectionAddress,
193
+ ...args
194
+ });
195
+ return data.order || null;
196
+ }
197
+ function lowestListingOptions(args, config) {
198
+ return queryOptions4({
199
+ enabled: args.query?.enabled ?? true,
200
+ queryKey: [...collectableKeys.lowestListings, args],
201
+ queryFn: () => fetchLowestListing(args, config)
202
+ });
203
+ }
204
+
172
205
  export {
173
206
  fetchBalanceOfCollectible,
174
207
  balanceOfCollectibleOptions,
175
- fetchHighestOffer,
176
- highestOfferOptions,
208
+ getTokenSupplies,
209
+ getTokenSuppliesOptions,
177
210
  fetchBalances,
178
211
  listBalancesOptions,
179
212
  fetchCollectibles,
180
- listCollectiblesOptions
213
+ listCollectiblesOptions,
214
+ fetchHighestOffer,
215
+ highestOfferOptions,
216
+ fetchLowestListing,
217
+ lowestListingOptions
181
218
  };
182
- //# sourceMappingURL=chunk-3JU7SQVE.js.map
219
+ //# sourceMappingURL=chunk-4DFOSZTE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/queries/balanceOfCollectible.ts","../src/react/queries/getTokenSupplies.ts","../src/react/queries/listCollectibles.ts","../src/react/queries/listBalances.ts","../src/react/queries/highestOffer.ts","../src/react/queries/lowestListing.ts"],"sourcesContent":["import { queryOptions, skipToken } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport type { UseQueryParameters } from 'wagmi/query';\nimport type { SdkConfig } from '../../types';\nimport { LaosAPI, collectableKeys, getIndexerClient } from '../_internal';\n\nexport type UseBalanceOfCollectibleArgs = {\n\tcollectionAddress: Hex;\n\tcollectableId: string;\n\tuserAddress: Hex | undefined;\n\tchainId: number;\n\tisLaos721?: boolean;\n\tquery?: UseQueryParameters;\n};\n\n/**\n * Fetches the balance of a specific collectible for a user\n *\n * @param args - Arguments for the API call\n * @param config - SDK configuration\n * @returns The balance data\n */\nexport async function fetchBalanceOfCollectible(\n\targs: Omit<UseBalanceOfCollectibleArgs, 'userAddress'> & { userAddress: Hex },\n\tconfig: SdkConfig,\n) {\n\tif (args.isLaos721) {\n\t\tconst laosApi = new LaosAPI();\n\t\tconst response = await laosApi.getTokenBalances({\n\t\t\tchainId: args.chainId.toString(),\n\t\t\taccountAddress: args.userAddress,\n\t\t\tincludeMetadata: true,\n\t\t});\n\n\t\treturn response.balances[0] || null;\n\t}\n\n\tconst indexerClient = getIndexerClient(args.chainId, config);\n\treturn indexerClient\n\t\t.getTokenBalances({\n\t\t\taccountAddress: args.userAddress,\n\t\t\tcontractAddress: args.collectionAddress,\n\t\t\ttokenID: args.collectableId,\n\t\t\tincludeMetadata: false,\n\t\t\tmetadataOptions: {\n\t\t\t\tverifiedOnly: true,\n\t\t\t\tincludeContracts: [args.collectionAddress],\n\t\t\t},\n\t\t})\n\t\t.then((res) => res.balances[0] || null);\n}\n\n/**\n * Creates a tanstack query options object for the balance query\n *\n * @param args - The query arguments\n * @param config - SDK configuration\n * @returns Query options configuration\n */\nexport function balanceOfCollectibleOptions(\n\targs: UseBalanceOfCollectibleArgs,\n\tconfig: SdkConfig,\n) {\n\tconst enabled = !!args.userAddress && (args.query?.enabled ?? true);\n\treturn queryOptions({\n\t\tqueryKey: [...collectableKeys.userBalances, args],\n\t\tqueryFn: enabled\n\t\t\t? () =>\n\t\t\t\t\tfetchBalanceOfCollectible(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...args,\n\t\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: this is guaranteed by the userAddress check above\n\t\t\t\t\t\t\tuserAddress: args.userAddress!,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t)\n\t\t\t: skipToken,\n\t});\n}\n","import { queryOptions } from '@tanstack/react-query';\nimport type { SdkConfig } from '../../types';\n//TODO: This is not complete, there is no hook for this,\n// add it if we need it in the future\nimport { LaosAPI, getIndexerClient } from '../_internal';\n\nexport type UseGetTokenSuppliesArgs = {\n\tchainId: number;\n\tcontractAddress: string;\n\ttokenId: string;\n\tisLaos721?: boolean;\n};\n\nexport async function getTokenSupplies(\n\targs: UseGetTokenSuppliesArgs,\n\tconfig: SdkConfig,\n) {\n\tif (args.isLaos721) {\n\t\tconst laosApi = new LaosAPI();\n\t\treturn laosApi.getTokenSupplies({\n\t\t\tchainId: args.chainId.toString(),\n\t\t\tcontractAddress: args.contractAddress,\n\t\t});\n\t}\n\n\tconst indexerClient = getIndexerClient(args.chainId, config);\n\treturn await indexerClient.getTokenSupplies(args);\n}\n\nexport function getTokenSuppliesOptions(\n\targs: UseGetTokenSuppliesArgs,\n\tconfig: SdkConfig,\n) {\n\treturn queryOptions({\n\t\tqueryKey: ['getTokenSupplies', args],\n\t\tqueryFn: () => getTokenSupplies(args, config),\n\t});\n}\n","import { infiniteQueryOptions } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport type { Page, SdkConfig } from '../../types';\nimport type {\n\tCollectibleOrder,\n\tCollectiblesFilter,\n\tListCollectiblesArgs,\n\tListCollectiblesReturn,\n} from '../_internal';\nimport { OrderSide, collectableKeys, getMarketplaceClient } from '../_internal';\nimport { fetchBalances } from './listBalances';\nexport type UseListCollectiblesArgs = {\n\tcollectionAddress: Hex;\n\tchainId: number;\n\tside: OrderSide;\n\tfilter?: CollectiblesFilter;\n\tisLaos721?: boolean;\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n};\n\n/**\n * Fetches a list of collectibles with pagination support\n *\n * @param args - Arguments for the API call\n * @param config - SDK configuration\n * @param page - Page parameters for pagination\n * @returns The collectibles data\n */\nexport async function fetchCollectibles(\n\targs: UseListCollectiblesArgs,\n\tconfig: SdkConfig,\n\tpage: Page,\n): Promise<ListCollectiblesReturn> {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\tconst parsedArgs = {\n\t\t...args,\n\t\tcontractAddress: args.collectionAddress,\n\t\tpage: page,\n\t\tside: args.side,\n\t} satisfies ListCollectiblesArgs;\n\n\tif (args.isLaos721 && args.side === OrderSide.listing) {\n\t\ttry {\n\t\t\tconst balances = await fetchBalances(args, config, page);\n\t\t\tconst collectibles: CollectibleOrder[] = balances.balances.map(\n\t\t\t\t(balance) => {\n\t\t\t\t\tif (!balance.tokenMetadata)\n\t\t\t\t\t\tthrow new Error('Token metadata not found');\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\ttokenId: balance.tokenID ?? '',\n\t\t\t\t\t\t\tattributes: balance.tokenMetadata.attributes,\n\t\t\t\t\t\t\timage: balance.tokenMetadata.image,\n\t\t\t\t\t\t\tname: balance.tokenMetadata.name,\n\t\t\t\t\t\t\tdescription: balance.tokenMetadata.description,\n\t\t\t\t\t\t\tvideo: balance.tokenMetadata.video,\n\t\t\t\t\t\t\taudio: balance.tokenMetadata.audio,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tcollectibles: collectibles,\n\t\t\t\t//@ts-expect-error\n\t\t\t\tpage: balances.page,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\t// If the request fails, ignore the error and return the collectibles from our indexer\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n\treturn await marketplaceClient.listCollectibles(parsedArgs);\n}\n\n/**\n * Creates a tanstack infinite query options object for the collectibles query\n *\n * @param args - The query arguments\n * @param config - SDK configuration\n * @returns Query options configuration\n */\nexport function listCollectiblesOptions(\n\targs: UseListCollectiblesArgs,\n\tconfig: SdkConfig,\n) {\n\treturn infiniteQueryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...collectableKeys.lists, args, config],\n\t\tqueryFn: ({ pageParam }) => fetchCollectibles(args, config, pageParam),\n\t\tinitialPageParam: { page: 1, pageSize: 30 } as Page,\n\t\tgetNextPageParam: (lastPage) =>\n\t\t\tlastPage.page?.more ? lastPage.page : undefined,\n\t});\n}\n","import type { GetTokenBalancesReturn, Page } from '@0xsequence/indexer';\nimport { infiniteQueryOptions } from '@tanstack/react-query';\nimport type { Hex } from 'viem';\nimport type { SdkConfig } from '../../types';\nimport { balanceQueries, getIndexerClient } from '../_internal';\n\nexport type UseListBalancesArgs = {\n\tchainId: number;\n\taccountAddress?: Hex;\n\tcontractAddress?: Hex;\n\ttokenId?: string;\n\tincludeMetadata?: boolean;\n\tmetadataOptions?: {\n\t\tverifiedOnly?: boolean;\n\t\tunverifiedOnly?: boolean;\n\t\tincludeContracts?: Hex[];\n\t};\n\tincludeCollectionTokens?: boolean;\n\tpage?: Page;\n\tisLaos721?: boolean;\n\t//TODO: More options\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n};\n\n/**\n * Fetches a list of token balances with pagination support\n *\n * @param args - Arguments for the API call\n * @param config - SDK configuration\n * @param page - Page parameters for pagination\n * @returns The token balances data\n */\nexport async function fetchBalances(\n\targs: UseListBalancesArgs,\n\tconfig: SdkConfig,\n\tpage: Page,\n): Promise<GetTokenBalancesReturn> {\n\tif (args.isLaos721) {\n\t\tconst response = await fetch(\n\t\t\t'https://extensions.api.laosnetwork.io/token/GetTokenBalances',\n\t\t\t{\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t},\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tchainId: args.chainId.toString(),\n\t\t\t\t\taccountAddress: args.accountAddress,\n\t\t\t\t\tincludeMetadata: args.includeMetadata ?? true,\n\t\t\t\t\tpage: {\n\t\t\t\t\t\tsort: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcolumn: 'CREATED_AT',\n\t\t\t\t\t\t\t\torder: 'DESC',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t},\n\t\t);\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Laos API request failed with status ${response.status}`);\n\t\t}\n\n\t\t// TODO: This is pretty unsafe, we should validate the response\n\t\treturn response.json() as Promise<GetTokenBalancesReturn>;\n\t}\n\n\tconst indexerClient = getIndexerClient(args.chainId, config);\n\treturn indexerClient.getTokenBalances({\n\t\t...args,\n\t\ttokenID: args.tokenId,\n\t\tpage: page,\n\t});\n}\n\n/**\n * Creates a tanstack infinite query options object for the balances query\n *\n * @param args - The query arguments\n * @param config - SDK configuration\n * @returns Query options configuration\n */\nexport function listBalancesOptions(\n\targs: UseListBalancesArgs,\n\tconfig: SdkConfig,\n) {\n\treturn infiniteQueryOptions({\n\t\t...args.query,\n\t\tqueryKey: [...balanceQueries.lists, args, config],\n\t\tqueryFn: ({ pageParam }) => fetchBalances(args, config, pageParam),\n\t\tinitialPageParam: { page: 1, pageSize: 30 } as Page,\n\t\tgetNextPageParam: (lastPage) => lastPage.page.after,\n\t});\n}\n","import { queryOptions } from '@tanstack/react-query';\nimport type { Address } from 'viem';\nimport type { SdkConfig } from '../../types';\nimport {\n\ttype GetCollectibleHighestOfferArgs,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\n\nexport interface UseHighestOfferArgs\n\textends Omit<GetCollectibleHighestOfferArgs, 'contractAddress'> {\n\tcollectionAddress: Address;\n\tchainId: number;\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n}\n\nexport async function fetchHighestOffer(\n\targs: UseHighestOfferArgs,\n\tconfig: SdkConfig,\n) {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\n\tconst data = await marketplaceClient.getCollectibleHighestOffer({\n\t\tcontractAddress: args.collectionAddress,\n\t\t...args,\n\t});\n\n\t// let order: Order | undefined;\n\t// if (data.order) {\n\t// \torder = {\n\t// \t\t...data.order,\n\t// \t\tpriceAmount: BigInt(data.order.priceAmount),\n\t// \t\tpriceAmountNet: BigInt(data.order.priceAmountNet),\n\t// \t};\n\t// }\n\n\treturn data.order ?? null;\n}\n\n/**\n * Creates a tanstack query options object for the highest offer query\n *\n * @param args - The query arguments\n * @param config - SDK configuration\n * @returns Query options configuration\n */\nexport function highestOfferOptions(\n\targs: UseHighestOfferArgs,\n\tconfig: SdkConfig,\n) {\n\treturn queryOptions({\n\t\tenabled: args.query?.enabled ?? true,\n\t\tqueryKey: [...collectableKeys.highestOffers, args],\n\t\tqueryFn: () => fetchHighestOffer(args, config),\n\t});\n}\n","import { queryOptions } from '@tanstack/react-query';\nimport type { Address } from 'viem';\nimport type { SdkConfig } from '../../types';\nimport {\n\ttype GetCollectibleLowestListingArgs,\n\ttype GetCollectibleLowestListingReturn,\n\tcollectableKeys,\n\tgetMarketplaceClient,\n} from '../_internal';\n\nexport interface UseLowestListingArgs\n\textends Omit<GetCollectibleLowestListingArgs, 'contractAddress'> {\n\tcollectionAddress: Address;\n\tchainId: number;\n\tquery?: {\n\t\tenabled?: boolean;\n\t};\n}\n\nexport async function fetchLowestListing(\n\targs: UseLowestListingArgs,\n\tconfig: SdkConfig,\n): Promise<GetCollectibleLowestListingReturn['order'] | null> {\n\tconst marketplaceClient = getMarketplaceClient(args.chainId, config);\n\n\tconst data = await marketplaceClient.getCollectibleLowestListing({\n\t\tcontractAddress: args.collectionAddress,\n\t\t...args,\n\t});\n\n\t// let order: Order | undefined;\n\t// if (data.order) {\n\t// \torder = {\n\t// \t\t...data.order,\n\t// \t\tpriceAmount: BigInt(data.order.priceAmount),\n\t// \t\tpriceAmountNet: BigInt(data.order.priceAmountNet),\n\t// \t};\n\t// }\n\n\treturn data.order || null;\n}\n\nexport function lowestListingOptions(\n\targs: UseLowestListingArgs,\n\tconfig: SdkConfig,\n) {\n\treturn queryOptions({\n\t\tenabled: args.query?.enabled ?? true,\n\t\tqueryKey: [...collectableKeys.lowestListings, args],\n\t\tqueryFn: () => fetchLowestListing(args, config),\n\t});\n}\n"],"mappings":"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","names":["queryOptions","queryOptions","infiniteQueryOptions","infiniteQueryOptions","queryOptions","queryOptions","queryOptions","queryOptions"]}
@@ -35,6 +35,7 @@ var getPresentableChainName = (chainId) => {
35
35
  };
36
36
 
37
37
  // src/utils/price.ts
38
+ import * as dn from "dnum";
38
39
  import { formatUnits } from "viem";
39
40
  var calculatePriceDifferencePercentage = ({
40
41
  inputPriceRaw,
@@ -54,6 +55,45 @@ var formatPrice = (amount, decimals) => {
54
55
  maximumFractionDigits: decimals
55
56
  });
56
57
  };
58
+ var calculateEarningsAfterFees = (amount, decimals, fees) => {
59
+ try {
60
+ const decimalAmount = Number(formatUnits(amount, decimals));
61
+ let earnings = dn.from(decimalAmount.toString(), decimals);
62
+ for (const fee of fees) {
63
+ if (fee > 0) {
64
+ const feeMultiplier = dn.from((1 - fee / 100).toString(), decimals);
65
+ earnings = dn.multiply(earnings, feeMultiplier);
66
+ }
67
+ }
68
+ return dn.format(earnings, {
69
+ digits: decimals,
70
+ trailingZeros: false,
71
+ locale: "en-US"
72
+ });
73
+ } catch (error) {
74
+ console.error("Error calculating earnings after fees:", error);
75
+ return "0";
76
+ }
77
+ };
78
+ var formatPriceWithFee = (amount, decimals, feePercentage) => {
79
+ try {
80
+ const decimalAmount = Number(formatUnits(amount, decimals));
81
+ const price = dn.from(decimalAmount.toString(), decimals);
82
+ const feeMultiplier = dn.from(
83
+ (1 + feePercentage / 100).toString(),
84
+ decimals
85
+ );
86
+ const totalPrice = dn.multiply(price, feeMultiplier);
87
+ return dn.format(totalPrice, {
88
+ digits: decimals,
89
+ trailingZeros: false,
90
+ locale: "en-US"
91
+ });
92
+ } catch (error) {
93
+ console.error("Error formatting price with fee:", error);
94
+ return "0";
95
+ }
96
+ };
57
97
 
58
98
  // src/utils/getMarketplaceDetails.ts
59
99
  var MARKETPLACES = {
@@ -157,8 +197,10 @@ export {
157
197
  getPresentableChainName,
158
198
  calculatePriceDifferencePercentage,
159
199
  formatPrice,
200
+ calculateEarningsAfterFees,
201
+ formatPriceWithFee,
160
202
  getMarketplaceDetails,
161
203
  networkToWagmiChain,
162
204
  cn
163
205
  };
164
- //# sourceMappingURL=chunk-Q5RKAMYF.js.map
206
+ //# sourceMappingURL=chunk-BGY4WXER.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/address.ts","../src/utils/network.ts","../src/utils/price.ts","../src/utils/getMarketplaceDetails.ts","../src/utils/networkconfigToWagmiChain.ts","../src/utils/cn.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 { networks } from '@0xsequence/network';\n\nexport const getPresentableChainName = (chainId: number) => {\n\treturn networks[chainId as keyof typeof networks]?.title ?? 'Unknown Network';\n};\n","import * as dn from 'dnum';\nimport { formatUnits } from 'viem';\n\ntype CalculatePriceDifferencePercentageArgs = {\n\tinputPriceRaw: bigint;\n\tbasePriceRaw: bigint;\n\tdecimals: number;\n};\n\n/**\n * Calculates the percentage difference between two prices\n * @param args - Object containing input price, base price, and decimals\n * @returns The percentage difference as a string with 2 decimal places\n * @example\n * ```ts\n * const diff = calculatePriceDifferencePercentage({\n * inputPriceRaw: 1000000n,\n * basePriceRaw: 900000n,\n * decimals: 6\n * }); // Returns \"11.11\"\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\n/**\n * Formats a raw price amount with the specified number of decimal places\n * @param amount - The raw price amount as a bigint\n * @param decimals - Number of decimal places to format to\n * @returns Formatted price string with proper decimal and thousands separators\n * @example\n * ```ts\n * const formatted = formatPrice(1000000n, 6); // Returns \"1.000000\"\n * ```\n */\nexport const formatPrice = (amount: bigint, decimals: number): string => {\n\tconst formattedUnits = Number(formatUnits(amount, decimals));\n\treturn formattedUnits.toLocaleString('en-US', {\n\t\tminimumFractionDigits: 0,\n\t\tmaximumFractionDigits: decimals,\n\t});\n};\n\n/**\n * Calculates the final earnings amount after applying multiple fee percentages\n * @param amount - The raw amount as a bigint (e.g., from a blockchain transaction)\n * @param decimals - The number of decimal places for the currency (e.g., 18 for ETH, 6 for USDC)\n * @param fees - Array of fee percentages to apply (e.g., [2.5, 1.0] for 2.5% and 1% fees)\n * @returns Formatted string representing the final earnings after all fees are applied\n * @throws Will return '0' if there's an error in calculation\n * @example\n * ```ts\n * const earnings = calculateEarningsAfterFees(\n * 1000000000000000000n, // 1 ETH\n * 18, // ETH decimals\n * [2.5, 1.0] // 2.5% and 1% fees\n * ); // Returns \"0.96525\" (1 ETH after 2.5% and 1% fees)\n * ```\n */\nexport const calculateEarningsAfterFees = (\n\tamount: bigint,\n\tdecimals: number,\n\tfees: number[],\n): string => {\n\ttry {\n\t\tconst decimalAmount = Number(formatUnits(amount, decimals));\n\t\tlet earnings = dn.from(decimalAmount.toString(), decimals);\n\n\t\tfor (const fee of fees) {\n\t\t\tif (fee > 0) {\n\t\t\t\tconst feeMultiplier = dn.from((1 - fee / 100).toString(), decimals);\n\t\t\t\tearnings = dn.multiply(earnings, feeMultiplier);\n\t\t\t}\n\t\t}\n\n\t\treturn dn.format(earnings, {\n\t\t\tdigits: decimals,\n\t\t\ttrailingZeros: false,\n\t\t\tlocale: 'en-US',\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('Error calculating earnings after fees:', error);\n\t\treturn '0';\n\t}\n};\n\n/**\n * Formats a price amount with fee applied\n * @param amount - The raw price amount as a bigint\n * @param decimals - Number of decimal places for the currency\n * @param feePercentage - Fee percentage to apply (e.g., 3.5 for 3.5%)\n * @returns Formatted price string with fee applied and proper decimal/thousands separators\n * @example\n * ```ts\n * const priceWithFee = formatPriceWithFee(1000000n, 6, 3.5); // Returns \"1.035\"\n * ```\n */\nexport const formatPriceWithFee = (\n\tamount: bigint,\n\tdecimals: number,\n\tfeePercentage: number,\n): string => {\n\ttry {\n\t\tconst decimalAmount = Number(formatUnits(amount, decimals));\n\t\tconst price = dn.from(decimalAmount.toString(), decimals);\n\t\tconst feeMultiplier = dn.from(\n\t\t\t(1 + feePercentage / 100).toString(),\n\t\t\tdecimals,\n\t\t);\n\t\tconst totalPrice = dn.multiply(price, feeMultiplier);\n\n\t\treturn dn.format(totalPrice, {\n\t\t\tdigits: decimals,\n\t\t\ttrailingZeros: false,\n\t\t\tlocale: 'en-US',\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('Error formatting price with fee:', error);\n\t\treturn '0';\n\t}\n};\n","import type { Image } from '@0xsequence/design-system';\nimport type { ComponentType } from 'react';\nimport {\n\tAlienSwapLogo,\n\tBlurLogo,\n\tLooksRareLogo,\n\tMagicEdenLogo,\n\tMintifyLogo,\n\tOpenSeaLogo,\n\tSequenceLogo,\n\tX2y2Logo,\n} from '../react/ui/components/marketplace-logos';\nimport { MarketplaceKind } from '../types';\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","import type { NetworkConfig } from '@0xsequence/network';\nimport type { Chain } from 'viem';\n\nexport const networkToWagmiChain = (network: NetworkConfig): Chain => ({\n\t...network,\n\tid: Number(network.chainId),\n\tname: network.name,\n\tnativeCurrency: { ...network.nativeToken },\n\trpcUrls: {\n\t\tdefault: {\n\t\t\thttp: [network.rpcUrl],\n\t\t},\n\t\tpublic: {\n\t\t\thttp: [network.rpcUrl],\n\t\t},\n\t},\n});\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n"],"mappings":"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","names":[]}
@@ -3,12 +3,9 @@
3
3
  import {
4
4
  collectionOptions
5
5
  } from "./chunk-GBQVYNCD.js";
6
- import {
7
- marketplaceConfigOptions
8
- } from "./chunk-3II5GLHE.js";
9
6
  import {
10
7
  InfoIcon_default
11
- } from "./chunk-BCO4CYE4.js";
8
+ } from "./chunk-SJU6QZHM.js";
12
9
  import {
13
10
  SEQUENCE_MARKET_V1_ADDRESS,
14
11
  SEQUENCE_MARKET_V2_ADDRESS
@@ -16,19 +13,23 @@ import {
16
13
  import {
17
14
  compareAddress,
18
15
  getPresentableChainName
19
- } from "./chunk-Q5RKAMYF.js";
20
- import {
21
- EIP2981_ABI
22
- } from "./chunk-XX4EVWBF.js";
16
+ } from "./chunk-BGY4WXER.js";
23
17
  import {
24
18
  ERC1155_ABI
25
19
  } from "./chunk-FUM4OGOQ.js";
20
+ import {
21
+ EIP2981_ABI
22
+ } from "./chunk-XX4EVWBF.js";
26
23
  import {
27
24
  balanceOfCollectibleOptions,
28
25
  highestOfferOptions,
29
26
  listBalancesOptions,
30
- listCollectiblesOptions
31
- } from "./chunk-3JU7SQVE.js";
27
+ listCollectiblesOptions,
28
+ lowestListingOptions
29
+ } from "./chunk-4DFOSZTE.js";
30
+ import {
31
+ marketplaceConfigOptions
32
+ } from "./chunk-3II5GLHE.js";
32
33
  import {
33
34
  AddressSchema,
34
35
  CollectableIdSchema,
@@ -1490,42 +1491,19 @@ var useCountListingsForCollectible = (args) => {
1490
1491
  };
1491
1492
 
1492
1493
  // src/react/hooks/useLowestListing.tsx
1493
- import { queryOptions as queryOptions17, useQuery as useQuery21 } from "@tanstack/react-query";
1494
- import { z as z16 } from "zod";
1495
- var UseLowestListingSchema = getCollectibleLowestListingArgsSchema.omit({
1496
- contractAddress: true
1497
- }).extend({
1498
- collectionAddress: AddressSchema,
1499
- chainId: z16.number(),
1500
- query: QueryArgSchema
1501
- });
1502
- var fetchLowestListing = async (args, config) => {
1503
- const parsedArgs = UseLowestListingSchema.parse(args);
1504
- const marketplaceClient = getMarketplaceClient(parsedArgs.chainId, config);
1505
- return marketplaceClient.getCollectibleLowestListing({
1506
- ...parsedArgs,
1507
- contractAddress: parsedArgs.collectionAddress
1508
- });
1509
- };
1510
- var lowestListingOptions = (args, config) => {
1511
- return queryOptions17({
1512
- ...args.query,
1513
- queryKey: [...collectableKeys.lowestListings, args, config],
1514
- queryFn: () => fetchLowestListing(args, config)
1515
- });
1516
- };
1517
- var useLowestListing = (args) => {
1494
+ import { useQuery as useQuery21 } from "@tanstack/react-query";
1495
+ function useLowestListing(args) {
1518
1496
  const config = useConfig();
1519
1497
  return useQuery21(lowestListingOptions(args, config));
1520
- };
1498
+ }
1521
1499
 
1522
1500
  // src/react/hooks/useRoyalty.tsx
1523
1501
  import { useReadContract } from "wagmi";
1524
- import { z as z17 } from "zod";
1525
- var UseRoyaltySchema = z17.object({
1526
- chainId: z17.number(),
1502
+ import { z as z16 } from "zod";
1503
+ var UseRoyaltySchema = z16.object({
1504
+ chainId: z16.number(),
1527
1505
  collectionAddress: AddressSchema,
1528
- collectibleId: z17.string(),
1506
+ collectibleId: z16.string(),
1529
1507
  query: QueryArgSchema.optional()
1530
1508
  });
1531
1509
  var useRoyalty = (args) => {
@@ -1607,10 +1585,10 @@ var useGenerateOfferTransaction = (params) => {
1607
1585
 
1608
1586
  // src/react/hooks/useGenerateSellTransaction.tsx
1609
1587
  import { useMutation as useMutation3 } from "@tanstack/react-query";
1610
- import { z as z18 } from "zod";
1611
- var UserGeneratSellTransactionArgsSchema = z18.object({
1612
- chainId: z18.number(),
1613
- onSuccess: z18.function().args(stepSchema.array().optional()).optional()
1588
+ import { z as z17 } from "zod";
1589
+ var UserGeneratSellTransactionArgsSchema = z17.object({
1590
+ chainId: z17.number(),
1591
+ onSuccess: z17.function().args(stepSchema.array().optional()).optional()
1614
1592
  });
1615
1593
  var generateSellTransaction = async (args, config, chainId) => {
1616
1594
  const marketplaceClient = getMarketplaceClient(chainId, config);
@@ -1631,10 +1609,10 @@ var useGenerateSellTransaction = (params) => {
1631
1609
 
1632
1610
  // src/react/hooks/useGenerateCancelTransaction.tsx
1633
1611
  import { useMutation as useMutation4 } from "@tanstack/react-query";
1634
- import { z as z19 } from "zod";
1635
- var UserGenerateCancelTransactionArgsSchema = z19.object({
1636
- chainId: z19.number(),
1637
- onSuccess: z19.function().args(stepSchema.array().optional()).optional()
1612
+ import { z as z18 } from "zod";
1613
+ var UserGenerateCancelTransactionArgsSchema = z18.object({
1614
+ chainId: z18.number(),
1615
+ onSuccess: z18.function().args(stepSchema.array().optional()).optional()
1638
1616
  });
1639
1617
  var generateCancelTransaction = async (args, config, chainId) => {
1640
1618
  const marketplaceClient = getMarketplaceClient(chainId, config);
@@ -1709,16 +1687,16 @@ var useTransferTokens = () => {
1709
1687
  };
1710
1688
 
1711
1689
  // src/react/hooks/useCheckoutOptions.tsx
1712
- import { queryOptions as queryOptions18, useQuery as useQuery22 } from "@tanstack/react-query";
1690
+ import { queryOptions as queryOptions17, useQuery as useQuery22 } from "@tanstack/react-query";
1713
1691
  import { useAccount as useAccount3 } from "wagmi";
1714
- import { z as z20 } from "zod";
1715
- var UseCheckoutOptionsSchema = z20.object({
1716
- chainId: z20.number(),
1717
- orders: z20.array(
1718
- z20.object({
1692
+ import { z as z19 } from "zod";
1693
+ var UseCheckoutOptionsSchema = z19.object({
1694
+ chainId: z19.number(),
1695
+ orders: z19.array(
1696
+ z19.object({
1719
1697
  collectionAddress: AddressSchema,
1720
- orderId: z20.string(),
1721
- marketplace: z20.nativeEnum(MarketplaceKind)
1698
+ orderId: z19.string(),
1699
+ marketplace: z19.nativeEnum(MarketplaceKind)
1722
1700
  })
1723
1701
  ),
1724
1702
  query: QueryArgSchema
@@ -1737,7 +1715,7 @@ var fetchCheckoutOptions = async (args, config) => {
1737
1715
  });
1738
1716
  };
1739
1717
  var checkoutOptionsOptions = (args, config) => {
1740
- return queryOptions18({
1718
+ return queryOptions17({
1741
1719
  queryKey: ["checkoutOptions", args],
1742
1720
  queryFn: () => fetchCheckoutOptions(args, config)
1743
1721
  });
@@ -1752,9 +1730,9 @@ var useCheckoutOptions = (args) => {
1752
1730
  };
1753
1731
 
1754
1732
  // src/react/hooks/useListCollections.tsx
1755
- import { queryOptions as queryOptions19, useQuery as useQuery23 } from "@tanstack/react-query";
1756
- import { z as z21 } from "zod";
1757
- var UseListCollectionsSchema = z21.object({
1733
+ import { queryOptions as queryOptions18, useQuery as useQuery23 } from "@tanstack/react-query";
1734
+ import { z as z20 } from "zod";
1735
+ var UseListCollectionsSchema = z20.object({
1758
1736
  query: QueryArgSchema.optional().default({})
1759
1737
  });
1760
1738
  var fetchListCollections = async ({ marketplaceConfig }, config) => {
@@ -1780,7 +1758,7 @@ var fetchListCollections = async ({ marketplaceConfig }, config) => {
1780
1758
  return results.flat();
1781
1759
  };
1782
1760
  var listCollectionsOptions = (args, config) => {
1783
- return queryOptions19({
1761
+ return queryOptions18({
1784
1762
  ...args.query,
1785
1763
  queryKey: [...collectionKeys.list],
1786
1764
  queryFn: () => fetchListCollections(args, config)
@@ -2471,7 +2449,7 @@ var useCancelOrder = ({
2471
2449
  };
2472
2450
 
2473
2451
  // src/react/hooks/useCollectionDetails.tsx
2474
- import { queryOptions as queryOptions20, useQuery as useQuery25 } from "@tanstack/react-query";
2452
+ import { queryOptions as queryOptions19, useQuery as useQuery25 } from "@tanstack/react-query";
2475
2453
  var fetchCollectionDetails = async (args, marketplaceClient) => {
2476
2454
  const { collection } = await marketplaceClient.getCollectionDetail({
2477
2455
  contractAddress: args.collectionAddress
@@ -2480,7 +2458,7 @@ var fetchCollectionDetails = async (args, marketplaceClient) => {
2480
2458
  };
2481
2459
  var collectionDetailsOptions = (args, config) => {
2482
2460
  const marketplaceClient = getMarketplaceClient(args.chainId, config);
2483
- return queryOptions20({
2461
+ return queryOptions19({
2484
2462
  queryKey: ["collectionDetails", args],
2485
2463
  queryFn: () => fetchCollectionDetails(args, marketplaceClient)
2486
2464
  });
@@ -2491,7 +2469,7 @@ var useCollectionDetails = (args) => {
2491
2469
  };
2492
2470
 
2493
2471
  // src/react/hooks/useCollectionDetailsPolling.tsx
2494
- import { queryOptions as queryOptions21, useQuery as useQuery26 } from "@tanstack/react-query";
2472
+ import { queryOptions as queryOptions20, useQuery as useQuery26 } from "@tanstack/react-query";
2495
2473
  var INITIAL_POLLING_INTERVAL = 2e3;
2496
2474
  var MAX_POLLING_INTERVAL = 3e4;
2497
2475
  var MAX_ATTEMPTS = 30;
@@ -2504,7 +2482,7 @@ var isTerminalState = (status) => {
2504
2482
  ].includes(status);
2505
2483
  };
2506
2484
  var collectionDetailsPollingOptions = (args, config) => {
2507
- return queryOptions21({
2485
+ return queryOptions20({
2508
2486
  ...collectionDetailsOptions(args, config),
2509
2487
  refetchInterval: (query) => {
2510
2488
  const data = query.state.data;
@@ -2576,7 +2554,6 @@ export {
2576
2554
  useListListingsForCollectible,
2577
2555
  countListingsForCollectibleOptions,
2578
2556
  useCountListingsForCollectible,
2579
- lowestListingOptions,
2580
2557
  useLowestListing,
2581
2558
  useRoyalty,
2582
2559
  dateToUnixTime,
@@ -2605,4 +2582,4 @@ export {
2605
2582
  collectionDetailsPollingOptions,
2606
2583
  useCollectionDetailsPolling
2607
2584
  };
2608
- //# sourceMappingURL=chunk-X3QNSQER.js.map
2585
+ //# sourceMappingURL=chunk-F6CUGMI4.js.map