@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
|
@@ -1,86 +1,106 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import type {
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useQuery } from '@tanstack/react-query';
|
|
4
|
+
import type { Optional } from '../_internal';
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
type CollectionBalanceDetailsQueryOptions,
|
|
7
|
+
type CollectionBalanceFilter,
|
|
8
|
+
collectionBalanceDetailsQueryOptions,
|
|
9
|
+
type FetchCollectionBalanceDetailsParams,
|
|
10
|
+
type fetchCollectionBalanceDetails,
|
|
11
|
+
} from '../queries/collectionBalanceDetails';
|
|
11
12
|
import { useConfig } from './useConfig';
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
omitNativeBalances: z.boolean(),
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
const useCollectionBalanceDetailsArgsSchema = z.object({
|
|
20
|
-
chainId: z.number(),
|
|
21
|
-
filter: filterSchema,
|
|
22
|
-
query: QueryArgSchema.optional(),
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
export type CollectionBalanceFilter = z.infer<typeof filterSchema>;
|
|
26
|
-
export type UseCollectionBalanceDetailsArgs = z.input<
|
|
27
|
-
typeof useCollectionBalanceDetailsArgsSchema
|
|
14
|
+
export type UseCollectionBalanceDetailsParams = Optional<
|
|
15
|
+
CollectionBalanceDetailsQueryOptions,
|
|
16
|
+
'config'
|
|
28
17
|
>;
|
|
29
18
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Hook to fetch detailed balance information for multiple accounts
|
|
21
|
+
*
|
|
22
|
+
* Retrieves token balances and native balances for multiple account addresses,
|
|
23
|
+
* with support for contract whitelisting and optional native balance exclusion.
|
|
24
|
+
* Aggregates results from multiple account addresses into a single response.
|
|
25
|
+
*
|
|
26
|
+
* @param params - Configuration parameters
|
|
27
|
+
* @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
|
|
28
|
+
* @param params.filter - Filter configuration for balance queries
|
|
29
|
+
* @param params.filter.accountAddresses - Array of account addresses to query balances for
|
|
30
|
+
* @param params.filter.contractWhitelist - Optional array of contract addresses to filter by
|
|
31
|
+
* @param params.filter.omitNativeBalances - Whether to exclude native token balances
|
|
32
|
+
* @param params.query - Optional React Query configuration
|
|
33
|
+
*
|
|
34
|
+
* @returns Query result containing aggregated balance details for all accounts
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* Basic usage:
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const { data: balanceDetails, isLoading } = useCollectionBalanceDetails({
|
|
40
|
+
* chainId: 137,
|
|
41
|
+
* filter: {
|
|
42
|
+
* accountAddresses: ['0x1234...', '0x5678...'],
|
|
43
|
+
* omitNativeBalances: false
|
|
44
|
+
* }
|
|
45
|
+
* })
|
|
46
|
+
*
|
|
47
|
+
* if (data) {
|
|
48
|
+
* console.log(`Found ${data.balances.length} token balances`);
|
|
49
|
+
* console.log(`Found ${data.nativeBalances.length} native balances`);
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* With contract whitelist:
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const { data: balanceDetails } = useCollectionBalanceDetails({
|
|
57
|
+
* chainId: 1,
|
|
58
|
+
* filter: {
|
|
59
|
+
* accountAddresses: [userAddress],
|
|
60
|
+
* contractWhitelist: ['0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'], // USDC only
|
|
61
|
+
* omitNativeBalances: true
|
|
62
|
+
* },
|
|
63
|
+
* query: {
|
|
64
|
+
* enabled: Boolean(userAddress),
|
|
65
|
+
* refetchInterval: 60000 // Refresh every minute
|
|
66
|
+
* }
|
|
67
|
+
* })
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export function useCollectionBalanceDetails(
|
|
71
|
+
params: UseCollectionBalanceDetailsParams,
|
|
72
|
+
) {
|
|
73
|
+
const defaultConfig = useConfig();
|
|
43
74
|
|
|
44
|
-
const
|
|
45
|
-
const mergedResponse = responses.reduce<GetTokenBalancesDetailsReturn>(
|
|
46
|
-
(acc, curr) => {
|
|
47
|
-
if (!curr) return acc;
|
|
48
|
-
return {
|
|
49
|
-
page: curr.page,
|
|
50
|
-
nativeBalances: [
|
|
51
|
-
...(acc.nativeBalances || []),
|
|
52
|
-
...(curr.nativeBalances || []),
|
|
53
|
-
],
|
|
54
|
-
balances: [...(acc.balances || []), ...(curr.balances || [])],
|
|
55
|
-
};
|
|
56
|
-
},
|
|
57
|
-
{ page: {}, nativeBalances: [], balances: [] },
|
|
58
|
-
);
|
|
75
|
+
const { config = defaultConfig, ...rest } = params;
|
|
59
76
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
77
|
+
const queryOptions = collectionBalanceDetailsQueryOptions({
|
|
78
|
+
config,
|
|
79
|
+
...rest,
|
|
80
|
+
});
|
|
63
81
|
|
|
64
|
-
return
|
|
65
|
-
|
|
82
|
+
return useQuery({
|
|
83
|
+
...queryOptions,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
66
86
|
|
|
67
|
-
export
|
|
68
|
-
args: UseCollectionBalanceDetailsArgs,
|
|
69
|
-
config: SdkConfig,
|
|
70
|
-
) => {
|
|
71
|
-
const parsedArgs = useCollectionBalanceDetailsArgsSchema.parse(args);
|
|
72
|
-
const indexerClient = getIndexerClient(parsedArgs.chainId, config);
|
|
87
|
+
export { collectionBalanceDetailsQueryOptions };
|
|
73
88
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
});
|
|
89
|
+
export type {
|
|
90
|
+
FetchCollectionBalanceDetailsParams,
|
|
91
|
+
CollectionBalanceDetailsQueryOptions,
|
|
92
|
+
CollectionBalanceFilter,
|
|
79
93
|
};
|
|
80
94
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
95
|
+
// Legacy exports for backward compatibility
|
|
96
|
+
export type UseCollectionBalanceDetailsArgs = {
|
|
97
|
+
chainId: number;
|
|
98
|
+
filter: CollectionBalanceFilter;
|
|
99
|
+
query?: {
|
|
100
|
+
enabled?: boolean;
|
|
101
|
+
};
|
|
86
102
|
};
|
|
103
|
+
|
|
104
|
+
export type UseCollectionBalanceDetailsReturn = Awaited<
|
|
105
|
+
ReturnType<typeof fetchCollectionBalanceDetails>
|
|
106
|
+
>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useQuery } from '@tanstack/react-query';
|
|
4
|
+
import type { Optional } from '../_internal';
|
|
5
|
+
import {
|
|
6
|
+
type CollectionDetailsQueryOptions,
|
|
7
|
+
collectionDetailsQueryOptions,
|
|
8
|
+
type FetchCollectionDetailsParams,
|
|
9
|
+
} from '../queries/collectionDetails';
|
|
10
|
+
import { useConfig } from './useConfig';
|
|
11
|
+
|
|
12
|
+
export type UseCollectionDetailsParams = Optional<
|
|
13
|
+
CollectionDetailsQueryOptions,
|
|
14
|
+
'config'
|
|
15
|
+
>;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Hook to fetch detailed information about a collection
|
|
19
|
+
*
|
|
20
|
+
* This hook retrieves comprehensive metadata and details for an NFT collection,
|
|
21
|
+
* including collection name, description, banner, avatar, social links, stats, etc.
|
|
22
|
+
*
|
|
23
|
+
* @param params - Configuration parameters
|
|
24
|
+
* @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
|
|
25
|
+
* @param params.collectionAddress - The collection contract address
|
|
26
|
+
* @param params.query - Optional React Query configuration
|
|
27
|
+
*
|
|
28
|
+
* @returns Query result containing the collection details
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* Basic usage:
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const { data: collection, isLoading } = useCollectionDetails({
|
|
34
|
+
* chainId: 137,
|
|
35
|
+
* collectionAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e'
|
|
36
|
+
* })
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* With custom query options:
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const { data } = useCollectionDetails({
|
|
43
|
+
* chainId: 137,
|
|
44
|
+
* collectionAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',
|
|
45
|
+
* query: {
|
|
46
|
+
* enabled: Boolean(collectionAddress),
|
|
47
|
+
* staleTime: 60_000
|
|
48
|
+
* }
|
|
49
|
+
* })
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export function useCollectionDetails(params: UseCollectionDetailsParams) {
|
|
53
|
+
const defaultConfig = useConfig();
|
|
54
|
+
|
|
55
|
+
const { config = defaultConfig, ...rest } = params;
|
|
56
|
+
|
|
57
|
+
const queryOptions = collectionDetailsQueryOptions({
|
|
58
|
+
config,
|
|
59
|
+
...rest,
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
return useQuery({
|
|
63
|
+
...queryOptions,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { collectionDetailsQueryOptions };
|
|
68
|
+
|
|
69
|
+
export type { FetchCollectionDetailsParams, CollectionDetailsQueryOptions };
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { queryOptions, useQuery } from '@tanstack/react-query';
|
|
2
2
|
import type { SdkConfig } from '../../types';
|
|
3
|
-
import { CollectionStatus } from '../_internal
|
|
4
|
-
import {
|
|
3
|
+
import { CollectionStatus } from '../_internal';
|
|
4
|
+
import { collectionDetailsQueryOptions } from './useCollectionDetails';
|
|
5
5
|
import { useConfig } from './useConfig';
|
|
6
6
|
|
|
7
7
|
type UseCollectionDetailsPolling = {
|
|
8
8
|
collectionAddress: string;
|
|
9
9
|
chainId: number;
|
|
10
|
+
query?: {
|
|
11
|
+
enabled?: boolean;
|
|
12
|
+
};
|
|
10
13
|
};
|
|
11
14
|
|
|
12
15
|
const INITIAL_POLLING_INTERVAL = 2000; // 2 seconds
|
|
@@ -27,7 +30,7 @@ export const collectionDetailsPollingOptions = (
|
|
|
27
30
|
config: SdkConfig,
|
|
28
31
|
) => {
|
|
29
32
|
return queryOptions({
|
|
30
|
-
...
|
|
33
|
+
...collectionDetailsQueryOptions({ ...args, config }),
|
|
31
34
|
refetchInterval: (query) => {
|
|
32
35
|
const data = query.state.data;
|
|
33
36
|
if (data && isTerminalState(data.status)) {
|
|
@@ -49,6 +52,7 @@ export const collectionDetailsPollingOptions = (
|
|
|
49
52
|
},
|
|
50
53
|
refetchOnWindowFocus: false,
|
|
51
54
|
retry: false,
|
|
55
|
+
enabled: args.query?.enabled ?? true,
|
|
52
56
|
});
|
|
53
57
|
};
|
|
54
58
|
|
|
@@ -1,99 +1,104 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useQuery } from '@tanstack/react-query';
|
|
4
|
+
import type { Address } from 'viem';
|
|
5
|
+
import type { Optional } from '../_internal';
|
|
6
|
+
import {
|
|
7
|
+
type ComparePricesQueryOptions,
|
|
8
|
+
comparePricesQueryOptions,
|
|
9
|
+
type FetchComparePricesParams,
|
|
10
|
+
} from '../queries/comparePrices';
|
|
5
11
|
import { useConfig } from './useConfig';
|
|
6
|
-
import { convertPriceToUSD } from './useConvertPriceToUSD';
|
|
7
12
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
priceCurrencyAddress: AddressSchema,
|
|
13
|
-
// Second price details (to compare against)
|
|
14
|
-
compareToPriceAmountRaw: z.string(),
|
|
15
|
-
compareToPriceCurrencyAddress: AddressSchema,
|
|
16
|
-
query: QueryArgSchema,
|
|
17
|
-
});
|
|
13
|
+
export type UseComparePricesParams = Optional<
|
|
14
|
+
ComparePricesQueryOptions,
|
|
15
|
+
'config'
|
|
16
|
+
>;
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Hook to compare prices between different currencies by converting both to USD
|
|
20
|
+
*
|
|
21
|
+
* Compares two prices by converting both to USD using real-time exchange rates
|
|
22
|
+
* and returns the percentage difference with comparison status.
|
|
23
|
+
*
|
|
24
|
+
* @param params - Configuration parameters
|
|
25
|
+
* @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
|
|
26
|
+
* @param params.priceAmountRaw - The raw amount of the first price (wei format)
|
|
27
|
+
* @param params.priceCurrencyAddress - The currency address of the first price
|
|
28
|
+
* @param params.compareToPriceAmountRaw - The raw amount of the second price to compare against (wei format)
|
|
29
|
+
* @param params.compareToPriceCurrencyAddress - The currency address of the second price
|
|
30
|
+
* @param params.query - Optional React Query configuration
|
|
31
|
+
*
|
|
32
|
+
* @returns Query result containing percentage difference and comparison status
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* Basic usage:
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const { data: comparison, isLoading } = useComparePrices({
|
|
38
|
+
* chainId: 1,
|
|
39
|
+
* priceAmountRaw: '1000000000000000000', // 1 ETH in wei
|
|
40
|
+
* priceCurrencyAddress: '0x0000000000000000000000000000000000000000', // ETH
|
|
41
|
+
* compareToPriceAmountRaw: '2000000000', // 2000 USDC in wei (6 decimals)
|
|
42
|
+
* compareToPriceCurrencyAddress: '0xA0b86a33E6B8DbF5E71Eaa9bfD3F6fD8e8Be3F69' // USDC
|
|
43
|
+
* })
|
|
44
|
+
*
|
|
45
|
+
* if (data) {
|
|
46
|
+
* console.log(`${data.percentageDifferenceFormatted}% ${data.status}`);
|
|
47
|
+
* // e.g., "25.50% above" or "10.25% below"
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* With custom query options:
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const { data: comparison } = useComparePrices({
|
|
55
|
+
* chainId: 137,
|
|
56
|
+
* priceAmountRaw: price1,
|
|
57
|
+
* priceCurrencyAddress: currency1Address,
|
|
58
|
+
* compareToPriceAmountRaw: price2,
|
|
59
|
+
* compareToPriceCurrencyAddress: currency2Address,
|
|
60
|
+
* query: {
|
|
61
|
+
* enabled: Boolean(price1 && price2),
|
|
62
|
+
* refetchInterval: 30000 // Refresh every 30 seconds
|
|
63
|
+
* }
|
|
64
|
+
* })
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export function useComparePrices(params: UseComparePricesParams) {
|
|
68
|
+
const defaultConfig = useConfig();
|
|
20
69
|
|
|
21
|
-
|
|
22
|
-
percentageDifference: number;
|
|
23
|
-
percentageDifferenceFormatted: string;
|
|
24
|
-
status: 'above' | 'same' | 'below';
|
|
25
|
-
};
|
|
70
|
+
const { config = defaultConfig, ...rest } = params;
|
|
26
71
|
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
currencyAddress: parsedArgs.priceCurrencyAddress,
|
|
37
|
-
amountRaw: parsedArgs.priceAmountRaw,
|
|
38
|
-
query: {},
|
|
39
|
-
},
|
|
40
|
-
config,
|
|
41
|
-
),
|
|
42
|
-
convertPriceToUSD(
|
|
43
|
-
{
|
|
44
|
-
chainId: parsedArgs.chainId,
|
|
45
|
-
currencyAddress: parsedArgs.compareToPriceCurrencyAddress,
|
|
46
|
-
amountRaw: parsedArgs.compareToPriceAmountRaw,
|
|
47
|
-
query: {},
|
|
48
|
-
},
|
|
49
|
-
config,
|
|
50
|
-
),
|
|
51
|
-
]);
|
|
52
|
-
const difference = priceUSD.usdAmount - compareToPriceUSD.usdAmount;
|
|
72
|
+
const queryOptions = comparePricesQueryOptions({
|
|
73
|
+
config,
|
|
74
|
+
...rest,
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
return useQuery({
|
|
78
|
+
...queryOptions,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
53
81
|
|
|
54
|
-
|
|
55
|
-
throw new Error('Cannot compare to zero price');
|
|
56
|
-
}
|
|
82
|
+
export { comparePricesQueryOptions };
|
|
57
83
|
|
|
58
|
-
|
|
59
|
-
const isAbove = percentageDifference > 0;
|
|
60
|
-
const isSame = percentageDifference === 0;
|
|
84
|
+
export type { FetchComparePricesParams, ComparePricesQueryOptions };
|
|
61
85
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
86
|
+
// Legacy exports for backward compatibility
|
|
87
|
+
export type UseComparePricesArgs = {
|
|
88
|
+
chainId: number;
|
|
89
|
+
priceAmountRaw: string;
|
|
90
|
+
priceCurrencyAddress: Address;
|
|
91
|
+
compareToPriceAmountRaw: string;
|
|
92
|
+
compareToPriceCurrencyAddress: Address;
|
|
93
|
+
query?: {
|
|
94
|
+
enabled?: boolean;
|
|
66
95
|
};
|
|
67
96
|
};
|
|
68
97
|
|
|
69
|
-
export
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return queryOptions({
|
|
74
|
-
...args.query,
|
|
75
|
-
queryKey: [...currencyKeys.conversion, 'compare', args],
|
|
76
|
-
queryFn: () => comparePrices(args, config),
|
|
77
|
-
});
|
|
98
|
+
export type UseComparePricesReturn = {
|
|
99
|
+
percentageDifference: number;
|
|
100
|
+
percentageDifferenceFormatted: string;
|
|
101
|
+
status: 'above' | 'same' | 'below';
|
|
78
102
|
};
|
|
79
103
|
|
|
80
|
-
|
|
81
|
-
* Hook to compare prices between different currencies by converting both to USD
|
|
82
|
-
* @param args - The arguments for the hook
|
|
83
|
-
* @returns The percentage difference between the two prices
|
|
84
|
-
* @example
|
|
85
|
-
* ```ts
|
|
86
|
-
* const { data } = useComparePrices({
|
|
87
|
-
* chainId: 1,
|
|
88
|
-
* priceAmountRaw: "1000000000000000000",
|
|
89
|
-
* priceCurrencyAddress: "0x0000000000000000000000000000000000000000",
|
|
90
|
-
* });
|
|
91
|
-
*
|
|
92
|
-
* console.log(data);
|
|
93
|
-
* // { percentageDifference: 10, percentageDifferenceFormatted: "10.00", isAbove: true, isSame: false, isBelow: false }
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
export const useComparePrices = (args: UseComparePricesArgs) => {
|
|
97
|
-
const config = useConfig();
|
|
98
|
-
return useQuery(comparePricesOptions(args, config));
|
|
99
|
-
};
|
|
104
|
+
export type ComparePricesReturn = UseComparePricesReturn;
|
|
@@ -1,99 +1,96 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import type {
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useQuery } from '@tanstack/react-query';
|
|
4
|
+
import type { Address } from 'viem';
|
|
5
|
+
import type { Optional } from '../_internal';
|
|
5
6
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} from '../
|
|
11
|
-
import { currenciesOptions } from '../queries/marketCurrencies';
|
|
7
|
+
type ConvertPriceToUSDQueryOptions,
|
|
8
|
+
type ConvertPriceToUSDReturn,
|
|
9
|
+
convertPriceToUSDQueryOptions,
|
|
10
|
+
type FetchConvertPriceToUSDParams,
|
|
11
|
+
} from '../queries/convertPriceToUSD';
|
|
12
12
|
import { useConfig } from './useConfig';
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
amountRaw: z.string(),
|
|
18
|
-
query: QueryArgSchema,
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
export type UseConvertPriceToUSDArgs = z.input<
|
|
22
|
-
typeof UseConvertPriceToUSDArgsSchema
|
|
14
|
+
export type UseConvertPriceToUSDParams = Optional<
|
|
15
|
+
ConvertPriceToUSDQueryOptions,
|
|
16
|
+
'config'
|
|
23
17
|
>;
|
|
24
18
|
|
|
25
|
-
export type UseConvertPriceToUSDReturn = {
|
|
26
|
-
usdAmount: number;
|
|
27
|
-
usdAmountFormatted: string;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export const convertPriceToUSD = async (
|
|
31
|
-
args: UseConvertPriceToUSDArgs,
|
|
32
|
-
config: SdkConfig,
|
|
33
|
-
): Promise<UseConvertPriceToUSDReturn> => {
|
|
34
|
-
const parsedArgs = UseConvertPriceToUSDArgsSchema.parse(args);
|
|
35
|
-
const queryClient = getQueryClient();
|
|
36
|
-
const currencies = await queryClient.fetchQuery(
|
|
37
|
-
currenciesOptions(
|
|
38
|
-
{
|
|
39
|
-
chainId: parsedArgs.chainId,
|
|
40
|
-
},
|
|
41
|
-
config,
|
|
42
|
-
),
|
|
43
|
-
);
|
|
44
|
-
const currencyDetails = currencies.find(
|
|
45
|
-
(c) =>
|
|
46
|
-
c.contractAddress.toLowerCase() ===
|
|
47
|
-
parsedArgs.currencyAddress.toLowerCase(),
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
if (!currencyDetails) {
|
|
51
|
-
throw new Error('Currency not found');
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const amountDecimal = Number(
|
|
55
|
-
formatUnits(BigInt(parsedArgs.amountRaw), currencyDetails.decimals),
|
|
56
|
-
);
|
|
57
|
-
const usdAmount = amountDecimal * currencyDetails.exchangeRate;
|
|
58
|
-
|
|
59
|
-
return {
|
|
60
|
-
usdAmount,
|
|
61
|
-
usdAmountFormatted: usdAmount.toFixed(2),
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
export const convertPriceToUSDOptions = (
|
|
66
|
-
args: UseConvertPriceToUSDArgs,
|
|
67
|
-
config: SdkConfig,
|
|
68
|
-
) => {
|
|
69
|
-
return queryOptions({
|
|
70
|
-
...args.query,
|
|
71
|
-
queryKey: [
|
|
72
|
-
...currencyKeys.conversion,
|
|
73
|
-
args.chainId,
|
|
74
|
-
args.currencyAddress,
|
|
75
|
-
args.amountRaw,
|
|
76
|
-
],
|
|
77
|
-
queryFn: () => convertPriceToUSD(args, config),
|
|
78
|
-
});
|
|
79
|
-
};
|
|
80
|
-
|
|
81
19
|
/**
|
|
82
20
|
* Hook to convert a price amount from a specific currency to USD
|
|
83
|
-
*
|
|
21
|
+
*
|
|
22
|
+
* Converts cryptocurrency amounts to their USD equivalent using current exchange rates.
|
|
23
|
+
* Fetches currency data and calculates the USD value based on the provided amount
|
|
24
|
+
* and currency address.
|
|
25
|
+
*
|
|
26
|
+
* @param params - Configuration parameters
|
|
27
|
+
* @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
|
|
28
|
+
* @param params.currencyAddress - The currency contract address to convert from
|
|
29
|
+
* @param params.amountRaw - The raw amount in smallest units (e.g., wei for ETH)
|
|
30
|
+
* @param params.query - Optional React Query configuration
|
|
31
|
+
*
|
|
32
|
+
* @returns Query result containing USD amount and formatted USD amount
|
|
33
|
+
*
|
|
84
34
|
* @example
|
|
85
|
-
*
|
|
86
|
-
*
|
|
35
|
+
* Basic ETH to USD conversion:
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const { data: conversion, isLoading } = useConvertPriceToUSD({
|
|
87
38
|
* chainId: 1,
|
|
88
|
-
* currencyAddress:
|
|
89
|
-
* amountRaw:
|
|
90
|
-
* })
|
|
39
|
+
* currencyAddress: '0x0000000000000000000000000000000000000000', // ETH
|
|
40
|
+
* amountRaw: '1000000000000000000' // 1 ETH in wei
|
|
41
|
+
* })
|
|
42
|
+
*
|
|
43
|
+
* if (data) {
|
|
44
|
+
* console.log(`$${data.usdAmountFormatted}`); // e.g., "$2000.00"
|
|
45
|
+
* console.log(data.usdAmount); // e.g., 2000
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
91
48
|
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
49
|
+
* @example
|
|
50
|
+
* ERC-20 token conversion with conditional enabling:
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const { data: conversion } = useConvertPriceToUSD({
|
|
53
|
+
* chainId: 137,
|
|
54
|
+
* currencyAddress: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC on Polygon
|
|
55
|
+
* amountRaw: '1000000', // 1 USDC (6 decimals)
|
|
56
|
+
* query: {
|
|
57
|
+
* enabled: Boolean(userHasTokens),
|
|
58
|
+
* refetchInterval: 30000 // Update price every 30 seconds
|
|
59
|
+
* }
|
|
60
|
+
* })
|
|
94
61
|
* ```
|
|
95
62
|
*/
|
|
96
|
-
export
|
|
97
|
-
const
|
|
98
|
-
|
|
63
|
+
export function useConvertPriceToUSD(params: UseConvertPriceToUSDParams) {
|
|
64
|
+
const defaultConfig = useConfig();
|
|
65
|
+
|
|
66
|
+
const { config = defaultConfig, ...rest } = params;
|
|
67
|
+
|
|
68
|
+
const queryOptions = convertPriceToUSDQueryOptions({
|
|
69
|
+
config,
|
|
70
|
+
...rest,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
return useQuery({
|
|
74
|
+
...queryOptions,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export { convertPriceToUSDQueryOptions };
|
|
79
|
+
|
|
80
|
+
export type {
|
|
81
|
+
FetchConvertPriceToUSDParams,
|
|
82
|
+
ConvertPriceToUSDQueryOptions,
|
|
83
|
+
ConvertPriceToUSDReturn,
|
|
99
84
|
};
|
|
85
|
+
|
|
86
|
+
// Legacy exports for backward compatibility
|
|
87
|
+
export type UseConvertPriceToUSDArgs = {
|
|
88
|
+
chainId: number;
|
|
89
|
+
currencyAddress: Address;
|
|
90
|
+
amountRaw: string;
|
|
91
|
+
query?: {
|
|
92
|
+
enabled?: boolean;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export type UseConvertPriceToUSDReturn = ConvertPriceToUSDReturn;
|