@0xsequence/marketplace-sdk 0.8.12 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/main.ts +63 -0
- package/.storybook/preview.ts +24 -0
- package/.storybook/vitest.setup.ts +6 -0
- package/CHANGELOG.md +158 -21
- package/dist/{CartIcon-Bll1rbxv.js → CalendarIcon-CqsuAuCm.js} +30 -77
- package/dist/CalendarIcon-CqsuAuCm.js.map +1 -0
- package/dist/{types-BIJOaL4j.d.ts → CollectibleCard-Dd-CG6dE.d.ts} +11 -7
- package/dist/InfoIcon-v0w_Lu7t.js +53 -0
- package/dist/InfoIcon-v0w_Lu7t.js.map +1 -0
- package/dist/_internal-C75gOSNo.js +14 -0
- package/dist/_internal-C75gOSNo.js.map +1 -0
- package/dist/actionModal-CMUeVsFX.js +116 -0
- package/dist/actionModal-CMUeVsFX.js.map +1 -0
- package/dist/{alien_swap-B_76IMma.js → alien_swap-CYv6YlOF.js} +1 -1
- package/dist/{alien_swap-B_76IMma.js.map → alien_swap-CYv6YlOF.js.map} +1 -1
- package/dist/{api-1KFxYh7o.js → api-BiMGqWdz.js} +79 -87
- package/dist/api-BiMGqWdz.js.map +1 -0
- package/dist/{aqua-xyz-CMN_TFY5.js → aqua-xyz-Bzn5baeH.js} +1 -1
- package/dist/{aqua-xyz-CMN_TFY5.js.map → aqua-xyz-Bzn5baeH.js.map} +1 -1
- package/dist/{aura-Cye_TuHj.js → aura-DzIWh8WT.js} +1 -1
- package/dist/{aura-Cye_TuHj.js.map → aura-DzIWh8WT.js.map} +1 -1
- package/dist/base-DqaJPvfN.js +22 -0
- package/dist/base-DqaJPvfN.js.map +1 -0
- package/dist/{blur-DWDMyMpK.js → blur-DSH-Cbpj.js} +1 -1
- package/dist/{blur-DWDMyMpK.js.map → blur-DSH-Cbpj.js.map} +1 -1
- package/dist/{builder-api-BQvzykoU.js → builder-api-BFuZNOaN.js} +2 -2
- package/dist/{builder-api-BQvzykoU.js.map → builder-api-BFuZNOaN.js.map} +1 -1
- package/dist/{builder.gen-CxP9NT1p.js → builder.gen-B9wR2nvF.js} +1 -1
- package/dist/builder.gen-B9wR2nvF.js.map +1 -0
- package/dist/{coinbase-ByA_XRB0.js → coinbase-Df8URNxq.js} +1 -1
- package/dist/{coinbase-ByA_XRB0.js.map → coinbase-Df8URNxq.js.map} +1 -1
- package/dist/{sdk-config-DJzxVPld.d.ts → create-config-DKJ-F0jc.d.ts} +458 -86
- package/dist/{wagmi-DRctYEk6.js → create-config-fQ-jbJD1.js} +33 -16
- package/dist/create-config-fQ-jbJD1.js.map +1 -0
- package/dist/{element-b77CyXIZ.js → element-Cx6uJu5N.js} +1 -1
- package/dist/{element-b77CyXIZ.js.map → element-Cx6uJu5N.js.map} +1 -1
- package/dist/{foundation-DbOrKP9Y.js → foundation-D6U4aRLN.js} +1 -1
- package/dist/{foundation-DbOrKP9Y.js.map → foundation-D6U4aRLN.js.map} +1 -1
- package/dist/get-provider-CYYHfrlg.js +10 -0
- package/dist/get-provider-CYYHfrlg.js.map +1 -0
- package/dist/get-query-client-D19vvfJo.js +23 -0
- package/dist/get-query-client-D19vvfJo.js.map +1 -0
- package/dist/hooks-4pxIbLbM.js +4044 -0
- package/dist/hooks-4pxIbLbM.js.map +1 -0
- package/dist/{index-1bezgsFq.d.ts → index-136YrWDH.d.ts} +929 -255
- package/dist/{index-D5v5iluA.d.ts → index-BAhaEfqY.d.ts} +1 -1
- package/dist/index-BKBin-rq.d.ts +979 -0
- package/dist/index-BUWB_RXp.d.ts +3144 -0
- package/dist/{index-Cl7PQOGu.d.ts → index-BhVFc2rX.d.ts} +28 -25
- package/dist/{index-DXMfTZ1F.d.ts → index-C5aqo8xu.d.ts} +1 -1
- package/dist/{index-BIMIpDiI.d.ts → index-CKrYP7ot.d.ts} +74 -103
- package/dist/{index-BEYefG1G.d.ts → index-CUwMH7Ht.d.ts} +5 -5
- package/dist/{index-BjIwVzc4.d.ts → index-Cu70Lw-w.d.ts} +238 -238
- package/dist/index.css +427 -1
- package/dist/index.d.ts +8 -10
- package/dist/index.js +15 -11
- package/dist/{looks-rare-C1VqNcSM.js → looks-rare-ChBRBY-p.js} +1 -1
- package/dist/{looks-rare-C1VqNcSM.js.map → looks-rare-ChBRBY-p.js.map} +1 -1
- package/dist/{magic-eden-ea_AGCZr.js → magic-eden-D5U7N1xL.js} +1 -1
- package/dist/{magic-eden-ea_AGCZr.js.map → magic-eden-D5U7N1xL.js.map} +1 -1
- package/dist/{manifold-8y8J2sjT.js → manifold-CtLF52zU.js} +1 -1
- package/dist/{manifold-8y8J2sjT.js.map → manifold-CtLF52zU.js.map} +1 -1
- package/dist/{marketplace-nwnZv9Cb.js → marketplace-DmFiyBoS.js} +1 -1
- package/dist/{marketplace-nwnZv9Cb.js.map → marketplace-DmFiyBoS.js.map} +1 -1
- package/dist/{marketplace-logos-CSeGcPW4.js → marketplace-logos-Cd6W-qOq.js} +21 -21
- package/dist/{marketplace-logos-CSeGcPW4.js.map → marketplace-logos-Cd6W-qOq.js.map} +1 -1
- package/dist/{marketplace.gen-Dqk8vRmD.js → marketplace.gen-HpnpL5xU.js} +12 -3
- package/dist/marketplace.gen-HpnpL5xU.js.map +1 -0
- package/dist/{marketplaceConfig-D2MYFqll.js → marketplaceConfig-GQTTmihy.js} +3 -3
- package/dist/marketplaceConfig-GQTTmihy.js.map +1 -0
- package/dist/{mintify-LA68TzWg.js → mintify-Bi3Bce68.js} +1 -1
- package/dist/{mintify-LA68TzWg.js.map → mintify-Bi3Bce68.js.map} +1 -1
- package/dist/network-CGD0oKtS.js +15 -0
- package/dist/network-CGD0oKtS.js.map +1 -0
- package/dist/{nftx-D3Tc8nzd.js → nftx-BDQZjtkX.js} +1 -1
- package/dist/{nftx-D3Tc8nzd.js.map → nftx-BDQZjtkX.js.map} +1 -1
- package/dist/{okx-hbqg6oIJ.js → okx-D4meadLe.js} +1 -1
- package/dist/{okx-hbqg6oIJ.js.map → okx-D4meadLe.js.map} +1 -1
- package/dist/{open-sea-BccuK8-t.js → open-sea-DN0hgfVw.js} +1 -1
- package/dist/{open-sea-BccuK8-t.js.map → open-sea-DN0hgfVw.js.map} +1 -1
- package/dist/options-BBBR8u_4.js +0 -0
- package/dist/{primary-sale-Cw95phYC.js → primary-sale-CmWxSfFQ.js} +279 -279
- package/dist/primary-sale-CmWxSfFQ.js.map +1 -0
- package/dist/provider-DPGUA10G.js +125 -0
- package/dist/provider-DPGUA10G.js.map +1 -0
- package/dist/queries-Ce_2othB.js +757 -0
- package/dist/queries-Ce_2othB.js.map +1 -0
- package/dist/{rarible-BgTwwj9g.js → rarible-B0xlD88A.js} +1 -1
- package/dist/{rarible-BgTwwj9g.js.map → rarible-B0xlD88A.js.map} +1 -1
- package/dist/react/_internal/api/index.d.ts +2 -4
- package/dist/react/_internal/api/index.js +9 -6
- package/dist/react/_internal/databeat/index.d.ts +2 -73
- package/dist/react/_internal/databeat/index.js +4 -21
- package/dist/react/_internal/index.d.ts +2 -7
- package/dist/react/_internal/index.js +13 -8
- package/dist/react/_internal/wagmi/index.d.ts +2 -4
- package/dist/react/_internal/wagmi/index.js +6 -4
- package/dist/react/hooks/index.d.ts +13 -17
- package/dist/react/hooks/index.js +25 -21
- package/dist/react/hooks/options/index.d.ts +3 -5
- package/dist/react/hooks/options/index.js +15 -10
- package/dist/react/index.d.ts +13 -40
- package/dist/react/index.js +30 -21
- package/dist/react/queries/index.d.ts +9 -8
- package/dist/react/queries/index.js +22 -17
- package/dist/react/ssr/index.d.ts +7 -9
- package/dist/react/ssr/index.js +13 -8
- package/dist/react/ssr/index.js.map +1 -1
- package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +3 -9
- package/dist/react/ui/components/marketplace-collectible-card/index.js +29 -20
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -7
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +13 -8
- package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
- package/dist/react/ui/components/marketplace-logos/index.js +1 -1
- package/dist/react/ui/icons/index.js +14 -10
- package/dist/react/ui/index.d.ts +3 -9
- package/dist/react/ui/index.js +29 -20
- package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +5 -5
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +25 -20
- package/dist/{react-BG7o4PId.js → react-DP0M2Wfm.js} +4919 -7839
- package/dist/react-DP0M2Wfm.js.map +1 -0
- package/dist/{react-BbHBl6gg.css → react-DeDyTgo7.css} +1 -1
- package/dist/{react-BbHBl6gg.css.map → react-DeDyTgo7.css.map} +1 -1
- package/dist/{sequence-Do3kzb4J.js → sequence-BIrOVRXO.js} +1 -1
- package/dist/{sequence-Do3kzb4J.js.map → sequence-BIrOVRXO.js.map} +1 -1
- package/dist/{sudo-swap-B6vPKxBz.js → sudo-swap-BPMon-M5.js} +1 -1
- package/dist/{sudo-swap-B6vPKxBz.js.map → sudo-swap-BPMon-M5.js.map} +1 -1
- package/dist/{super-rare-eCm1SE6O.js → super-rare-kPN6Ua8i.js} +1 -1
- package/dist/{super-rare-eCm1SE6O.js.map → super-rare-kPN6Ua8i.js.map} +1 -1
- package/dist/{token-CO5llIla.js → token-CHSBPYVG.js} +1540 -761
- package/dist/token-CHSBPYVG.js.map +1 -0
- package/dist/{transaction-CcVViHEL.js → transaction-CnctdNzS.js} +3 -21
- package/dist/transaction-CnctdNzS.js.map +1 -0
- package/dist/types/index.d.ts +2 -3
- package/dist/types/index.js +3 -3
- package/dist/{types-DwWE6xOF.js → types-Yw2ywj6j.js} +1 -1
- package/dist/types-Yw2ywj6j.js.map +1 -0
- package/dist/utils/abi/index.d.ts +5 -5
- package/dist/utils/abi/index.js +5 -5
- package/dist/utils/abi/marketplace/index.d.ts +1 -1
- package/dist/utils/abi/marketplace/index.js +1 -1
- package/dist/utils/abi/primary-sale/index.d.ts +1 -1
- package/dist/utils/abi/primary-sale/index.js +1 -1
- package/dist/utils/abi/token/index.d.ts +2 -2
- package/dist/utils/abi/token/index.js +2 -2
- package/dist/utils/index.d.ts +7 -8
- package/dist/utils/index.js +13 -10
- package/dist/{utils-BFdxaToy.js → utils-9RXDgcBl.js} +86 -93
- package/dist/utils-9RXDgcBl.js.map +1 -0
- package/dist/{utils-Cat9_pef.js → utils-DjVJ9tov.js} +5 -6
- package/dist/utils-DjVJ9tov.js.map +1 -0
- package/dist/wagmi-Do_KW5ke.js +0 -0
- package/dist/{x2y2-DD17tT91.js → x2y2-BLz-_Q2O.js} +1 -1
- package/dist/{x2y2-DD17tT91.js.map → x2y2-BLz-_Q2O.js.map} +1 -1
- package/dist/{zora-BpSG9UzS.js → zora-UGhKs-aL.js} +1 -1
- package/dist/{zora-BpSG9UzS.js.map → zora-UGhKs-aL.js.map} +1 -1
- package/eslint/use-client.js +0 -6
- package/eslint.config.mjs +4 -0
- package/package.json +47 -35
- package/postcss.config.mjs +6 -0
- package/src/index.css +5 -4
- package/src/index.ts +2 -1
- package/src/react/__tests__/provider.test.tsx +4 -3
- package/src/react/_internal/api/__mocks__/builder.msw.ts +5 -3
- package/src/react/_internal/api/__mocks__/indexer.msw.ts +24 -8
- package/src/react/_internal/api/__mocks__/laos.msw.ts +387 -0
- package/src/react/_internal/api/__mocks__/marketplace.msw.ts +6 -6
- package/src/react/_internal/api/__mocks__/metadata.msw.ts +1 -1
- package/src/react/_internal/api/__tests__/laos-api.test.ts +756 -0
- package/src/react/_internal/api/builder.gen.ts +6 -6
- package/src/react/_internal/api/get-query-client.ts +2 -2
- package/src/react/_internal/api/index.ts +2 -2
- package/src/react/_internal/api/laos-api.ts +3 -0
- package/src/react/_internal/api/marketplace.gen.ts +43 -3
- package/src/react/_internal/api/query-keys.ts +21 -6
- package/src/react/_internal/api/services.ts +30 -45
- package/src/react/_internal/databeat/index.ts +15 -14
- package/src/react/_internal/databeat/types.ts +22 -0
- package/src/react/_internal/databeat/utils.ts +26 -0
- package/src/react/_internal/index.ts +1 -1
- package/src/react/_internal/types.ts +10 -23
- package/src/react/_internal/utils.ts +4 -5
- package/src/react/_internal/wagmi/create-config.ts +43 -19
- package/src/react/_internal/wagmi/get-connectors.ts +9 -7
- package/src/react/_internal/wallet/__tests__/wallet.test.ts +1 -1
- package/src/react/_internal/wallet/wallet.ts +22 -22
- package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +20 -0
- package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +12 -2
- package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +1 -1
- package/src/react/hooks/__tests__/useBalanceOfCollectible.laos.test.tsx +367 -0
- package/src/react/hooks/__tests__/useBalanceOfCollectible.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCancelOrder.test.tsx +4 -4
- package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCheckoutOptions.test.tsx +158 -0
- package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +42 -65
- package/src/react/hooks/__tests__/useCollectible.test.tsx +14 -16
- package/src/react/hooks/__tests__/useCollection.test.tsx +4 -4
- package/src/react/hooks/__tests__/useCollectionBalanceDetails.test.tsx +16 -25
- package/src/react/hooks/__tests__/useCollectionDetails.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +12 -4
- package/src/react/hooks/__tests__/useComparePrices.test.tsx +7 -6
- package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +4 -4
- package/src/react/hooks/__tests__/useCountListingsForCollectible.test.tsx +2 -2
- package/src/react/hooks/__tests__/useCountOfCollectables.test.tsx +5 -5
- package/src/react/hooks/__tests__/useCountOffersForCollectible.test.tsx +2 -2
- package/src/react/hooks/__tests__/useCurrency.test.tsx +5 -3
- package/src/react/hooks/__tests__/useCurrencyBalance.test.tsx +7 -3
- package/src/react/hooks/__tests__/useFilters.test.tsx +3 -3
- package/src/react/hooks/__tests__/useFloorOrder.test.tsx +4 -4
- package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +3 -3
- package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +1 -1
- package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +1 -1
- package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +1 -1
- package/src/react/hooks/__tests__/useGetTokenRanges.test.tsx +111 -0
- package/src/react/hooks/__tests__/useHighestOffer.test.tsx +4 -4
- package/src/react/hooks/__tests__/useInventory.test.tsx +1 -1
- package/src/react/hooks/__tests__/useListCollectibleActivities.test.tsx +11 -13
- package/src/react/hooks/__tests__/useListCollectibles.test.tsx +5 -5
- package/src/react/hooks/__tests__/useListCollectiblesPaginated.test.tsx +10 -15
- package/src/react/hooks/__tests__/useListCollectionActivities.test.tsx +13 -15
- package/src/react/hooks/__tests__/useListCollections.test.tsx +3 -3
- package/src/react/hooks/__tests__/useListListingsForCollectible.test.tsx +3 -2
- package/src/react/hooks/__tests__/useListMarketCardData.test.tsx +301 -0
- package/src/react/hooks/__tests__/useListOffersForCollectible.test.tsx +1 -1
- package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +137 -0
- package/src/react/hooks/__tests__/useLowestListing.test.tsx +1 -1
- package/src/react/hooks/__tests__/useMarketCurrencies.test.tsx +1 -1
- package/src/react/hooks/__tests__/useRoyalty.test.tsx +0 -23
- package/src/react/hooks/__tests__/useTransferTokens.test.tsx +469 -0
- package/src/react/hooks/index.ts +29 -24
- package/src/react/hooks/options/index.ts +0 -1
- package/src/react/hooks/useAutoSelectFeeOption.tsx +1 -1
- package/src/react/hooks/useBalanceOfCollectible.tsx +1 -1
- package/src/react/hooks/useCancelTransactionSteps.tsx +2 -2
- package/src/react/hooks/useCheckoutOptions.tsx +84 -54
- package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +98 -57
- package/src/react/hooks/useCollectible.tsx +64 -49
- package/src/react/hooks/useCollection.tsx +60 -11
- package/src/react/hooks/useCollectionBalanceDetails.tsx +93 -73
- package/src/react/hooks/useCollectionDetails.ts +69 -0
- package/src/react/hooks/useCollectionDetailsPolling.tsx +7 -3
- package/src/react/hooks/useComparePrices.tsx +91 -86
- package/src/react/hooks/useConvertPriceToUSD.tsx +83 -86
- package/src/react/hooks/useCountListingsForCollectible.tsx +64 -53
- package/src/react/hooks/useCountOfCollectables.tsx +60 -69
- package/src/react/hooks/useCountOfPrimarySaleItems.tsx +13 -0
- package/src/react/hooks/useCountOffersForCollectible.tsx +64 -53
- package/src/react/hooks/useCurrency.tsx +56 -64
- package/src/react/hooks/useCurrencyBalance.tsx +132 -46
- package/src/react/hooks/useERC721SaleMintedTokens.tsx +8 -5
- package/src/react/hooks/useFilterState.tsx +1 -2
- package/src/react/hooks/useFilters.tsx +154 -111
- package/src/react/hooks/useFloorOrder.tsx +65 -40
- package/src/react/hooks/useGenerateCancelTransaction.tsx +5 -10
- package/src/react/hooks/useGenerateListingTransaction.tsx +1 -1
- package/src/react/hooks/useGenerateOfferTransaction.tsx +1 -1
- package/src/react/hooks/useGenerateSellTransaction.tsx +5 -10
- package/src/react/hooks/useGetCountOfPrimarySaleItems.tsx +48 -0
- package/src/react/hooks/useGetReceiptFromHash.tsx +32 -3
- package/src/react/hooks/useGetTokenRanges.tsx +92 -0
- package/src/react/hooks/useHighestOffer.tsx +68 -4
- package/src/react/hooks/useInventory.tsx +1 -1
- package/src/react/hooks/useList1155ShopCardData.tsx +57 -82
- package/src/react/hooks/useList721ShopCardData.tsx +98 -63
- package/src/react/hooks/useListBalances.tsx +1 -1
- package/src/react/hooks/useListCollectibleActivities.tsx +89 -50
- package/src/react/hooks/useListCollectibles.tsx +81 -16
- package/src/react/hooks/useListCollectiblesPaginated.tsx +96 -66
- package/src/react/hooks/useListCollectionActivities.tsx +84 -50
- package/src/react/hooks/useListCollections.tsx +71 -17
- package/src/react/hooks/useListListingsForCollectible.tsx +90 -50
- package/src/react/hooks/useListMarketCardData.tsx +3 -2
- package/src/react/hooks/useListOffersForCollectible.tsx +9 -14
- package/src/react/hooks/useListPrimarySaleItems.tsx +66 -0
- package/src/react/hooks/useListShopCardData.tsx +70 -0
- package/src/react/hooks/useListTokenMetadata.ts +64 -12
- package/src/react/hooks/useListTokenMetadata.tsx +73 -0
- package/src/react/hooks/useLowestListing.tsx +68 -4
- package/src/react/hooks/useMarketCurrencies.tsx +62 -5
- package/src/react/hooks/useOpenConnectModal.tsx +9 -0
- package/src/react/hooks/useRoyalty.tsx +57 -13
- package/src/react/hooks/useShopCollectibleSaleData.tsx +349 -0
- package/src/react/hooks/useTokenSaleDetailsBatch.tsx +3 -7
- package/src/react/hooks/useTokenSupplies.ts +81 -0
- package/src/react/hooks/useTransferTokens.tsx +2 -2
- package/src/react/hooks/util/optimisticCancelUpdates.ts +5 -7
- package/src/react/index.ts +5 -3
- package/src/react/provider.tsx +73 -9
- package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +123 -0
- package/src/react/queries/__tests__/inventory.laos.test.ts +496 -0
- package/src/react/queries/balanceOfCollectible.ts +8 -5
- package/src/react/queries/checkoutOptions.ts +85 -0
- package/src/react/queries/checkoutOptionsSalesContract.ts +89 -0
- package/src/react/queries/collectible.ts +66 -0
- package/src/react/queries/collection.ts +55 -0
- package/src/react/queries/collectionBalanceDetails.ts +92 -0
- package/src/react/queries/collectionDetails.ts +64 -0
- package/src/react/queries/comparePrices.ts +108 -0
- package/src/react/queries/convertPriceToUSD.ts +92 -0
- package/src/react/queries/countListingsForCollectible.ts +73 -0
- package/src/react/queries/countOfCollectables.ts +83 -0
- package/src/react/queries/countOfPrimarySaleItems.ts +48 -0
- package/src/react/queries/countOffersForCollectible.ts +73 -0
- package/src/react/queries/currency.ts +83 -0
- package/src/react/queries/filters.ts +138 -0
- package/src/react/queries/floorOrder.ts +63 -0
- package/src/react/queries/getTokenRanges.ts +62 -0
- package/src/react/queries/highestOffer.ts +46 -40
- package/src/react/queries/index.ts +10 -4
- package/src/react/queries/inventory.ts +10 -4
- package/src/react/queries/listBalances.ts +5 -4
- package/src/react/queries/listCollectibleActivities.ts +97 -0
- package/src/react/queries/listCollectibles.ts +67 -50
- package/src/react/queries/listCollectiblesPaginated.ts +87 -0
- package/src/react/queries/listCollectionActivities.ts +95 -0
- package/src/react/queries/listCollections.ts +53 -10
- package/src/react/queries/listListingsForCollectible.ts +82 -0
- package/src/react/queries/listTokenMetadata.ts +47 -23
- package/src/react/queries/lowestListing.ts +46 -31
- package/src/react/queries/marketCurrencies.ts +42 -29
- package/src/react/queries/marketplaceConfig.ts +4 -4
- package/src/react/queries/primarySaleItems.ts +85 -0
- package/src/react/queries/primarySaleItemsCount.ts +64 -0
- package/src/react/queries/tokenSupplies.ts +93 -0
- package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +12 -2
- package/src/react/ssr/create-ssr-client.ts +1 -1
- package/src/react/types/query.ts +34 -0
- package/src/react/ui/components/ModelViewer.tsx +1 -1
- package/src/react/ui/components/_internals/action-button/ActionButton.tsx +66 -66
- package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +22 -4
- package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +14 -8
- package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +5 -4
- package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +3 -0
- package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +4 -4
- package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +20 -18
- package/src/react/ui/components/_internals/action-button/store.ts +72 -34
- package/src/react/ui/components/_internals/custom-select/CustomSelect.stories.tsx +582 -0
- package/src/react/ui/components/_internals/pill/Pill.stories.tsx +83 -0
- package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +1 -1
- package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +12 -5
- package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -4
- package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +3 -0
- package/src/react/ui/components/marketplace-collectible-card/index.ts +1 -1
- package/src/react/ui/components/marketplace-collectible-card/types.ts +11 -7
- package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +4 -7
- package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +3 -2
- package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +7 -6
- package/src/react/ui/components/marketplace-logos/marketplace-logos.stories.tsx +199 -0
- package/src/react/ui/components/marketplace-logos/marketplace-logos.tsx +1 -1
- package/src/react/ui/components/media/Media.stories.tsx +642 -0
- package/src/react/ui/components/media/Media.tsx +29 -20
- package/src/react/ui/components/media/types.ts +6 -0
- package/src/react/ui/index.ts +8 -10
- package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +15 -0
- package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +100 -87
- package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +11 -5
- package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +10 -2
- package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +17 -11
- package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +4 -1
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +1 -1
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +30 -27
- package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +3 -3
- package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +11 -2
- package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +2 -2
- package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +10 -3
- package/src/react/ui/modals/BuyModal/index.tsx +9 -1
- package/src/react/ui/modals/BuyModal/store.ts +26 -0
- package/src/react/ui/modals/CreateListingModal/Modal.tsx +28 -11
- package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +2 -2
- package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +0 -1
- package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +2 -2
- package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +7 -6
- package/src/react/ui/modals/CreateListingModal/index.tsx +1 -1
- package/src/react/ui/modals/CreateListingModal/store.ts +3 -3
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +31 -14
- package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +0 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +7 -7
- package/src/react/ui/modals/MakeOfferModal/index.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/store.ts +3 -3
- package/src/react/ui/modals/SellModal/Modal.tsx +14 -11
- package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +6 -4
- package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +1 -1
- package/src/react/ui/modals/SellModal/hooks/useSell.tsx +0 -1
- package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +6 -6
- package/src/react/ui/modals/SellModal/store.ts +3 -3
- package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +1 -1
- package/src/react/ui/modals/TransferModal/__tests__/__snapshots__/store.test.ts.snap +17 -0
- package/src/react/ui/modals/TransferModal/__tests__/store.test.ts +366 -0
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +402 -0
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +52 -50
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +39 -47
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx +9 -8
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +33 -37
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +19 -10
- package/src/react/ui/modals/TransferModal/index.tsx +28 -31
- package/src/react/ui/modals/TransferModal/messages.ts +1 -1
- package/src/react/ui/modals/TransferModal/store.ts +122 -0
- package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +1 -1
- package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +2 -4
- package/src/react/ui/modals/_internal/components/calendar/index.tsx +0 -1
- package/src/react/ui/modals/_internal/components/currencyImage/index.tsx +10 -14
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +6 -3
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +23 -18
- package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +10 -10
- package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +6 -6
- package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +4 -4
- package/src/react/ui/modals/_internal/components/priceInput/__tests__/PriceInput.test.tsx +13 -5
- package/src/react/ui/modals/_internal/components/priceInput/index.tsx +41 -26
- package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +68 -59
- package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +23 -17
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +340 -41
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/BalanceIndicator.tsx +1 -2
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +95 -101
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts +72 -14
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +29 -14
- package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +2 -2
- package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
- package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +88 -89
- package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +37 -11
- package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +0 -1
- package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +32 -20
- package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +92 -63
- package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +44 -45
- package/src/react/ui/modals/_internal/types.ts +2 -2
- package/src/react/ui/modals/modal-provider.tsx +2 -3
- package/src/types/api-types.ts +36 -36
- package/src/types/buyModalErrors.ts +1 -1
- package/src/types/index.ts +5 -5
- package/src/types/new-marketplace-types.ts +1 -1
- package/src/types/sdk-config.ts +8 -2
- package/src/types/types.ts +1 -0
- package/src/types/waas-types.ts +1 -1
- package/src/utils/abi/index.ts +1 -1
- package/src/utils/abi/primary-sale/index.ts +1 -1
- package/src/utils/abi/token/index.ts +2 -1
- package/src/utils/decode/erc20.ts +1 -1
- package/src/utils/index.ts +3 -3
- package/src/utils/network.ts +15 -0
- package/test/const.ts +3 -1
- package/test/mocks/wallet.ts +1 -1
- package/test/test-utils.tsx +5 -4
- package/vitest.shims.d.ts +2 -0
- package/vitest.storybook.config.js +33 -0
- package/.changeset/fluffy-jokes-lay.md +0 -5
- package/.changeset/wise-bugs-boil.md +0 -8
- package/dist/CartIcon-Bll1rbxv.js.map +0 -1
- package/dist/CollectibleCard-CLQTl0_6.d.ts +0 -8
- package/dist/_internal-69NEWNUE.js +0 -34
- package/dist/_internal-69NEWNUE.js.map +0 -1
- package/dist/api-1KFxYh7o.js.map +0 -1
- package/dist/builder-api-DoK3907S.d.ts +0 -12
- package/dist/builder.gen-CxP9NT1p.js.map +0 -1
- package/dist/index-4-kfOFdx.d.ts +0 -22
- package/dist/index-BHiSG-Yi.d.ts +0 -312
- package/dist/index-BQW0PUkQ.d.ts +0 -3973
- package/dist/index-BfH21xmk.d.ts +0 -117
- package/dist/index-CN8puQQJ.d.ts +0 -24
- package/dist/index-DafWjEb4.d.ts +0 -65
- package/dist/marketplace.gen-Dqk8vRmD.js.map +0 -1
- package/dist/marketplaceConfig-D2MYFqll.js.map +0 -1
- package/dist/options-DCi6_23w.js +0 -34
- package/dist/options-DCi6_23w.js.map +0 -1
- package/dist/primary-sale-Cw95phYC.js.map +0 -1
- package/dist/queries-DPvwtnO7.js +0 -486
- package/dist/queries-DPvwtnO7.js.map +0 -1
- package/dist/react-BG7o4PId.js.map +0 -1
- package/dist/token-CO5llIla.js.map +0 -1
- package/dist/transaction-CcVViHEL.js.map +0 -1
- package/dist/types-DwWE6xOF.js.map +0 -1
- package/dist/useCollection-C-mclKU0.d.ts +0 -66
- package/dist/utils-BFdxaToy.js.map +0 -1
- package/dist/utils-Cat9_pef.js.map +0 -1
- package/dist/wagmi-DRctYEk6.js.map +0 -1
- package/src/react/_internal/api/zod-schema.ts +0 -678
- package/src/react/hooks/options/collectionOptions.ts +0 -41
- package/src/react/hooks/useCollectionDetails.tsx +0 -50
- package/src/react/hooks/useGetTokenSuppliesMap.ts +0 -33
- package/src/react/hooks/useListPrimarySaleItems.ts +0 -42
- package/src/react/queries/getTokenSupplies.ts +0 -38
- package/src/react/ui/modals/TransferModal/_store.ts +0 -72
- package/src/react/ui/modals/_internal/stores/accountModal.ts +0 -3
- package/tsconfig.tsbuildinfo +0 -1
- /package/dist/{abi-BKyRjVcZ.js → abi-BMvgNbKQ.js} +0 -0
- /package/dist/{index-C39K_8SG.d.ts → index-CD2bj_xW.d.ts} +0 -0
- /package/dist/{index-ij9f8GAA.d.ts → index-DvpBZgor.d.ts} +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { GetTokenMetadataArgs } from '@0xsequence/metadata';
|
|
2
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
3
|
+
import type { SdkConfig } from '../../types';
|
|
4
|
+
import { getMetadataClient, type ValuesOptional } from '../_internal';
|
|
5
|
+
import { collectableKeys } from '../_internal/api/query-keys';
|
|
6
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
7
|
+
|
|
8
|
+
export interface FetchCollectibleParams
|
|
9
|
+
extends Omit<
|
|
10
|
+
GetTokenMetadataArgs,
|
|
11
|
+
'chainID' | 'contractAddress' | 'tokenIDs'
|
|
12
|
+
> {
|
|
13
|
+
chainId: number;
|
|
14
|
+
collectionAddress: string;
|
|
15
|
+
collectibleId: string;
|
|
16
|
+
config: SdkConfig;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Fetches collectible metadata from the metadata API
|
|
21
|
+
*/
|
|
22
|
+
export async function fetchCollectible(params: FetchCollectibleParams) {
|
|
23
|
+
const { collectionAddress, collectibleId, chainId, config } = params;
|
|
24
|
+
|
|
25
|
+
const metadataClient = getMetadataClient(config);
|
|
26
|
+
|
|
27
|
+
const apiArgs: GetTokenMetadataArgs = {
|
|
28
|
+
contractAddress: collectionAddress,
|
|
29
|
+
chainID: String(chainId),
|
|
30
|
+
tokenIDs: [collectibleId],
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const result = await metadataClient.getTokenMetadata(apiArgs);
|
|
34
|
+
return result.tokenMetadata[0];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export type CollectibleQueryOptions = ValuesOptional<FetchCollectibleParams> & {
|
|
38
|
+
query?: StandardQueryOptions;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export function collectibleQueryOptions(params: CollectibleQueryOptions) {
|
|
42
|
+
const enabled = Boolean(
|
|
43
|
+
params.collectionAddress &&
|
|
44
|
+
params.collectibleId &&
|
|
45
|
+
params.chainId &&
|
|
46
|
+
params.config &&
|
|
47
|
+
(params.query?.enabled ?? true),
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
return queryOptions({
|
|
51
|
+
queryKey: [...collectableKeys.details, params],
|
|
52
|
+
queryFn: () =>
|
|
53
|
+
fetchCollectible({
|
|
54
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
55
|
+
chainId: params.chainId!,
|
|
56
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
57
|
+
collectionAddress: params.collectionAddress!,
|
|
58
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
59
|
+
collectibleId: params.collectibleId!,
|
|
60
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
61
|
+
config: params.config!,
|
|
62
|
+
}),
|
|
63
|
+
...params.query,
|
|
64
|
+
enabled,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { SdkConfig } from '../../types';
|
|
3
|
+
import { getMetadataClient, type ValuesOptional } from '../_internal';
|
|
4
|
+
import { collectionKeys } from '../_internal/api/query-keys';
|
|
5
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
6
|
+
|
|
7
|
+
export interface FetchCollectionParams {
|
|
8
|
+
chainId: number;
|
|
9
|
+
collectionAddress: string;
|
|
10
|
+
config: SdkConfig;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Fetches collection information from the metadata API
|
|
15
|
+
*/
|
|
16
|
+
export async function fetchCollection(params: FetchCollectionParams) {
|
|
17
|
+
const { collectionAddress, chainId, config } = params;
|
|
18
|
+
|
|
19
|
+
const metadataClient = getMetadataClient(config);
|
|
20
|
+
|
|
21
|
+
const result = await metadataClient.getContractInfo({
|
|
22
|
+
chainID: chainId.toString(),
|
|
23
|
+
contractAddress: collectionAddress,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
return result.contractInfo;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type CollectionQueryOptions = ValuesOptional<FetchCollectionParams> & {
|
|
30
|
+
query?: StandardQueryOptions;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export function collectionQueryOptions(params: CollectionQueryOptions) {
|
|
34
|
+
const enabled = Boolean(
|
|
35
|
+
params.collectionAddress &&
|
|
36
|
+
params.chainId &&
|
|
37
|
+
params.config &&
|
|
38
|
+
(params.query?.enabled ?? true),
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
return queryOptions({
|
|
42
|
+
queryKey: [...collectionKeys.detail, params],
|
|
43
|
+
queryFn: () =>
|
|
44
|
+
fetchCollection({
|
|
45
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
46
|
+
chainId: params.chainId!,
|
|
47
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
48
|
+
collectionAddress: params.collectionAddress!,
|
|
49
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
50
|
+
config: params.config!,
|
|
51
|
+
}),
|
|
52
|
+
...params.query,
|
|
53
|
+
enabled,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { GetTokenBalancesDetailsReturn } from '@0xsequence/indexer';
|
|
2
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
3
|
+
import type { Address } from 'viem';
|
|
4
|
+
import type { SdkConfig } from '../../types';
|
|
5
|
+
import { getIndexerClient, type ValuesOptional } from '../_internal';
|
|
6
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
7
|
+
|
|
8
|
+
export interface CollectionBalanceFilter {
|
|
9
|
+
accountAddresses: Array<Address>;
|
|
10
|
+
contractWhitelist?: Array<Address>;
|
|
11
|
+
omitNativeBalances: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface FetchCollectionBalanceDetailsParams {
|
|
15
|
+
chainId: number;
|
|
16
|
+
filter: CollectionBalanceFilter;
|
|
17
|
+
config: SdkConfig;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Fetches detailed balance information for multiple accounts from the Indexer API
|
|
22
|
+
*/
|
|
23
|
+
export async function fetchCollectionBalanceDetails(
|
|
24
|
+
params: FetchCollectionBalanceDetailsParams,
|
|
25
|
+
): Promise<GetTokenBalancesDetailsReturn> {
|
|
26
|
+
const { chainId, filter, config } = params;
|
|
27
|
+
|
|
28
|
+
const indexerClient = getIndexerClient(chainId, config);
|
|
29
|
+
|
|
30
|
+
const promises = filter.accountAddresses.map((accountAddress) =>
|
|
31
|
+
indexerClient.getTokenBalancesDetails({
|
|
32
|
+
filter: {
|
|
33
|
+
accountAddresses: [accountAddress],
|
|
34
|
+
contractWhitelist: filter.contractWhitelist,
|
|
35
|
+
omitNativeBalances: filter.omitNativeBalances,
|
|
36
|
+
},
|
|
37
|
+
}),
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
const responses = await Promise.all(promises);
|
|
41
|
+
const mergedResponse = responses.reduce<GetTokenBalancesDetailsReturn>(
|
|
42
|
+
(acc, curr) => {
|
|
43
|
+
if (!curr) return acc;
|
|
44
|
+
return {
|
|
45
|
+
page: curr.page,
|
|
46
|
+
nativeBalances: [
|
|
47
|
+
...(acc.nativeBalances || []),
|
|
48
|
+
...(curr.nativeBalances || []),
|
|
49
|
+
],
|
|
50
|
+
balances: [...(acc.balances || []), ...(curr.balances || [])],
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
{ page: {}, nativeBalances: [], balances: [] },
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
if (!mergedResponse) {
|
|
57
|
+
throw new Error('Failed to fetch collection balance details');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return mergedResponse;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export type CollectionBalanceDetailsQueryOptions =
|
|
64
|
+
ValuesOptional<FetchCollectionBalanceDetailsParams> & {
|
|
65
|
+
query?: StandardQueryOptions;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export function collectionBalanceDetailsQueryOptions(
|
|
69
|
+
params: CollectionBalanceDetailsQueryOptions,
|
|
70
|
+
) {
|
|
71
|
+
const enabled = Boolean(
|
|
72
|
+
params.chainId &&
|
|
73
|
+
params.filter?.accountAddresses?.length &&
|
|
74
|
+
params.config &&
|
|
75
|
+
(params.query?.enabled ?? true),
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
return queryOptions({
|
|
79
|
+
queryKey: ['balances', 'collectionBalanceDetails', params],
|
|
80
|
+
queryFn: () =>
|
|
81
|
+
fetchCollectionBalanceDetails({
|
|
82
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
83
|
+
chainId: params.chainId!,
|
|
84
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
85
|
+
filter: params.filter!,
|
|
86
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
87
|
+
config: params.config!,
|
|
88
|
+
}),
|
|
89
|
+
...params.query,
|
|
90
|
+
enabled,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { SdkConfig } from '../../types';
|
|
3
|
+
import { getMarketplaceClient, type ValuesOptional } from '../_internal';
|
|
4
|
+
import type { GetCollectionDetailArgs } from '../_internal/api/marketplace.gen';
|
|
5
|
+
import { collectionKeys } from '../_internal/api/query-keys';
|
|
6
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
7
|
+
|
|
8
|
+
export interface FetchCollectionDetailsParams
|
|
9
|
+
extends Omit<GetCollectionDetailArgs, 'chainId' | 'contractAddress'> {
|
|
10
|
+
chainId: number;
|
|
11
|
+
collectionAddress: string;
|
|
12
|
+
config: SdkConfig;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Fetches collection details from the marketplace API
|
|
17
|
+
*/
|
|
18
|
+
export async function fetchCollectionDetails(
|
|
19
|
+
params: FetchCollectionDetailsParams,
|
|
20
|
+
) {
|
|
21
|
+
const { collectionAddress, chainId, config, ...additionalApiParams } = params;
|
|
22
|
+
|
|
23
|
+
const marketplaceClient = getMarketplaceClient(config);
|
|
24
|
+
|
|
25
|
+
const apiArgs: GetCollectionDetailArgs = {
|
|
26
|
+
contractAddress: collectionAddress,
|
|
27
|
+
chainId: String(chainId),
|
|
28
|
+
...additionalApiParams,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const result = await marketplaceClient.getCollectionDetail(apiArgs);
|
|
32
|
+
return result.collection;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type CollectionDetailsQueryOptions =
|
|
36
|
+
ValuesOptional<FetchCollectionDetailsParams> & {
|
|
37
|
+
query?: StandardQueryOptions;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export function collectionDetailsQueryOptions(
|
|
41
|
+
params: CollectionDetailsQueryOptions,
|
|
42
|
+
) {
|
|
43
|
+
const enabled = Boolean(
|
|
44
|
+
params.collectionAddress &&
|
|
45
|
+
params.chainId &&
|
|
46
|
+
params.config &&
|
|
47
|
+
(params.query?.enabled ?? true),
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
return queryOptions({
|
|
51
|
+
queryKey: [...collectionKeys.detail, params],
|
|
52
|
+
queryFn: () =>
|
|
53
|
+
fetchCollectionDetails({
|
|
54
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
55
|
+
chainId: params.chainId!,
|
|
56
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
57
|
+
collectionAddress: params.collectionAddress!,
|
|
58
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
59
|
+
config: params.config!,
|
|
60
|
+
}),
|
|
61
|
+
...params.query,
|
|
62
|
+
enabled,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { Address } from 'viem';
|
|
3
|
+
import type { SdkConfig } from '../../types';
|
|
4
|
+
import type { ValuesOptional } from '../_internal';
|
|
5
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
6
|
+
import { fetchConvertPriceToUSD } from './convertPriceToUSD';
|
|
7
|
+
|
|
8
|
+
export interface FetchComparePricesParams {
|
|
9
|
+
chainId: number;
|
|
10
|
+
// First price details
|
|
11
|
+
priceAmountRaw: string;
|
|
12
|
+
priceCurrencyAddress: Address;
|
|
13
|
+
// Second price details (to compare against)
|
|
14
|
+
compareToPriceAmountRaw: string;
|
|
15
|
+
compareToPriceCurrencyAddress: Address;
|
|
16
|
+
config: SdkConfig;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type ComparePricesReturn = {
|
|
20
|
+
percentageDifference: number;
|
|
21
|
+
percentageDifferenceFormatted: string;
|
|
22
|
+
status: 'above' | 'same' | 'below';
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Compares prices between different currencies by converting both to USD
|
|
27
|
+
*/
|
|
28
|
+
export async function fetchComparePrices(
|
|
29
|
+
params: FetchComparePricesParams,
|
|
30
|
+
): Promise<ComparePricesReturn> {
|
|
31
|
+
const {
|
|
32
|
+
chainId,
|
|
33
|
+
priceAmountRaw,
|
|
34
|
+
priceCurrencyAddress,
|
|
35
|
+
compareToPriceAmountRaw,
|
|
36
|
+
compareToPriceCurrencyAddress,
|
|
37
|
+
config,
|
|
38
|
+
} = params;
|
|
39
|
+
|
|
40
|
+
const [priceUSD, compareToPriceUSD] = await Promise.all([
|
|
41
|
+
fetchConvertPriceToUSD({
|
|
42
|
+
chainId,
|
|
43
|
+
currencyAddress: priceCurrencyAddress,
|
|
44
|
+
amountRaw: priceAmountRaw,
|
|
45
|
+
config,
|
|
46
|
+
}),
|
|
47
|
+
fetchConvertPriceToUSD({
|
|
48
|
+
chainId,
|
|
49
|
+
currencyAddress: compareToPriceCurrencyAddress,
|
|
50
|
+
amountRaw: compareToPriceAmountRaw,
|
|
51
|
+
config,
|
|
52
|
+
}),
|
|
53
|
+
]);
|
|
54
|
+
|
|
55
|
+
const difference = priceUSD.usdAmount - compareToPriceUSD.usdAmount;
|
|
56
|
+
|
|
57
|
+
if (compareToPriceUSD.usdAmount === 0) {
|
|
58
|
+
throw new Error('Cannot compare to zero price');
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const percentageDifference = (difference / compareToPriceUSD.usdAmount) * 100;
|
|
62
|
+
const isAbove = percentageDifference > 0;
|
|
63
|
+
const isSame = percentageDifference === 0;
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
percentageDifference,
|
|
67
|
+
percentageDifferenceFormatted: Math.abs(percentageDifference).toFixed(2),
|
|
68
|
+
status: isAbove ? 'above' : isSame ? 'same' : 'below',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export type ComparePricesQueryOptions =
|
|
73
|
+
ValuesOptional<FetchComparePricesParams> & {
|
|
74
|
+
query?: StandardQueryOptions;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export function comparePricesQueryOptions(params: ComparePricesQueryOptions) {
|
|
78
|
+
const enabled = Boolean(
|
|
79
|
+
params.chainId &&
|
|
80
|
+
params.priceAmountRaw &&
|
|
81
|
+
params.priceCurrencyAddress &&
|
|
82
|
+
params.compareToPriceAmountRaw &&
|
|
83
|
+
params.compareToPriceCurrencyAddress &&
|
|
84
|
+
params.config &&
|
|
85
|
+
(params.query?.enabled ?? true),
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
return queryOptions({
|
|
89
|
+
queryKey: ['currency', 'conversion', 'compare', params],
|
|
90
|
+
queryFn: () =>
|
|
91
|
+
fetchComparePrices({
|
|
92
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
93
|
+
chainId: params.chainId!,
|
|
94
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
95
|
+
priceAmountRaw: params.priceAmountRaw!,
|
|
96
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
97
|
+
priceCurrencyAddress: params.priceCurrencyAddress!,
|
|
98
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
99
|
+
compareToPriceAmountRaw: params.compareToPriceAmountRaw!,
|
|
100
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
101
|
+
compareToPriceCurrencyAddress: params.compareToPriceCurrencyAddress!,
|
|
102
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
103
|
+
config: params.config!,
|
|
104
|
+
}),
|
|
105
|
+
...params.query,
|
|
106
|
+
enabled,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import { type Address, formatUnits } from 'viem';
|
|
3
|
+
import type { SdkConfig } from '../../types';
|
|
4
|
+
import {
|
|
5
|
+
type Currency,
|
|
6
|
+
getQueryClient,
|
|
7
|
+
type ValuesOptional,
|
|
8
|
+
} from '../_internal';
|
|
9
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
10
|
+
import { marketCurrenciesQueryOptions } from './marketCurrencies';
|
|
11
|
+
|
|
12
|
+
export interface FetchConvertPriceToUSDParams {
|
|
13
|
+
chainId: number;
|
|
14
|
+
currencyAddress: Address;
|
|
15
|
+
amountRaw: string;
|
|
16
|
+
config: SdkConfig;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface ConvertPriceToUSDReturn {
|
|
20
|
+
usdAmount: number;
|
|
21
|
+
usdAmountFormatted: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Converts a price amount from a specific currency to USD using exchange rates
|
|
26
|
+
*/
|
|
27
|
+
export async function fetchConvertPriceToUSD(
|
|
28
|
+
params: FetchConvertPriceToUSDParams,
|
|
29
|
+
): Promise<ConvertPriceToUSDReturn> {
|
|
30
|
+
const { chainId, currencyAddress, amountRaw, config } = params;
|
|
31
|
+
|
|
32
|
+
const queryClient = getQueryClient();
|
|
33
|
+
const currencies = (await queryClient.fetchQuery(
|
|
34
|
+
marketCurrenciesQueryOptions({
|
|
35
|
+
chainId,
|
|
36
|
+
config,
|
|
37
|
+
}),
|
|
38
|
+
)) as Currency[];
|
|
39
|
+
|
|
40
|
+
const currencyDetails = currencies.find(
|
|
41
|
+
(c: Currency) =>
|
|
42
|
+
c.contractAddress.toLowerCase() === currencyAddress.toLowerCase(),
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
if (!currencyDetails) {
|
|
46
|
+
throw new Error('Currency not found');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const amountDecimal = Number(
|
|
50
|
+
formatUnits(BigInt(amountRaw), currencyDetails.decimals),
|
|
51
|
+
);
|
|
52
|
+
const usdAmount = amountDecimal * currencyDetails.exchangeRate;
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
usdAmount,
|
|
56
|
+
usdAmountFormatted: usdAmount.toFixed(2),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export type ConvertPriceToUSDQueryOptions =
|
|
61
|
+
ValuesOptional<FetchConvertPriceToUSDParams> & {
|
|
62
|
+
query?: StandardQueryOptions;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export function convertPriceToUSDQueryOptions(
|
|
66
|
+
params: ConvertPriceToUSDQueryOptions,
|
|
67
|
+
) {
|
|
68
|
+
const enabled = Boolean(
|
|
69
|
+
params.chainId &&
|
|
70
|
+
params.currencyAddress &&
|
|
71
|
+
params.amountRaw &&
|
|
72
|
+
params.config &&
|
|
73
|
+
(params.query?.enabled ?? true),
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
return queryOptions({
|
|
77
|
+
queryKey: ['currency', 'convertPriceToUSD', params],
|
|
78
|
+
queryFn: () =>
|
|
79
|
+
fetchConvertPriceToUSD({
|
|
80
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
81
|
+
chainId: params.chainId!,
|
|
82
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
83
|
+
currencyAddress: params.currencyAddress!,
|
|
84
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
85
|
+
amountRaw: params.amountRaw!,
|
|
86
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
87
|
+
config: params.config!,
|
|
88
|
+
}),
|
|
89
|
+
...params.query,
|
|
90
|
+
enabled,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { SdkConfig } from '../../types';
|
|
3
|
+
import { getMarketplaceClient, type ValuesOptional } from '../_internal';
|
|
4
|
+
import type {
|
|
5
|
+
GetCountOfListingsForCollectibleArgs,
|
|
6
|
+
OrderFilter,
|
|
7
|
+
} from '../_internal/api/marketplace.gen';
|
|
8
|
+
import { collectableKeys } from '../_internal/api/query-keys';
|
|
9
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
10
|
+
|
|
11
|
+
export interface FetchCountListingsForCollectibleParams {
|
|
12
|
+
chainId: number;
|
|
13
|
+
collectionAddress: string;
|
|
14
|
+
collectibleId: string;
|
|
15
|
+
config: SdkConfig;
|
|
16
|
+
filter?: OrderFilter;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Fetches count of listings for a collectible from the marketplace API
|
|
21
|
+
*/
|
|
22
|
+
export async function fetchCountListingsForCollectible(
|
|
23
|
+
params: FetchCountListingsForCollectibleParams,
|
|
24
|
+
) {
|
|
25
|
+
const { collectionAddress, chainId, collectibleId, config, filter } = params;
|
|
26
|
+
|
|
27
|
+
const client = getMarketplaceClient(config);
|
|
28
|
+
|
|
29
|
+
const apiArgs: GetCountOfListingsForCollectibleArgs = {
|
|
30
|
+
contractAddress: collectionAddress,
|
|
31
|
+
chainId: String(chainId),
|
|
32
|
+
tokenId: collectibleId,
|
|
33
|
+
filter,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const result = await client.getCountOfListingsForCollectible(apiArgs);
|
|
37
|
+
return result.count;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type CountListingsForCollectibleQueryOptions =
|
|
41
|
+
ValuesOptional<FetchCountListingsForCollectibleParams> & {
|
|
42
|
+
query?: StandardQueryOptions;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export function countListingsForCollectibleQueryOptions(
|
|
46
|
+
params: CountListingsForCollectibleQueryOptions,
|
|
47
|
+
) {
|
|
48
|
+
const enabled = Boolean(
|
|
49
|
+
params.collectionAddress &&
|
|
50
|
+
params.chainId &&
|
|
51
|
+
params.collectibleId &&
|
|
52
|
+
params.config &&
|
|
53
|
+
(params.query?.enabled ?? true),
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
return queryOptions({
|
|
57
|
+
queryKey: [...collectableKeys.listingsCount, params],
|
|
58
|
+
queryFn: () =>
|
|
59
|
+
fetchCountListingsForCollectible({
|
|
60
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
61
|
+
chainId: params.chainId!,
|
|
62
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
63
|
+
collectionAddress: params.collectionAddress!,
|
|
64
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
65
|
+
collectibleId: params.collectibleId!,
|
|
66
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
67
|
+
config: params.config!,
|
|
68
|
+
filter: params.filter,
|
|
69
|
+
}),
|
|
70
|
+
...params.query,
|
|
71
|
+
enabled,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { SdkConfig } from '../../types';
|
|
3
|
+
import { getMarketplaceClient, type ValuesOptional } from '../_internal';
|
|
4
|
+
import type {
|
|
5
|
+
CollectiblesFilter,
|
|
6
|
+
GetCountOfAllCollectiblesArgs,
|
|
7
|
+
GetCountOfFilteredCollectiblesArgs,
|
|
8
|
+
OrderSide,
|
|
9
|
+
} from '../_internal/api/marketplace.gen';
|
|
10
|
+
import { collectableKeys } from '../_internal/api/query-keys';
|
|
11
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
12
|
+
|
|
13
|
+
export interface FetchCountOfCollectablesParams {
|
|
14
|
+
chainId: number;
|
|
15
|
+
collectionAddress: string;
|
|
16
|
+
config: SdkConfig;
|
|
17
|
+
filter?: CollectiblesFilter;
|
|
18
|
+
side?: OrderSide;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Fetches count of collectibles from the marketplace API
|
|
23
|
+
*/
|
|
24
|
+
export async function fetchCountOfCollectables(
|
|
25
|
+
params: FetchCountOfCollectablesParams,
|
|
26
|
+
) {
|
|
27
|
+
const { collectionAddress, chainId, config, filter, side } = params;
|
|
28
|
+
|
|
29
|
+
const client = getMarketplaceClient(config);
|
|
30
|
+
|
|
31
|
+
if (filter && side) {
|
|
32
|
+
const apiArgs: GetCountOfFilteredCollectiblesArgs = {
|
|
33
|
+
contractAddress: collectionAddress,
|
|
34
|
+
chainId: String(chainId),
|
|
35
|
+
filter,
|
|
36
|
+
side,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const result = await client.getCountOfFilteredCollectibles(apiArgs);
|
|
40
|
+
return result.count;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const apiArgs: GetCountOfAllCollectiblesArgs = {
|
|
44
|
+
contractAddress: collectionAddress,
|
|
45
|
+
chainId: String(chainId),
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const result = await client.getCountOfAllCollectibles(apiArgs);
|
|
49
|
+
return result.count;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export type CountOfCollectablesQueryOptions =
|
|
53
|
+
ValuesOptional<FetchCountOfCollectablesParams> & {
|
|
54
|
+
query?: StandardQueryOptions;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export function countOfCollectablesQueryOptions(
|
|
58
|
+
params: CountOfCollectablesQueryOptions,
|
|
59
|
+
) {
|
|
60
|
+
const enabled = Boolean(
|
|
61
|
+
params.collectionAddress &&
|
|
62
|
+
params.chainId &&
|
|
63
|
+
params.config &&
|
|
64
|
+
(params.query?.enabled ?? true),
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
return queryOptions({
|
|
68
|
+
queryKey: [...collectableKeys.counts, params],
|
|
69
|
+
queryFn: () =>
|
|
70
|
+
fetchCountOfCollectables({
|
|
71
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
72
|
+
chainId: params.chainId!,
|
|
73
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
74
|
+
collectionAddress: params.collectionAddress!,
|
|
75
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
76
|
+
config: params.config!,
|
|
77
|
+
filter: params.filter,
|
|
78
|
+
side: params.side,
|
|
79
|
+
}),
|
|
80
|
+
...params.query,
|
|
81
|
+
enabled,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { Address } from 'viem';
|
|
3
|
+
import type { SdkConfig } from '../../types';
|
|
4
|
+
import {
|
|
5
|
+
type GetCountOfPrimarySaleItemsArgs,
|
|
6
|
+
getMarketplaceClient,
|
|
7
|
+
type PrimarySaleItemsFilter,
|
|
8
|
+
} from '../_internal';
|
|
9
|
+
|
|
10
|
+
export interface UseCountOfPrimarySaleItemsArgs
|
|
11
|
+
extends Omit<
|
|
12
|
+
GetCountOfPrimarySaleItemsArgs,
|
|
13
|
+
'chainId' | 'primarySaleContractAddress'
|
|
14
|
+
> {
|
|
15
|
+
chainId: number;
|
|
16
|
+
primarySaleContractAddress: Address;
|
|
17
|
+
filter?: PrimarySaleItemsFilter;
|
|
18
|
+
query?: {
|
|
19
|
+
enabled?: boolean;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export async function fetchCountOfPrimarySaleItems(
|
|
24
|
+
args: UseCountOfPrimarySaleItemsArgs,
|
|
25
|
+
config: SdkConfig,
|
|
26
|
+
) {
|
|
27
|
+
const marketplaceClient = getMarketplaceClient(config);
|
|
28
|
+
|
|
29
|
+
const { chainId, primarySaleContractAddress, filter } = args;
|
|
30
|
+
const data = await marketplaceClient.getCountOfPrimarySaleItems({
|
|
31
|
+
chainId: String(chainId),
|
|
32
|
+
primarySaleContractAddress,
|
|
33
|
+
filter,
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
return data.count;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function countOfPrimarySaleItemsOptions(
|
|
40
|
+
args: UseCountOfPrimarySaleItemsArgs,
|
|
41
|
+
config: SdkConfig,
|
|
42
|
+
) {
|
|
43
|
+
return queryOptions({
|
|
44
|
+
enabled: args.query?.enabled ?? true,
|
|
45
|
+
queryKey: ['countOfPrimarySaleItems', args],
|
|
46
|
+
queryFn: () => fetchCountOfPrimarySaleItems(args, config),
|
|
47
|
+
});
|
|
48
|
+
}
|