@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,20 +1,26 @@
|
|
|
1
1
|
import { queryOptions } from '@tanstack/react-query';
|
|
2
2
|
import type { SdkConfig } from '../../types';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
getMetadataClient,
|
|
5
|
+
tokenKeys,
|
|
6
|
+
type ValuesOptional,
|
|
7
|
+
} from '../_internal';
|
|
8
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
4
9
|
|
|
5
|
-
export interface
|
|
10
|
+
export interface FetchListTokenMetadataParams {
|
|
6
11
|
chainId: number;
|
|
7
12
|
contractAddress: string;
|
|
8
13
|
tokenIds: string[];
|
|
9
|
-
|
|
10
|
-
enabled?: boolean;
|
|
11
|
-
};
|
|
14
|
+
config: SdkConfig;
|
|
12
15
|
}
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Fetches token metadata from the metadata API
|
|
19
|
+
*/
|
|
20
|
+
export async function fetchListTokenMetadata(
|
|
21
|
+
params: FetchListTokenMetadataParams,
|
|
22
|
+
) {
|
|
23
|
+
const { chainId, contractAddress, tokenIds, config } = params;
|
|
18
24
|
const metadataClient = getMetadataClient(config);
|
|
19
25
|
|
|
20
26
|
const response = await metadataClient.getTokenMetadata({
|
|
@@ -24,20 +30,38 @@ const fetchTokenMetadata = async (
|
|
|
24
30
|
});
|
|
25
31
|
|
|
26
32
|
return response.tokenMetadata;
|
|
27
|
-
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type ListTokenMetadataQueryOptions =
|
|
36
|
+
ValuesOptional<FetchListTokenMetadataParams> & {
|
|
37
|
+
query?: StandardQueryOptions;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export function listTokenMetadataQueryOptions(
|
|
41
|
+
params: ListTokenMetadataQueryOptions,
|
|
42
|
+
) {
|
|
43
|
+
const enabled = Boolean(
|
|
44
|
+
params.chainId &&
|
|
45
|
+
params.contractAddress &&
|
|
46
|
+
params.tokenIds?.length &&
|
|
47
|
+
params.config &&
|
|
48
|
+
(params.query?.enabled ?? true),
|
|
49
|
+
);
|
|
28
50
|
|
|
29
|
-
export const tokenMetadataOptions = (
|
|
30
|
-
args: FetchTokenMetadataArgs,
|
|
31
|
-
config: SdkConfig,
|
|
32
|
-
) => {
|
|
33
51
|
return queryOptions({
|
|
34
|
-
...
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
52
|
+
queryKey: [...tokenKeys.metadata, params],
|
|
53
|
+
queryFn: () =>
|
|
54
|
+
fetchListTokenMetadata({
|
|
55
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
56
|
+
chainId: params.chainId!,
|
|
57
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
58
|
+
contractAddress: params.contractAddress!,
|
|
59
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
60
|
+
tokenIds: params.tokenIds!,
|
|
61
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
62
|
+
config: params.config!,
|
|
63
|
+
}),
|
|
64
|
+
...params.query,
|
|
65
|
+
enabled,
|
|
42
66
|
});
|
|
43
|
-
}
|
|
67
|
+
}
|
|
@@ -1,54 +1,69 @@
|
|
|
1
1
|
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
-
import type { Address } from 'viem';
|
|
3
2
|
import type { SdkConfig } from '../../types';
|
|
4
3
|
import {
|
|
4
|
+
collectableKeys,
|
|
5
5
|
type GetCollectibleLowestListingArgs,
|
|
6
6
|
type GetCollectibleLowestListingReturn,
|
|
7
|
-
collectableKeys,
|
|
8
7
|
getMarketplaceClient,
|
|
8
|
+
type ValuesOptional,
|
|
9
9
|
} from '../_internal';
|
|
10
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
10
11
|
|
|
11
|
-
export interface
|
|
12
|
+
export interface FetchLowestListingParams
|
|
12
13
|
extends Omit<GetCollectibleLowestListingArgs, 'contractAddress' | 'chainId'> {
|
|
13
|
-
collectionAddress:
|
|
14
|
+
collectionAddress: string;
|
|
14
15
|
chainId: number;
|
|
15
|
-
|
|
16
|
-
enabled?: boolean;
|
|
17
|
-
};
|
|
16
|
+
config: SdkConfig;
|
|
18
17
|
}
|
|
19
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Fetches the lowest listing for a collectible from the marketplace API
|
|
21
|
+
*/
|
|
20
22
|
export async function fetchLowestListing(
|
|
21
|
-
|
|
22
|
-
config: SdkConfig,
|
|
23
|
+
params: FetchLowestListingParams,
|
|
23
24
|
): Promise<GetCollectibleLowestListingReturn['order'] | null> {
|
|
25
|
+
const { collectionAddress, chainId, config, ...additionalApiParams } = params;
|
|
26
|
+
|
|
24
27
|
const marketplaceClient = getMarketplaceClient(config);
|
|
25
28
|
|
|
26
|
-
const
|
|
27
|
-
const data = await marketplaceClient.getCollectibleLowestListing({
|
|
28
|
-
chainId: String(chainId),
|
|
29
|
+
const apiArgs: GetCollectibleLowestListingArgs = {
|
|
29
30
|
contractAddress: collectionAddress,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// let order: Order | undefined;
|
|
34
|
-
// if (data.order) {
|
|
35
|
-
// order = {
|
|
36
|
-
// ...data.order,
|
|
37
|
-
// priceAmount: BigInt(data.order.priceAmount),
|
|
38
|
-
// priceAmountNet: BigInt(data.order.priceAmountNet),
|
|
39
|
-
// };
|
|
40
|
-
// }
|
|
31
|
+
chainId: String(chainId),
|
|
32
|
+
...additionalApiParams,
|
|
33
|
+
};
|
|
41
34
|
|
|
42
|
-
|
|
35
|
+
const result = await marketplaceClient.getCollectibleLowestListing(apiArgs);
|
|
36
|
+
return result.order || null;
|
|
43
37
|
}
|
|
44
38
|
|
|
45
|
-
export
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
export type LowestListingQueryOptions =
|
|
40
|
+
ValuesOptional<FetchLowestListingParams> & {
|
|
41
|
+
query?: StandardQueryOptions;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export function lowestListingQueryOptions(params: LowestListingQueryOptions) {
|
|
45
|
+
const enabled = Boolean(
|
|
46
|
+
params.collectionAddress &&
|
|
47
|
+
params.chainId &&
|
|
48
|
+
params.tokenId &&
|
|
49
|
+
params.config &&
|
|
50
|
+
(params.query?.enabled ?? true),
|
|
51
|
+
);
|
|
52
|
+
|
|
49
53
|
return queryOptions({
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
queryKey: [...collectableKeys.lowestListings, params],
|
|
55
|
+
queryFn: () =>
|
|
56
|
+
fetchLowestListing({
|
|
57
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
58
|
+
chainId: params.chainId!,
|
|
59
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
60
|
+
collectionAddress: params.collectionAddress!,
|
|
61
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
62
|
+
tokenId: params.tokenId!,
|
|
63
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
64
|
+
config: params.config!,
|
|
65
|
+
}),
|
|
66
|
+
...params.query,
|
|
67
|
+
enabled,
|
|
53
68
|
});
|
|
54
69
|
}
|
|
@@ -6,30 +6,31 @@ import {
|
|
|
6
6
|
currencyKeys,
|
|
7
7
|
getMarketplaceClient,
|
|
8
8
|
getQueryClient,
|
|
9
|
+
type ValuesOptional,
|
|
9
10
|
} from '../_internal';
|
|
11
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
10
12
|
import { marketplaceConfigOptions } from './marketplaceConfig';
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
enabled?: boolean;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export interface UseMarketCurrenciesArgs {
|
|
14
|
+
export interface FetchMarketCurrenciesParams {
|
|
17
15
|
chainId: number;
|
|
18
16
|
includeNativeCurrency?: boolean;
|
|
19
17
|
collectionAddress?: Address;
|
|
20
|
-
|
|
18
|
+
config: SdkConfig;
|
|
21
19
|
}
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Fetches supported currencies for a marketplace
|
|
23
|
+
*/
|
|
24
|
+
export async function fetchMarketCurrencies(
|
|
25
|
+
params: FetchMarketCurrenciesParams,
|
|
26
|
+
) {
|
|
27
|
+
const { chainId, includeNativeCurrency, collectionAddress, config } = params;
|
|
28
|
+
const includeNativeCurrencyOption = includeNativeCurrency ?? true;
|
|
28
29
|
const marketplaceClient = getMarketplaceClient(config);
|
|
29
30
|
|
|
30
31
|
let currencies = await marketplaceClient
|
|
31
32
|
.listCurrencies({
|
|
32
|
-
chainId: String(
|
|
33
|
+
chainId: String(chainId),
|
|
33
34
|
})
|
|
34
35
|
.then((resp) =>
|
|
35
36
|
resp.currencies.map((currency) => ({
|
|
@@ -38,7 +39,7 @@ const fetchMarketCurrencies = async (
|
|
|
38
39
|
})),
|
|
39
40
|
);
|
|
40
41
|
|
|
41
|
-
if (
|
|
42
|
+
if (collectionAddress) {
|
|
42
43
|
const queryClient = getQueryClient();
|
|
43
44
|
const marketplaceConfig = await queryClient.fetchQuery(
|
|
44
45
|
marketplaceConfigOptions(config),
|
|
@@ -46,7 +47,7 @@ const fetchMarketCurrencies = async (
|
|
|
46
47
|
|
|
47
48
|
const currenciesOptions = marketplaceConfig.market.collections.find(
|
|
48
49
|
(collection) =>
|
|
49
|
-
compareAddress(collection.itemsAddress,
|
|
50
|
+
compareAddress(collection.itemsAddress, collectionAddress),
|
|
50
51
|
)?.currencyOptions;
|
|
51
52
|
|
|
52
53
|
// Filter currencies based on collection currency options
|
|
@@ -57,25 +58,37 @@ const fetchMarketCurrencies = async (
|
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
if (!
|
|
61
|
+
if (!includeNativeCurrencyOption) {
|
|
61
62
|
currencies = currencies.filter((currency) => !currency.nativeCurrency);
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
return currencies;
|
|
65
|
-
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export type MarketCurrenciesQueryOptions =
|
|
69
|
+
ValuesOptional<FetchMarketCurrenciesParams> & {
|
|
70
|
+
query?: StandardQueryOptions;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export function marketCurrenciesQueryOptions(
|
|
74
|
+
params: MarketCurrenciesQueryOptions,
|
|
75
|
+
) {
|
|
76
|
+
const enabled = Boolean(
|
|
77
|
+
params.chainId && params.config && (params.query?.enabled ?? true),
|
|
78
|
+
);
|
|
66
79
|
|
|
67
|
-
export const currenciesOptions = (
|
|
68
|
-
args: UseMarketCurrenciesArgs,
|
|
69
|
-
config: SdkConfig,
|
|
70
|
-
) => {
|
|
71
80
|
return queryOptions({
|
|
72
|
-
...
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
queryKey: [...currencyKeys.lists, params],
|
|
82
|
+
queryFn: () =>
|
|
83
|
+
fetchMarketCurrencies({
|
|
84
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
85
|
+
chainId: params.chainId!,
|
|
86
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
87
|
+
config: params.config!,
|
|
88
|
+
includeNativeCurrency: params.includeNativeCurrency,
|
|
89
|
+
collectionAddress: params.collectionAddress,
|
|
90
|
+
}),
|
|
91
|
+
...params.query,
|
|
92
|
+
enabled,
|
|
80
93
|
});
|
|
81
|
-
}
|
|
94
|
+
}
|
|
@@ -15,7 +15,7 @@ export const fetchMarketplaceConfig = async ({
|
|
|
15
15
|
prefetchedMarketplaceSettings,
|
|
16
16
|
}: {
|
|
17
17
|
config: SdkConfig;
|
|
18
|
-
prefetchedMarketplaceSettings?: LookupMarketplaceReturn;
|
|
18
|
+
prefetchedMarketplaceSettings?: LookupMarketplaceReturn;
|
|
19
19
|
}): Promise<MarketplaceConfig> => {
|
|
20
20
|
let builderMarketplaceConfig = prefetchedMarketplaceSettings;
|
|
21
21
|
|
|
@@ -38,7 +38,7 @@ export const fetchMarketplaceConfig = async ({
|
|
|
38
38
|
} satisfies MarketCollection;
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
-
const shopCollections = builderMarketplaceConfig.shopCollections.map(
|
|
41
|
+
const shopCollections = (builderMarketplaceConfig.shopCollections ?? []).map(
|
|
42
42
|
(collection) => {
|
|
43
43
|
return {
|
|
44
44
|
...collection,
|
|
@@ -72,14 +72,14 @@ export const fetchMarketplaceConfig = async ({
|
|
|
72
72
|
market: {
|
|
73
73
|
...marketplaceConfig.market,
|
|
74
74
|
...overrides.market,
|
|
75
|
-
//@ts-expect-error - TODO: Fix this partial type
|
|
75
|
+
//@ts-expect-error - TODO: Fix this partial type. We need to align new-marketplace-types with builder.gen.ts
|
|
76
76
|
collections:
|
|
77
77
|
overrides.market?.collections ?? marketplaceConfig.market.collections,
|
|
78
78
|
},
|
|
79
79
|
shop: {
|
|
80
80
|
...marketplaceConfig.shop,
|
|
81
81
|
...overrides.shop,
|
|
82
|
-
//@ts-expect-error - TODO: Fix this partial type
|
|
82
|
+
//@ts-expect-error - TODO: Fix this partial type. We need to align new-marketplace-types with builder.gen.ts
|
|
83
83
|
collections:
|
|
84
84
|
overrides.shop?.collections ?? marketplaceConfig.shop.collections,
|
|
85
85
|
},
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { infiniteQueryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { Address } from 'viem';
|
|
3
|
+
import type { SdkConfig } from '../../types';
|
|
4
|
+
import {
|
|
5
|
+
getMarketplaceClient,
|
|
6
|
+
type ListPrimarySaleItemsArgs,
|
|
7
|
+
type ListPrimarySaleItemsReturn,
|
|
8
|
+
type Page,
|
|
9
|
+
type PrimarySaleItemsFilter,
|
|
10
|
+
type ValuesOptional,
|
|
11
|
+
} from '../_internal';
|
|
12
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
13
|
+
|
|
14
|
+
export interface FetchPrimarySaleItemsParams {
|
|
15
|
+
chainId: number;
|
|
16
|
+
primarySaleContractAddress: Address;
|
|
17
|
+
filter?: PrimarySaleItemsFilter;
|
|
18
|
+
page?: Page;
|
|
19
|
+
config: SdkConfig;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Fetches primary sale items from the marketplace API
|
|
24
|
+
*/
|
|
25
|
+
export async function fetchPrimarySaleItems(
|
|
26
|
+
params: FetchPrimarySaleItemsParams,
|
|
27
|
+
): Promise<ListPrimarySaleItemsReturn> {
|
|
28
|
+
const { chainId, primarySaleContractAddress, filter, page, config } = params;
|
|
29
|
+
|
|
30
|
+
const marketplaceClient = getMarketplaceClient(config);
|
|
31
|
+
|
|
32
|
+
return marketplaceClient.listPrimarySaleItems({
|
|
33
|
+
chainId: String(chainId),
|
|
34
|
+
primarySaleContractAddress,
|
|
35
|
+
filter,
|
|
36
|
+
page,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type ListPrimarySaleItemsQueryOptions =
|
|
41
|
+
ValuesOptional<FetchPrimarySaleItemsParams> & {
|
|
42
|
+
query?: StandardQueryOptions;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const listPrimarySaleItemsQueryOptions = (
|
|
46
|
+
params: ListPrimarySaleItemsQueryOptions,
|
|
47
|
+
) => {
|
|
48
|
+
const enabled = Boolean(
|
|
49
|
+
params.primarySaleContractAddress &&
|
|
50
|
+
params.chainId &&
|
|
51
|
+
params.config &&
|
|
52
|
+
(params.query?.enabled ?? true),
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
type PageParam = { page: number; pageSize: number };
|
|
56
|
+
const initialPage: PageParam = { page: 1, pageSize: 30 };
|
|
57
|
+
|
|
58
|
+
return infiniteQueryOptions({
|
|
59
|
+
queryKey: ['listPrimarySaleItems', params],
|
|
60
|
+
queryFn: async ({ pageParam }) => {
|
|
61
|
+
return fetchPrimarySaleItems({
|
|
62
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
63
|
+
chainId: params.chainId!,
|
|
64
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
65
|
+
primarySaleContractAddress: params.primarySaleContractAddress!,
|
|
66
|
+
filter: params.filter,
|
|
67
|
+
page: pageParam,
|
|
68
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
69
|
+
config: params.config!,
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
initialPageParam: initialPage,
|
|
73
|
+
getNextPageParam: (lastPage) =>
|
|
74
|
+
lastPage.page?.more
|
|
75
|
+
? {
|
|
76
|
+
page: (lastPage.page?.page || 1) + 1,
|
|
77
|
+
pageSize: lastPage.page?.pageSize || 30,
|
|
78
|
+
}
|
|
79
|
+
: undefined,
|
|
80
|
+
...params.query,
|
|
81
|
+
enabled,
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export type { ListPrimarySaleItemsArgs, ListPrimarySaleItemsReturn };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { Address } from 'viem';
|
|
3
|
+
import type { SdkConfig } from '../../types';
|
|
4
|
+
import {
|
|
5
|
+
type GetCountOfPrimarySaleItemsReturn,
|
|
6
|
+
getMarketplaceClient,
|
|
7
|
+
type PrimarySaleItemsFilter,
|
|
8
|
+
} from '../_internal';
|
|
9
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
10
|
+
|
|
11
|
+
export interface FetchPrimarySaleItemsCountParams {
|
|
12
|
+
chainId: number;
|
|
13
|
+
primarySaleContractAddress: Address;
|
|
14
|
+
filter?: PrimarySaleItemsFilter;
|
|
15
|
+
config: SdkConfig;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Fetches the count of primary sale items from the marketplace API
|
|
20
|
+
*/
|
|
21
|
+
export async function fetchPrimarySaleItemsCount(
|
|
22
|
+
params: FetchPrimarySaleItemsCountParams,
|
|
23
|
+
): Promise<GetCountOfPrimarySaleItemsReturn> {
|
|
24
|
+
const { chainId, primarySaleContractAddress, filter, config } = params;
|
|
25
|
+
|
|
26
|
+
const marketplaceClient = getMarketplaceClient(config);
|
|
27
|
+
return marketplaceClient.getCountOfPrimarySaleItems({
|
|
28
|
+
chainId: String(chainId),
|
|
29
|
+
primarySaleContractAddress,
|
|
30
|
+
filter,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export type PrimarySaleItemsCountQueryOptions =
|
|
35
|
+
Partial<FetchPrimarySaleItemsCountParams> & {
|
|
36
|
+
query?: StandardQueryOptions;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const primarySaleItemsCountQueryOptions = (
|
|
40
|
+
args: PrimarySaleItemsCountQueryOptions,
|
|
41
|
+
) => {
|
|
42
|
+
const enabled = Boolean(
|
|
43
|
+
args.primarySaleContractAddress &&
|
|
44
|
+
args.chainId &&
|
|
45
|
+
args.config &&
|
|
46
|
+
(args.query?.enabled ?? true),
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
return queryOptions({
|
|
50
|
+
queryKey: ['primarySaleItemsCount', args],
|
|
51
|
+
queryFn: () =>
|
|
52
|
+
fetchPrimarySaleItemsCount({
|
|
53
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
54
|
+
chainId: args.chainId!,
|
|
55
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
56
|
+
primarySaleContractAddress: args.primarySaleContractAddress!,
|
|
57
|
+
filter: args.filter,
|
|
58
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
59
|
+
config: args.config!,
|
|
60
|
+
}),
|
|
61
|
+
...args.query,
|
|
62
|
+
enabled,
|
|
63
|
+
});
|
|
64
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { GetTokenSuppliesArgs } from '@0xsequence/indexer';
|
|
2
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
3
|
+
import type { SdkConfig } from '../../types';
|
|
4
|
+
import {
|
|
5
|
+
getIndexerClient,
|
|
6
|
+
LaosAPI,
|
|
7
|
+
tokenKeys,
|
|
8
|
+
type ValuesOptional,
|
|
9
|
+
} from '../_internal';
|
|
10
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
11
|
+
|
|
12
|
+
export interface FetchTokenSuppliesParams
|
|
13
|
+
extends Omit<GetTokenSuppliesArgs, 'contractAddress'> {
|
|
14
|
+
chainId: number;
|
|
15
|
+
collectionAddress: string;
|
|
16
|
+
config: SdkConfig;
|
|
17
|
+
isLaos721?: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Fetches token supplies with support for both indexer and LAOS APIs
|
|
22
|
+
* Uses the more efficient single-contract APIs from both services
|
|
23
|
+
*/
|
|
24
|
+
export async function fetchTokenSupplies(params: FetchTokenSuppliesParams) {
|
|
25
|
+
const { chainId, collectionAddress, config, isLaos721, ...rest } = params;
|
|
26
|
+
|
|
27
|
+
if (isLaos721) {
|
|
28
|
+
const laosApi = new LaosAPI();
|
|
29
|
+
|
|
30
|
+
// Convert indexer Page format to LAOS PaginationOptions format
|
|
31
|
+
const laosPage = rest.page
|
|
32
|
+
? {
|
|
33
|
+
sort:
|
|
34
|
+
rest.page.sort?.map((sortBy) => ({
|
|
35
|
+
column: sortBy.column,
|
|
36
|
+
order: sortBy.order,
|
|
37
|
+
})) || [],
|
|
38
|
+
}
|
|
39
|
+
: undefined;
|
|
40
|
+
|
|
41
|
+
const result = await laosApi.getTokenSupplies({
|
|
42
|
+
chainId: chainId.toString(),
|
|
43
|
+
contractAddress: collectionAddress,
|
|
44
|
+
includeMetadata: rest.includeMetadata,
|
|
45
|
+
page: laosPage,
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const indexerClient = getIndexerClient(chainId, config);
|
|
52
|
+
|
|
53
|
+
const apiArgs: GetTokenSuppliesArgs = {
|
|
54
|
+
contractAddress: collectionAddress,
|
|
55
|
+
...rest,
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const result = await indexerClient.getTokenSupplies(apiArgs);
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export type TokenSuppliesQueryOptions =
|
|
63
|
+
ValuesOptional<FetchTokenSuppliesParams> & {
|
|
64
|
+
query?: StandardQueryOptions;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export function tokenSuppliesQueryOptions(params: TokenSuppliesQueryOptions) {
|
|
68
|
+
const enabled = Boolean(
|
|
69
|
+
params.chainId &&
|
|
70
|
+
params.collectionAddress &&
|
|
71
|
+
params.config &&
|
|
72
|
+
(params.query?.enabled ?? true),
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
return queryOptions({
|
|
76
|
+
queryKey: [...tokenKeys.supplies, params],
|
|
77
|
+
queryFn: () =>
|
|
78
|
+
fetchTokenSupplies({
|
|
79
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
80
|
+
chainId: params.chainId!,
|
|
81
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
82
|
+
collectionAddress: params.collectionAddress!,
|
|
83
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
84
|
+
config: params.config!,
|
|
85
|
+
isLaos721: params.isLaos721,
|
|
86
|
+
includeMetadata: params.includeMetadata,
|
|
87
|
+
metadataOptions: params.metadataOptions,
|
|
88
|
+
page: params.page,
|
|
89
|
+
}),
|
|
90
|
+
...params.query,
|
|
91
|
+
enabled,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
@@ -72,7 +72,7 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
|
|
|
72
72
|
],
|
|
73
73
|
"enabled": true,
|
|
74
74
|
"ogImage": "https://example.com/og-image.png",
|
|
75
|
-
"
|
|
75
|
+
"private": false,
|
|
76
76
|
},
|
|
77
77
|
"projectId": NaN,
|
|
78
78
|
"settings": {
|
|
@@ -112,6 +112,11 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
|
|
|
112
112
|
"projectId": 1,
|
|
113
113
|
"saleAddress": "0x0000000000000000000000000000000000000000",
|
|
114
114
|
"saleBannerUrl": "https://example.com/shop-sale-banner.png",
|
|
115
|
+
"tokenIds": [
|
|
116
|
+
"1",
|
|
117
|
+
"2",
|
|
118
|
+
"3",
|
|
119
|
+
],
|
|
115
120
|
"updatedAt": "2025-03-16T13:04:16.098Z",
|
|
116
121
|
},
|
|
117
122
|
{
|
|
@@ -125,12 +130,17 @@ exports[`createSSRClient > should fetch marketplace config successfully 1`] = `
|
|
|
125
130
|
"projectId": 1,
|
|
126
131
|
"saleAddress": "0x1234567890123456789012345678901234567890",
|
|
127
132
|
"saleBannerUrl": "https://example.com/polygon-shop-sale-banner.png",
|
|
133
|
+
"tokenIds": [
|
|
134
|
+
"4",
|
|
135
|
+
"5",
|
|
136
|
+
"6",
|
|
137
|
+
],
|
|
128
138
|
"updatedAt": "2025-03-16T13:04:16.098Z",
|
|
129
139
|
},
|
|
130
140
|
],
|
|
131
141
|
"enabled": true,
|
|
132
142
|
"ogImage": "https://example.com/shop-og-image.png",
|
|
133
|
-
"
|
|
143
|
+
"private": false,
|
|
134
144
|
},
|
|
135
145
|
}
|
|
136
146
|
`;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type State
|
|
1
|
+
import { cookieToInitialState, type State } from 'wagmi';
|
|
2
2
|
import type { SdkConfig } from '../../types/sdk-config';
|
|
3
3
|
import { getQueryClient } from '../_internal/api/get-query-client';
|
|
4
4
|
import { createWagmiConfig } from '../_internal/wagmi/create-config';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard query options that can be used across all marketplace SDK hooks
|
|
3
|
+
*
|
|
4
|
+
* Based on TanStack Query v5 UseQueryOptions, but simplified, the type from TanStack is hard to modify
|
|
5
|
+
*/
|
|
6
|
+
export interface StandardQueryOptions<TError = Error> {
|
|
7
|
+
/** Whether the query should be enabled/disabled */
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
/** Time in milliseconds that data is considered fresh */
|
|
10
|
+
staleTime?: number;
|
|
11
|
+
gcTime?: number;
|
|
12
|
+
// biome-ignore lint/suspicious/noExplicitAny: TanStack Query requires any type for query parameter
|
|
13
|
+
refetchInterval?: number | false | ((query: any) => number | false);
|
|
14
|
+
refetchOnWindowFocus?: boolean;
|
|
15
|
+
refetchOnMount?: boolean;
|
|
16
|
+
refetchOnReconnect?: boolean;
|
|
17
|
+
retry?: boolean | number | ((failureCount: number, error: TError) => boolean);
|
|
18
|
+
retryDelay?: number | ((retryAttempt: number, error: TError) => number);
|
|
19
|
+
// select is not supported for now
|
|
20
|
+
// select?: <TSelected = TData>(data: TData) => TSelected;
|
|
21
|
+
suspense?: boolean;
|
|
22
|
+
/** Placeholder data is not supported for now */
|
|
23
|
+
// placeholderData?: TData | (() => TData);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Standard infinite query options that can be used across all marketplace SDK hooks
|
|
28
|
+
* that support infinite pagination
|
|
29
|
+
*/
|
|
30
|
+
export interface StandardInfiniteQueryOptions<TError = Error>
|
|
31
|
+
extends StandardQueryOptions<TError> {
|
|
32
|
+
/** Maximum number of pages to fetch */
|
|
33
|
+
maxPages?: number;
|
|
34
|
+
}
|