@0xsequence/marketplace-sdk 0.8.12 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/main.ts +63 -0
- package/.storybook/preview.ts +24 -0
- package/.storybook/vitest.setup.ts +6 -0
- package/CHANGELOG.md +158 -21
- package/dist/{CartIcon-Bll1rbxv.js → CalendarIcon-CqsuAuCm.js} +30 -77
- package/dist/CalendarIcon-CqsuAuCm.js.map +1 -0
- package/dist/{types-BIJOaL4j.d.ts → CollectibleCard-Dd-CG6dE.d.ts} +11 -7
- package/dist/InfoIcon-v0w_Lu7t.js +53 -0
- package/dist/InfoIcon-v0w_Lu7t.js.map +1 -0
- package/dist/_internal-C75gOSNo.js +14 -0
- package/dist/_internal-C75gOSNo.js.map +1 -0
- package/dist/actionModal-CMUeVsFX.js +116 -0
- package/dist/actionModal-CMUeVsFX.js.map +1 -0
- package/dist/{alien_swap-B_76IMma.js → alien_swap-CYv6YlOF.js} +1 -1
- package/dist/{alien_swap-B_76IMma.js.map → alien_swap-CYv6YlOF.js.map} +1 -1
- package/dist/{api-1KFxYh7o.js → api-BiMGqWdz.js} +79 -87
- package/dist/api-BiMGqWdz.js.map +1 -0
- package/dist/{aqua-xyz-CMN_TFY5.js → aqua-xyz-Bzn5baeH.js} +1 -1
- package/dist/{aqua-xyz-CMN_TFY5.js.map → aqua-xyz-Bzn5baeH.js.map} +1 -1
- package/dist/{aura-Cye_TuHj.js → aura-DzIWh8WT.js} +1 -1
- package/dist/{aura-Cye_TuHj.js.map → aura-DzIWh8WT.js.map} +1 -1
- package/dist/base-DqaJPvfN.js +22 -0
- package/dist/base-DqaJPvfN.js.map +1 -0
- package/dist/{blur-DWDMyMpK.js → blur-DSH-Cbpj.js} +1 -1
- package/dist/{blur-DWDMyMpK.js.map → blur-DSH-Cbpj.js.map} +1 -1
- package/dist/{builder-api-BQvzykoU.js → builder-api-BFuZNOaN.js} +2 -2
- package/dist/{builder-api-BQvzykoU.js.map → builder-api-BFuZNOaN.js.map} +1 -1
- package/dist/{builder.gen-CxP9NT1p.js → builder.gen-B9wR2nvF.js} +1 -1
- package/dist/builder.gen-B9wR2nvF.js.map +1 -0
- package/dist/{coinbase-ByA_XRB0.js → coinbase-Df8URNxq.js} +1 -1
- package/dist/{coinbase-ByA_XRB0.js.map → coinbase-Df8URNxq.js.map} +1 -1
- package/dist/{sdk-config-DJzxVPld.d.ts → create-config-DKJ-F0jc.d.ts} +458 -86
- package/dist/{wagmi-DRctYEk6.js → create-config-fQ-jbJD1.js} +33 -16
- package/dist/create-config-fQ-jbJD1.js.map +1 -0
- package/dist/{element-b77CyXIZ.js → element-Cx6uJu5N.js} +1 -1
- package/dist/{element-b77CyXIZ.js.map → element-Cx6uJu5N.js.map} +1 -1
- package/dist/{foundation-DbOrKP9Y.js → foundation-D6U4aRLN.js} +1 -1
- package/dist/{foundation-DbOrKP9Y.js.map → foundation-D6U4aRLN.js.map} +1 -1
- package/dist/get-provider-CYYHfrlg.js +10 -0
- package/dist/get-provider-CYYHfrlg.js.map +1 -0
- package/dist/get-query-client-D19vvfJo.js +23 -0
- package/dist/get-query-client-D19vvfJo.js.map +1 -0
- package/dist/hooks-4pxIbLbM.js +4044 -0
- package/dist/hooks-4pxIbLbM.js.map +1 -0
- package/dist/{index-1bezgsFq.d.ts → index-136YrWDH.d.ts} +929 -255
- package/dist/{index-D5v5iluA.d.ts → index-BAhaEfqY.d.ts} +1 -1
- package/dist/index-BKBin-rq.d.ts +979 -0
- package/dist/index-BUWB_RXp.d.ts +3144 -0
- package/dist/{index-Cl7PQOGu.d.ts → index-BhVFc2rX.d.ts} +28 -25
- package/dist/{index-DXMfTZ1F.d.ts → index-C5aqo8xu.d.ts} +1 -1
- package/dist/{index-BIMIpDiI.d.ts → index-CKrYP7ot.d.ts} +74 -103
- package/dist/{index-BEYefG1G.d.ts → index-CUwMH7Ht.d.ts} +5 -5
- package/dist/{index-BjIwVzc4.d.ts → index-Cu70Lw-w.d.ts} +238 -238
- package/dist/index.css +427 -1
- package/dist/index.d.ts +8 -10
- package/dist/index.js +15 -11
- package/dist/{looks-rare-C1VqNcSM.js → looks-rare-ChBRBY-p.js} +1 -1
- package/dist/{looks-rare-C1VqNcSM.js.map → looks-rare-ChBRBY-p.js.map} +1 -1
- package/dist/{magic-eden-ea_AGCZr.js → magic-eden-D5U7N1xL.js} +1 -1
- package/dist/{magic-eden-ea_AGCZr.js.map → magic-eden-D5U7N1xL.js.map} +1 -1
- package/dist/{manifold-8y8J2sjT.js → manifold-CtLF52zU.js} +1 -1
- package/dist/{manifold-8y8J2sjT.js.map → manifold-CtLF52zU.js.map} +1 -1
- package/dist/{marketplace-nwnZv9Cb.js → marketplace-DmFiyBoS.js} +1 -1
- package/dist/{marketplace-nwnZv9Cb.js.map → marketplace-DmFiyBoS.js.map} +1 -1
- package/dist/{marketplace-logos-CSeGcPW4.js → marketplace-logos-Cd6W-qOq.js} +21 -21
- package/dist/{marketplace-logos-CSeGcPW4.js.map → marketplace-logos-Cd6W-qOq.js.map} +1 -1
- package/dist/{marketplace.gen-Dqk8vRmD.js → marketplace.gen-HpnpL5xU.js} +12 -3
- package/dist/marketplace.gen-HpnpL5xU.js.map +1 -0
- package/dist/{marketplaceConfig-D2MYFqll.js → marketplaceConfig-GQTTmihy.js} +3 -3
- package/dist/marketplaceConfig-GQTTmihy.js.map +1 -0
- package/dist/{mintify-LA68TzWg.js → mintify-Bi3Bce68.js} +1 -1
- package/dist/{mintify-LA68TzWg.js.map → mintify-Bi3Bce68.js.map} +1 -1
- package/dist/network-CGD0oKtS.js +15 -0
- package/dist/network-CGD0oKtS.js.map +1 -0
- package/dist/{nftx-D3Tc8nzd.js → nftx-BDQZjtkX.js} +1 -1
- package/dist/{nftx-D3Tc8nzd.js.map → nftx-BDQZjtkX.js.map} +1 -1
- package/dist/{okx-hbqg6oIJ.js → okx-D4meadLe.js} +1 -1
- package/dist/{okx-hbqg6oIJ.js.map → okx-D4meadLe.js.map} +1 -1
- package/dist/{open-sea-BccuK8-t.js → open-sea-DN0hgfVw.js} +1 -1
- package/dist/{open-sea-BccuK8-t.js.map → open-sea-DN0hgfVw.js.map} +1 -1
- package/dist/options-BBBR8u_4.js +0 -0
- package/dist/{primary-sale-Cw95phYC.js → primary-sale-CmWxSfFQ.js} +279 -279
- package/dist/primary-sale-CmWxSfFQ.js.map +1 -0
- package/dist/provider-DPGUA10G.js +125 -0
- package/dist/provider-DPGUA10G.js.map +1 -0
- package/dist/queries-Ce_2othB.js +757 -0
- package/dist/queries-Ce_2othB.js.map +1 -0
- package/dist/{rarible-BgTwwj9g.js → rarible-B0xlD88A.js} +1 -1
- package/dist/{rarible-BgTwwj9g.js.map → rarible-B0xlD88A.js.map} +1 -1
- package/dist/react/_internal/api/index.d.ts +2 -4
- package/dist/react/_internal/api/index.js +9 -6
- package/dist/react/_internal/databeat/index.d.ts +2 -73
- package/dist/react/_internal/databeat/index.js +4 -21
- package/dist/react/_internal/index.d.ts +2 -7
- package/dist/react/_internal/index.js +13 -8
- package/dist/react/_internal/wagmi/index.d.ts +2 -4
- package/dist/react/_internal/wagmi/index.js +6 -4
- package/dist/react/hooks/index.d.ts +13 -17
- package/dist/react/hooks/index.js +25 -21
- package/dist/react/hooks/options/index.d.ts +3 -5
- package/dist/react/hooks/options/index.js +15 -10
- package/dist/react/index.d.ts +13 -40
- package/dist/react/index.js +30 -21
- package/dist/react/queries/index.d.ts +9 -8
- package/dist/react/queries/index.js +22 -17
- package/dist/react/ssr/index.d.ts +7 -9
- package/dist/react/ssr/index.js +13 -8
- package/dist/react/ssr/index.js.map +1 -1
- package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +3 -9
- package/dist/react/ui/components/marketplace-collectible-card/index.js +29 -20
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -7
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +13 -8
- package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
- package/dist/react/ui/components/marketplace-logos/index.js +1 -1
- package/dist/react/ui/icons/index.js +14 -10
- package/dist/react/ui/index.d.ts +3 -9
- package/dist/react/ui/index.js +29 -20
- package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +5 -5
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +25 -20
- package/dist/{react-BG7o4PId.js → react-DP0M2Wfm.js} +4919 -7839
- package/dist/react-DP0M2Wfm.js.map +1 -0
- package/dist/{react-BbHBl6gg.css → react-DeDyTgo7.css} +1 -1
- package/dist/{react-BbHBl6gg.css.map → react-DeDyTgo7.css.map} +1 -1
- package/dist/{sequence-Do3kzb4J.js → sequence-BIrOVRXO.js} +1 -1
- package/dist/{sequence-Do3kzb4J.js.map → sequence-BIrOVRXO.js.map} +1 -1
- package/dist/{sudo-swap-B6vPKxBz.js → sudo-swap-BPMon-M5.js} +1 -1
- package/dist/{sudo-swap-B6vPKxBz.js.map → sudo-swap-BPMon-M5.js.map} +1 -1
- package/dist/{super-rare-eCm1SE6O.js → super-rare-kPN6Ua8i.js} +1 -1
- package/dist/{super-rare-eCm1SE6O.js.map → super-rare-kPN6Ua8i.js.map} +1 -1
- package/dist/{token-CO5llIla.js → token-CHSBPYVG.js} +1540 -761
- package/dist/token-CHSBPYVG.js.map +1 -0
- package/dist/{transaction-CcVViHEL.js → transaction-CnctdNzS.js} +3 -21
- package/dist/transaction-CnctdNzS.js.map +1 -0
- package/dist/types/index.d.ts +2 -3
- package/dist/types/index.js +3 -3
- package/dist/{types-DwWE6xOF.js → types-Yw2ywj6j.js} +1 -1
- package/dist/types-Yw2ywj6j.js.map +1 -0
- package/dist/utils/abi/index.d.ts +5 -5
- package/dist/utils/abi/index.js +5 -5
- package/dist/utils/abi/marketplace/index.d.ts +1 -1
- package/dist/utils/abi/marketplace/index.js +1 -1
- package/dist/utils/abi/primary-sale/index.d.ts +1 -1
- package/dist/utils/abi/primary-sale/index.js +1 -1
- package/dist/utils/abi/token/index.d.ts +2 -2
- package/dist/utils/abi/token/index.js +2 -2
- package/dist/utils/index.d.ts +7 -8
- package/dist/utils/index.js +13 -10
- package/dist/{utils-BFdxaToy.js → utils-9RXDgcBl.js} +86 -93
- package/dist/utils-9RXDgcBl.js.map +1 -0
- package/dist/{utils-Cat9_pef.js → utils-DjVJ9tov.js} +5 -6
- package/dist/utils-DjVJ9tov.js.map +1 -0
- package/dist/wagmi-Do_KW5ke.js +0 -0
- package/dist/{x2y2-DD17tT91.js → x2y2-BLz-_Q2O.js} +1 -1
- package/dist/{x2y2-DD17tT91.js.map → x2y2-BLz-_Q2O.js.map} +1 -1
- package/dist/{zora-BpSG9UzS.js → zora-UGhKs-aL.js} +1 -1
- package/dist/{zora-BpSG9UzS.js.map → zora-UGhKs-aL.js.map} +1 -1
- package/eslint/use-client.js +0 -6
- package/eslint.config.mjs +4 -0
- package/package.json +47 -35
- package/postcss.config.mjs +6 -0
- package/src/index.css +5 -4
- package/src/index.ts +2 -1
- package/src/react/__tests__/provider.test.tsx +4 -3
- package/src/react/_internal/api/__mocks__/builder.msw.ts +5 -3
- package/src/react/_internal/api/__mocks__/indexer.msw.ts +24 -8
- package/src/react/_internal/api/__mocks__/laos.msw.ts +387 -0
- package/src/react/_internal/api/__mocks__/marketplace.msw.ts +6 -6
- package/src/react/_internal/api/__mocks__/metadata.msw.ts +1 -1
- package/src/react/_internal/api/__tests__/laos-api.test.ts +756 -0
- package/src/react/_internal/api/builder.gen.ts +6 -6
- package/src/react/_internal/api/get-query-client.ts +2 -2
- package/src/react/_internal/api/index.ts +2 -2
- package/src/react/_internal/api/laos-api.ts +3 -0
- package/src/react/_internal/api/marketplace.gen.ts +43 -3
- package/src/react/_internal/api/query-keys.ts +21 -6
- package/src/react/_internal/api/services.ts +30 -45
- package/src/react/_internal/databeat/index.ts +15 -14
- package/src/react/_internal/databeat/types.ts +22 -0
- package/src/react/_internal/databeat/utils.ts +26 -0
- package/src/react/_internal/index.ts +1 -1
- package/src/react/_internal/types.ts +10 -23
- package/src/react/_internal/utils.ts +4 -5
- package/src/react/_internal/wagmi/create-config.ts +43 -19
- package/src/react/_internal/wagmi/get-connectors.ts +9 -7
- package/src/react/_internal/wallet/__tests__/wallet.test.ts +1 -1
- package/src/react/_internal/wallet/wallet.ts +22 -22
- package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +20 -0
- package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +12 -2
- package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +1 -1
- package/src/react/hooks/__tests__/useBalanceOfCollectible.laos.test.tsx +367 -0
- package/src/react/hooks/__tests__/useBalanceOfCollectible.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCancelOrder.test.tsx +4 -4
- package/src/react/hooks/__tests__/useCancelTransactionSteps.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCheckoutOptions.test.tsx +158 -0
- package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +42 -65
- package/src/react/hooks/__tests__/useCollectible.test.tsx +14 -16
- package/src/react/hooks/__tests__/useCollection.test.tsx +4 -4
- package/src/react/hooks/__tests__/useCollectionBalanceDetails.test.tsx +16 -25
- package/src/react/hooks/__tests__/useCollectionDetails.test.tsx +1 -1
- package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +12 -4
- package/src/react/hooks/__tests__/useComparePrices.test.tsx +7 -6
- package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +4 -4
- package/src/react/hooks/__tests__/useCountListingsForCollectible.test.tsx +2 -2
- package/src/react/hooks/__tests__/useCountOfCollectables.test.tsx +5 -5
- package/src/react/hooks/__tests__/useCountOffersForCollectible.test.tsx +2 -2
- package/src/react/hooks/__tests__/useCurrency.test.tsx +5 -3
- package/src/react/hooks/__tests__/useCurrencyBalance.test.tsx +7 -3
- package/src/react/hooks/__tests__/useFilters.test.tsx +3 -3
- package/src/react/hooks/__tests__/useFloorOrder.test.tsx +4 -4
- package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +3 -3
- package/src/react/hooks/__tests__/useGenerateListingTransaction.test.tsx +1 -1
- package/src/react/hooks/__tests__/useGenerateOfferTransaction.test.tsx +1 -1
- package/src/react/hooks/__tests__/useGenerateSellTransaction.test.tsx +1 -1
- package/src/react/hooks/__tests__/useGetTokenRanges.test.tsx +111 -0
- package/src/react/hooks/__tests__/useHighestOffer.test.tsx +4 -4
- package/src/react/hooks/__tests__/useInventory.test.tsx +1 -1
- package/src/react/hooks/__tests__/useListCollectibleActivities.test.tsx +11 -13
- package/src/react/hooks/__tests__/useListCollectibles.test.tsx +5 -5
- package/src/react/hooks/__tests__/useListCollectiblesPaginated.test.tsx +10 -15
- package/src/react/hooks/__tests__/useListCollectionActivities.test.tsx +13 -15
- package/src/react/hooks/__tests__/useListCollections.test.tsx +3 -3
- package/src/react/hooks/__tests__/useListListingsForCollectible.test.tsx +3 -2
- package/src/react/hooks/__tests__/useListMarketCardData.test.tsx +301 -0
- package/src/react/hooks/__tests__/useListOffersForCollectible.test.tsx +1 -1
- package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +137 -0
- package/src/react/hooks/__tests__/useLowestListing.test.tsx +1 -1
- package/src/react/hooks/__tests__/useMarketCurrencies.test.tsx +1 -1
- package/src/react/hooks/__tests__/useRoyalty.test.tsx +0 -23
- package/src/react/hooks/__tests__/useTransferTokens.test.tsx +469 -0
- package/src/react/hooks/index.ts +29 -24
- package/src/react/hooks/options/index.ts +0 -1
- package/src/react/hooks/useAutoSelectFeeOption.tsx +1 -1
- package/src/react/hooks/useBalanceOfCollectible.tsx +1 -1
- package/src/react/hooks/useCancelTransactionSteps.tsx +2 -2
- package/src/react/hooks/useCheckoutOptions.tsx +84 -54
- package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +98 -57
- package/src/react/hooks/useCollectible.tsx +64 -49
- package/src/react/hooks/useCollection.tsx +60 -11
- package/src/react/hooks/useCollectionBalanceDetails.tsx +93 -73
- package/src/react/hooks/useCollectionDetails.ts +69 -0
- package/src/react/hooks/useCollectionDetailsPolling.tsx +7 -3
- package/src/react/hooks/useComparePrices.tsx +91 -86
- package/src/react/hooks/useConvertPriceToUSD.tsx +83 -86
- package/src/react/hooks/useCountListingsForCollectible.tsx +64 -53
- package/src/react/hooks/useCountOfCollectables.tsx +60 -69
- package/src/react/hooks/useCountOfPrimarySaleItems.tsx +13 -0
- package/src/react/hooks/useCountOffersForCollectible.tsx +64 -53
- package/src/react/hooks/useCurrency.tsx +56 -64
- package/src/react/hooks/useCurrencyBalance.tsx +132 -46
- package/src/react/hooks/useERC721SaleMintedTokens.tsx +8 -5
- package/src/react/hooks/useFilterState.tsx +1 -2
- package/src/react/hooks/useFilters.tsx +154 -111
- package/src/react/hooks/useFloorOrder.tsx +65 -40
- package/src/react/hooks/useGenerateCancelTransaction.tsx +5 -10
- package/src/react/hooks/useGenerateListingTransaction.tsx +1 -1
- package/src/react/hooks/useGenerateOfferTransaction.tsx +1 -1
- package/src/react/hooks/useGenerateSellTransaction.tsx +5 -10
- package/src/react/hooks/useGetCountOfPrimarySaleItems.tsx +48 -0
- package/src/react/hooks/useGetReceiptFromHash.tsx +32 -3
- package/src/react/hooks/useGetTokenRanges.tsx +92 -0
- package/src/react/hooks/useHighestOffer.tsx +68 -4
- package/src/react/hooks/useInventory.tsx +1 -1
- package/src/react/hooks/useList1155ShopCardData.tsx +57 -82
- package/src/react/hooks/useList721ShopCardData.tsx +98 -63
- package/src/react/hooks/useListBalances.tsx +1 -1
- package/src/react/hooks/useListCollectibleActivities.tsx +89 -50
- package/src/react/hooks/useListCollectibles.tsx +81 -16
- package/src/react/hooks/useListCollectiblesPaginated.tsx +96 -66
- package/src/react/hooks/useListCollectionActivities.tsx +84 -50
- package/src/react/hooks/useListCollections.tsx +71 -17
- package/src/react/hooks/useListListingsForCollectible.tsx +90 -50
- package/src/react/hooks/useListMarketCardData.tsx +3 -2
- package/src/react/hooks/useListOffersForCollectible.tsx +9 -14
- package/src/react/hooks/useListPrimarySaleItems.tsx +66 -0
- package/src/react/hooks/useListShopCardData.tsx +70 -0
- package/src/react/hooks/useListTokenMetadata.ts +64 -12
- package/src/react/hooks/useListTokenMetadata.tsx +73 -0
- package/src/react/hooks/useLowestListing.tsx +68 -4
- package/src/react/hooks/useMarketCurrencies.tsx +62 -5
- package/src/react/hooks/useOpenConnectModal.tsx +9 -0
- package/src/react/hooks/useRoyalty.tsx +57 -13
- package/src/react/hooks/useShopCollectibleSaleData.tsx +349 -0
- package/src/react/hooks/useTokenSaleDetailsBatch.tsx +3 -7
- package/src/react/hooks/useTokenSupplies.ts +81 -0
- package/src/react/hooks/useTransferTokens.tsx +2 -2
- package/src/react/hooks/util/optimisticCancelUpdates.ts +5 -7
- package/src/react/index.ts +5 -3
- package/src/react/provider.tsx +73 -9
- package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +123 -0
- package/src/react/queries/__tests__/inventory.laos.test.ts +496 -0
- package/src/react/queries/balanceOfCollectible.ts +8 -5
- package/src/react/queries/checkoutOptions.ts +85 -0
- package/src/react/queries/checkoutOptionsSalesContract.ts +89 -0
- package/src/react/queries/collectible.ts +66 -0
- package/src/react/queries/collection.ts +55 -0
- package/src/react/queries/collectionBalanceDetails.ts +92 -0
- package/src/react/queries/collectionDetails.ts +64 -0
- package/src/react/queries/comparePrices.ts +108 -0
- package/src/react/queries/convertPriceToUSD.ts +92 -0
- package/src/react/queries/countListingsForCollectible.ts +73 -0
- package/src/react/queries/countOfCollectables.ts +83 -0
- package/src/react/queries/countOfPrimarySaleItems.ts +48 -0
- package/src/react/queries/countOffersForCollectible.ts +73 -0
- package/src/react/queries/currency.ts +83 -0
- package/src/react/queries/filters.ts +138 -0
- package/src/react/queries/floorOrder.ts +63 -0
- package/src/react/queries/getTokenRanges.ts +62 -0
- package/src/react/queries/highestOffer.ts +46 -40
- package/src/react/queries/index.ts +10 -4
- package/src/react/queries/inventory.ts +10 -4
- package/src/react/queries/listBalances.ts +5 -4
- package/src/react/queries/listCollectibleActivities.ts +97 -0
- package/src/react/queries/listCollectibles.ts +67 -50
- package/src/react/queries/listCollectiblesPaginated.ts +87 -0
- package/src/react/queries/listCollectionActivities.ts +95 -0
- package/src/react/queries/listCollections.ts +53 -10
- package/src/react/queries/listListingsForCollectible.ts +82 -0
- package/src/react/queries/listTokenMetadata.ts +47 -23
- package/src/react/queries/lowestListing.ts +46 -31
- package/src/react/queries/marketCurrencies.ts +42 -29
- package/src/react/queries/marketplaceConfig.ts +4 -4
- package/src/react/queries/primarySaleItems.ts +85 -0
- package/src/react/queries/primarySaleItemsCount.ts +64 -0
- package/src/react/queries/tokenSupplies.ts +93 -0
- package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +12 -2
- package/src/react/ssr/create-ssr-client.ts +1 -1
- package/src/react/types/query.ts +34 -0
- package/src/react/ui/components/ModelViewer.tsx +1 -1
- package/src/react/ui/components/_internals/action-button/ActionButton.tsx +66 -66
- package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +22 -4
- package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +14 -8
- package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +5 -4
- package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +3 -0
- package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +4 -4
- package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +20 -18
- package/src/react/ui/components/_internals/action-button/store.ts +72 -34
- package/src/react/ui/components/_internals/custom-select/CustomSelect.stories.tsx +582 -0
- package/src/react/ui/components/_internals/pill/Pill.stories.tsx +83 -0
- package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +1 -1
- package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +12 -5
- package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -4
- package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +3 -0
- package/src/react/ui/components/marketplace-collectible-card/index.ts +1 -1
- package/src/react/ui/components/marketplace-collectible-card/types.ts +11 -7
- package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +4 -7
- package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +3 -2
- package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +7 -6
- package/src/react/ui/components/marketplace-logos/marketplace-logos.stories.tsx +199 -0
- package/src/react/ui/components/marketplace-logos/marketplace-logos.tsx +1 -1
- package/src/react/ui/components/media/Media.stories.tsx +642 -0
- package/src/react/ui/components/media/Media.tsx +29 -20
- package/src/react/ui/components/media/types.ts +6 -0
- package/src/react/ui/index.ts +8 -10
- package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +15 -0
- package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +100 -87
- package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +11 -5
- package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +10 -2
- package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +17 -11
- package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +4 -1
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +1 -1
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +30 -27
- package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +3 -3
- package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +11 -2
- package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +2 -2
- package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +10 -3
- package/src/react/ui/modals/BuyModal/index.tsx +9 -1
- package/src/react/ui/modals/BuyModal/store.ts +26 -0
- package/src/react/ui/modals/CreateListingModal/Modal.tsx +28 -11
- package/src/react/ui/modals/CreateListingModal/__tests__/Modal.test.tsx +2 -2
- package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +0 -1
- package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +2 -2
- package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +7 -6
- package/src/react/ui/modals/CreateListingModal/index.tsx +1 -1
- package/src/react/ui/modals/CreateListingModal/store.ts +3 -3
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +31 -14
- package/src/react/ui/modals/MakeOfferModal/__tests__/Modal.test.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +0 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +7 -7
- package/src/react/ui/modals/MakeOfferModal/index.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/store.ts +3 -3
- package/src/react/ui/modals/SellModal/Modal.tsx +14 -11
- package/src/react/ui/modals/SellModal/__tests__/Modal.test.tsx +6 -4
- package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +1 -1
- package/src/react/ui/modals/SellModal/hooks/useSell.tsx +0 -1
- package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +6 -6
- package/src/react/ui/modals/SellModal/store.ts +3 -3
- package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +1 -1
- package/src/react/ui/modals/TransferModal/__tests__/__snapshots__/store.test.ts.snap +17 -0
- package/src/react/ui/modals/TransferModal/__tests__/store.test.ts +366 -0
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +402 -0
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +52 -50
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +39 -47
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx +9 -8
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +33 -37
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +19 -10
- package/src/react/ui/modals/TransferModal/index.tsx +28 -31
- package/src/react/ui/modals/TransferModal/messages.ts +1 -1
- package/src/react/ui/modals/TransferModal/store.ts +122 -0
- package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +1 -1
- package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +2 -4
- package/src/react/ui/modals/_internal/components/calendar/index.tsx +0 -1
- package/src/react/ui/modals/_internal/components/currencyImage/index.tsx +10 -14
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +6 -3
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +23 -18
- package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +10 -10
- package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +6 -6
- package/src/react/ui/modals/_internal/components/floorPriceText/index.tsx +4 -4
- package/src/react/ui/modals/_internal/components/priceInput/__tests__/PriceInput.test.tsx +13 -5
- package/src/react/ui/modals/_internal/components/priceInput/index.tsx +41 -26
- package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +68 -59
- package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +23 -17
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +340 -41
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/_components/BalanceIndicator.tsx +1 -2
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +95 -101
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts +72 -14
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +29 -14
- package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +2 -2
- package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
- package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +88 -89
- package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +37 -11
- package/src/react/ui/modals/_internal/components/transactionStatusModal/hooks/useTransactionStatus.ts +0 -1
- package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +32 -20
- package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +92 -63
- package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +44 -45
- package/src/react/ui/modals/_internal/types.ts +2 -2
- package/src/react/ui/modals/modal-provider.tsx +2 -3
- package/src/types/api-types.ts +36 -36
- package/src/types/buyModalErrors.ts +1 -1
- package/src/types/index.ts +5 -5
- package/src/types/new-marketplace-types.ts +1 -1
- package/src/types/sdk-config.ts +8 -2
- package/src/types/types.ts +1 -0
- package/src/types/waas-types.ts +1 -1
- package/src/utils/abi/index.ts +1 -1
- package/src/utils/abi/primary-sale/index.ts +1 -1
- package/src/utils/abi/token/index.ts +2 -1
- package/src/utils/decode/erc20.ts +1 -1
- package/src/utils/index.ts +3 -3
- package/src/utils/network.ts +15 -0
- package/test/const.ts +3 -1
- package/test/mocks/wallet.ts +1 -1
- package/test/test-utils.tsx +5 -4
- package/vitest.shims.d.ts +2 -0
- package/vitest.storybook.config.js +33 -0
- package/.changeset/fluffy-jokes-lay.md +0 -5
- package/.changeset/wise-bugs-boil.md +0 -8
- package/dist/CartIcon-Bll1rbxv.js.map +0 -1
- package/dist/CollectibleCard-CLQTl0_6.d.ts +0 -8
- package/dist/_internal-69NEWNUE.js +0 -34
- package/dist/_internal-69NEWNUE.js.map +0 -1
- package/dist/api-1KFxYh7o.js.map +0 -1
- package/dist/builder-api-DoK3907S.d.ts +0 -12
- package/dist/builder.gen-CxP9NT1p.js.map +0 -1
- package/dist/index-4-kfOFdx.d.ts +0 -22
- package/dist/index-BHiSG-Yi.d.ts +0 -312
- package/dist/index-BQW0PUkQ.d.ts +0 -3973
- package/dist/index-BfH21xmk.d.ts +0 -117
- package/dist/index-CN8puQQJ.d.ts +0 -24
- package/dist/index-DafWjEb4.d.ts +0 -65
- package/dist/marketplace.gen-Dqk8vRmD.js.map +0 -1
- package/dist/marketplaceConfig-D2MYFqll.js.map +0 -1
- package/dist/options-DCi6_23w.js +0 -34
- package/dist/options-DCi6_23w.js.map +0 -1
- package/dist/primary-sale-Cw95phYC.js.map +0 -1
- package/dist/queries-DPvwtnO7.js +0 -486
- package/dist/queries-DPvwtnO7.js.map +0 -1
- package/dist/react-BG7o4PId.js.map +0 -1
- package/dist/token-CO5llIla.js.map +0 -1
- package/dist/transaction-CcVViHEL.js.map +0 -1
- package/dist/types-DwWE6xOF.js.map +0 -1
- package/dist/useCollection-C-mclKU0.d.ts +0 -66
- package/dist/utils-BFdxaToy.js.map +0 -1
- package/dist/utils-Cat9_pef.js.map +0 -1
- package/dist/wagmi-DRctYEk6.js.map +0 -1
- package/src/react/_internal/api/zod-schema.ts +0 -678
- package/src/react/hooks/options/collectionOptions.ts +0 -41
- package/src/react/hooks/useCollectionDetails.tsx +0 -50
- package/src/react/hooks/useGetTokenSuppliesMap.ts +0 -33
- package/src/react/hooks/useListPrimarySaleItems.ts +0 -42
- package/src/react/queries/getTokenSupplies.ts +0 -38
- package/src/react/ui/modals/TransferModal/_store.ts +0 -72
- package/src/react/ui/modals/_internal/stores/accountModal.ts +0 -3
- package/tsconfig.tsbuildinfo +0 -1
- /package/dist/{abi-BKyRjVcZ.js → abi-BMvgNbKQ.js} +0 -0
- /package/dist/{index-C39K_8SG.d.ts → index-CD2bj_xW.d.ts} +0 -0
- /package/dist/{index-ij9f8GAA.d.ts → index-DvpBZgor.d.ts} +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { SdkConfig } from '../../types';
|
|
3
|
+
import { getMarketplaceClient, type ValuesOptional } from '../_internal';
|
|
4
|
+
import type {
|
|
5
|
+
GetCountOfOffersForCollectibleArgs,
|
|
6
|
+
OrderFilter,
|
|
7
|
+
} from '../_internal/api/marketplace.gen';
|
|
8
|
+
import { collectableKeys } from '../_internal/api/query-keys';
|
|
9
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
10
|
+
|
|
11
|
+
export interface FetchCountOffersForCollectibleParams {
|
|
12
|
+
chainId: number;
|
|
13
|
+
collectionAddress: string;
|
|
14
|
+
collectibleId: string;
|
|
15
|
+
config: SdkConfig;
|
|
16
|
+
filter?: OrderFilter;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Fetches count of offers for a collectible from the marketplace API
|
|
21
|
+
*/
|
|
22
|
+
export async function fetchCountOffersForCollectible(
|
|
23
|
+
params: FetchCountOffersForCollectibleParams,
|
|
24
|
+
) {
|
|
25
|
+
const { collectionAddress, chainId, collectibleId, config, filter } = params;
|
|
26
|
+
|
|
27
|
+
const client = getMarketplaceClient(config);
|
|
28
|
+
|
|
29
|
+
const apiArgs: GetCountOfOffersForCollectibleArgs = {
|
|
30
|
+
contractAddress: collectionAddress,
|
|
31
|
+
chainId: String(chainId),
|
|
32
|
+
tokenId: collectibleId,
|
|
33
|
+
filter,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const result = await client.getCountOfOffersForCollectible(apiArgs);
|
|
37
|
+
return result.count;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type CountOffersForCollectibleQueryOptions =
|
|
41
|
+
ValuesOptional<FetchCountOffersForCollectibleParams> & {
|
|
42
|
+
query?: StandardQueryOptions;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export function countOffersForCollectibleQueryOptions(
|
|
46
|
+
params: CountOffersForCollectibleQueryOptions,
|
|
47
|
+
) {
|
|
48
|
+
const enabled = Boolean(
|
|
49
|
+
params.collectionAddress &&
|
|
50
|
+
params.chainId &&
|
|
51
|
+
params.collectibleId &&
|
|
52
|
+
params.config &&
|
|
53
|
+
(params.query?.enabled ?? true),
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
return queryOptions({
|
|
57
|
+
queryKey: [...collectableKeys.offersCount, params],
|
|
58
|
+
queryFn: () =>
|
|
59
|
+
fetchCountOffersForCollectible({
|
|
60
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
61
|
+
chainId: params.chainId!,
|
|
62
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
63
|
+
collectionAddress: params.collectionAddress!,
|
|
64
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
65
|
+
collectibleId: params.collectibleId!,
|
|
66
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
67
|
+
config: params.config!,
|
|
68
|
+
filter: params.filter,
|
|
69
|
+
}),
|
|
70
|
+
...params.query,
|
|
71
|
+
enabled,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { queryOptions, skipToken } from '@tanstack/react-query';
|
|
2
|
+
import type { Address } from 'viem';
|
|
3
|
+
import type { SdkConfig } from '../../types';
|
|
4
|
+
import {
|
|
5
|
+
type Currency,
|
|
6
|
+
currencyKeys,
|
|
7
|
+
getMarketplaceClient,
|
|
8
|
+
getQueryClient,
|
|
9
|
+
type ValuesOptional,
|
|
10
|
+
} from '../_internal';
|
|
11
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
12
|
+
|
|
13
|
+
export interface FetchCurrencyParams {
|
|
14
|
+
chainId: number;
|
|
15
|
+
currencyAddress: Address;
|
|
16
|
+
config: SdkConfig;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Fetches currency details from the marketplace API
|
|
21
|
+
*/
|
|
22
|
+
export async function fetchCurrency(
|
|
23
|
+
params: FetchCurrencyParams,
|
|
24
|
+
): Promise<Currency | undefined> {
|
|
25
|
+
const { chainId, currencyAddress, config } = params;
|
|
26
|
+
const queryClient = getQueryClient();
|
|
27
|
+
|
|
28
|
+
let currencies = queryClient.getQueryData([...currencyKeys.lists, chainId]) as
|
|
29
|
+
| Currency[]
|
|
30
|
+
| undefined;
|
|
31
|
+
|
|
32
|
+
if (!currencies) {
|
|
33
|
+
const marketplaceClient = getMarketplaceClient(config);
|
|
34
|
+
currencies = await marketplaceClient
|
|
35
|
+
.listCurrencies({ chainId: String(chainId) })
|
|
36
|
+
.then((resp) => resp.currencies);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (!currencies?.length) {
|
|
40
|
+
throw new Error('No currencies returned');
|
|
41
|
+
}
|
|
42
|
+
const currency = currencies.find(
|
|
43
|
+
(currency) =>
|
|
44
|
+
currency.contractAddress.toLowerCase() === currencyAddress.toLowerCase(),
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
if (!currency) {
|
|
48
|
+
throw new Error('Currency not found');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return currency;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export type CurrencyQueryOptions = ValuesOptional<FetchCurrencyParams> & {
|
|
55
|
+
query?: StandardQueryOptions;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export function currencyQueryOptions(params: CurrencyQueryOptions) {
|
|
59
|
+
const enabled = Boolean(
|
|
60
|
+
params.chainId &&
|
|
61
|
+
params.currencyAddress &&
|
|
62
|
+
params.config &&
|
|
63
|
+
(params.query?.enabled ?? true),
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
return queryOptions({
|
|
67
|
+
queryKey: [...currencyKeys.details, params],
|
|
68
|
+
queryFn:
|
|
69
|
+
params.chainId && params.currencyAddress
|
|
70
|
+
? () =>
|
|
71
|
+
fetchCurrency({
|
|
72
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
73
|
+
chainId: params.chainId!,
|
|
74
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
75
|
+
currencyAddress: params.currencyAddress!,
|
|
76
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
77
|
+
config: params.config!,
|
|
78
|
+
})
|
|
79
|
+
: skipToken,
|
|
80
|
+
...params.query,
|
|
81
|
+
enabled,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import type { PropertyFilter } from '@0xsequence/metadata';
|
|
2
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
3
|
+
import { FilterCondition, type SdkConfig } from '../../types';
|
|
4
|
+
import { compareAddress } from '../../utils';
|
|
5
|
+
import {
|
|
6
|
+
getMetadataClient,
|
|
7
|
+
getQueryClient,
|
|
8
|
+
type ValuesOptional,
|
|
9
|
+
} from '../_internal';
|
|
10
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
11
|
+
import { marketplaceConfigOptions } from './marketplaceConfig';
|
|
12
|
+
|
|
13
|
+
export interface FetchFiltersParams {
|
|
14
|
+
chainId: number;
|
|
15
|
+
collectionAddress: string;
|
|
16
|
+
showAllFilters?: boolean;
|
|
17
|
+
excludePropertyValues?: boolean;
|
|
18
|
+
config: SdkConfig;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Fetches collection filters from the Metadata API with optional marketplace filtering
|
|
23
|
+
*/
|
|
24
|
+
export async function fetchFilters(
|
|
25
|
+
params: FetchFiltersParams,
|
|
26
|
+
): Promise<PropertyFilter[]> {
|
|
27
|
+
const {
|
|
28
|
+
chainId,
|
|
29
|
+
collectionAddress,
|
|
30
|
+
showAllFilters,
|
|
31
|
+
excludePropertyValues,
|
|
32
|
+
config,
|
|
33
|
+
} = params;
|
|
34
|
+
|
|
35
|
+
const metadataClient = getMetadataClient(config);
|
|
36
|
+
|
|
37
|
+
const filters = await metadataClient
|
|
38
|
+
.getTokenMetadataPropertyFilters({
|
|
39
|
+
chainID: chainId.toString(),
|
|
40
|
+
contractAddress: collectionAddress,
|
|
41
|
+
excludeProperties: [],
|
|
42
|
+
excludePropertyValues,
|
|
43
|
+
})
|
|
44
|
+
.then((resp) => resp.filters);
|
|
45
|
+
|
|
46
|
+
if (showAllFilters) return filters;
|
|
47
|
+
|
|
48
|
+
const queryClient = getQueryClient();
|
|
49
|
+
const marketplaceConfig = await queryClient.fetchQuery(
|
|
50
|
+
marketplaceConfigOptions(config),
|
|
51
|
+
);
|
|
52
|
+
const collectionFilters = marketplaceConfig.market.collections.find((c) =>
|
|
53
|
+
compareAddress(c.itemsAddress, collectionAddress),
|
|
54
|
+
)?.filterSettings;
|
|
55
|
+
|
|
56
|
+
if (
|
|
57
|
+
!collectionFilters?.exclusions ||
|
|
58
|
+
collectionFilters.exclusions.length === 0 ||
|
|
59
|
+
!collectionFilters.filterOrder ||
|
|
60
|
+
collectionFilters.filterOrder.length === 0
|
|
61
|
+
)
|
|
62
|
+
return filters;
|
|
63
|
+
|
|
64
|
+
const { filterOrder, exclusions } = collectionFilters;
|
|
65
|
+
|
|
66
|
+
const sortedFilters = filters.toSorted((a, b) => {
|
|
67
|
+
const aIndex =
|
|
68
|
+
filterOrder.indexOf(a.name) > -1
|
|
69
|
+
? filterOrder.indexOf(a.name)
|
|
70
|
+
: filterOrder.length;
|
|
71
|
+
const bIndex =
|
|
72
|
+
filterOrder.indexOf(b.name) > -1
|
|
73
|
+
? filterOrder.indexOf(b.name)
|
|
74
|
+
: filterOrder.length;
|
|
75
|
+
return aIndex - bIndex;
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const filteredResults = sortedFilters.reduce<PropertyFilter[]>(
|
|
79
|
+
(acc, filter) => {
|
|
80
|
+
const exclusionRule = exclusions.find((rule) => rule.key === filter.name);
|
|
81
|
+
|
|
82
|
+
if (!exclusionRule) {
|
|
83
|
+
acc.push(filter);
|
|
84
|
+
return acc;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (exclusionRule.condition === FilterCondition.ENTIRE_KEY) {
|
|
88
|
+
return acc;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (
|
|
92
|
+
exclusionRule.condition === FilterCondition.SPECIFIC_VALUE &&
|
|
93
|
+
exclusionRule.value
|
|
94
|
+
) {
|
|
95
|
+
const filteredValues =
|
|
96
|
+
filter.values?.filter((value) => value !== exclusionRule.value) || [];
|
|
97
|
+
if (filteredValues.length > 0) {
|
|
98
|
+
acc.push({ ...filter, values: filteredValues });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return acc;
|
|
103
|
+
},
|
|
104
|
+
[],
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
return filteredResults;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export type FiltersQueryOptions = ValuesOptional<FetchFiltersParams> & {
|
|
111
|
+
query?: StandardQueryOptions;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
export function filtersQueryOptions(params: FiltersQueryOptions) {
|
|
115
|
+
const enabled = Boolean(
|
|
116
|
+
params.chainId &&
|
|
117
|
+
params.collectionAddress &&
|
|
118
|
+
params.config &&
|
|
119
|
+
(params.query?.enabled ?? true),
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
return queryOptions({
|
|
123
|
+
queryKey: ['filters', params],
|
|
124
|
+
queryFn: () =>
|
|
125
|
+
fetchFilters({
|
|
126
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
127
|
+
chainId: params.chainId!,
|
|
128
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
129
|
+
collectionAddress: params.collectionAddress!,
|
|
130
|
+
showAllFilters: params.showAllFilters,
|
|
131
|
+
excludePropertyValues: params.excludePropertyValues,
|
|
132
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
133
|
+
config: params.config!,
|
|
134
|
+
}),
|
|
135
|
+
...params.query,
|
|
136
|
+
enabled,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { SdkConfig } from '../../types';
|
|
3
|
+
import {
|
|
4
|
+
collectableKeys,
|
|
5
|
+
type GetFloorOrderArgs,
|
|
6
|
+
getMarketplaceClient,
|
|
7
|
+
type ValuesOptional,
|
|
8
|
+
} from '../_internal';
|
|
9
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
10
|
+
|
|
11
|
+
export interface FetchFloorOrderParams
|
|
12
|
+
extends Omit<GetFloorOrderArgs, 'contractAddress' | 'chainId'> {
|
|
13
|
+
collectionAddress: string;
|
|
14
|
+
chainId: number;
|
|
15
|
+
config: SdkConfig;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Fetches the floor order for a collection from the marketplace API
|
|
20
|
+
*/
|
|
21
|
+
export async function fetchFloorOrder(params: FetchFloorOrderParams) {
|
|
22
|
+
const { collectionAddress, chainId, config, ...additionalApiParams } = params;
|
|
23
|
+
|
|
24
|
+
const marketplaceClient = getMarketplaceClient(config);
|
|
25
|
+
|
|
26
|
+
const apiArgs: GetFloorOrderArgs = {
|
|
27
|
+
contractAddress: collectionAddress,
|
|
28
|
+
chainId: String(chainId),
|
|
29
|
+
...additionalApiParams,
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const result = await marketplaceClient.getFloorOrder(apiArgs);
|
|
33
|
+
return result.collectible;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export type FloorOrderQueryOptions = ValuesOptional<FetchFloorOrderParams> & {
|
|
37
|
+
query?: StandardQueryOptions;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export function floorOrderQueryOptions(params: FloorOrderQueryOptions) {
|
|
41
|
+
const enabled = Boolean(
|
|
42
|
+
params.collectionAddress &&
|
|
43
|
+
params.chainId &&
|
|
44
|
+
params.config &&
|
|
45
|
+
(params.query?.enabled ?? true),
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
return queryOptions({
|
|
49
|
+
queryKey: [...collectableKeys.floorOrders, params],
|
|
50
|
+
queryFn: () =>
|
|
51
|
+
fetchFloorOrder({
|
|
52
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
53
|
+
chainId: params.chainId!,
|
|
54
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
55
|
+
collectionAddress: params.collectionAddress!,
|
|
56
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
57
|
+
config: params.config!,
|
|
58
|
+
...((params.filter && { filter: params.filter }) || {}),
|
|
59
|
+
}),
|
|
60
|
+
...params.query,
|
|
61
|
+
enabled,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { GetTokenIDRangesReturn } from '@0xsequence/indexer';
|
|
2
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
3
|
+
import type { Address } from 'viem';
|
|
4
|
+
import type { SdkConfig } from '../../types';
|
|
5
|
+
import { getIndexerClient, type ValuesOptional } from '../_internal';
|
|
6
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
7
|
+
|
|
8
|
+
export interface FetchGetTokenRangesParams {
|
|
9
|
+
chainId: number;
|
|
10
|
+
collectionAddress: Address;
|
|
11
|
+
config: SdkConfig;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Fetches token ID ranges for a collection from the Indexer API
|
|
16
|
+
*/
|
|
17
|
+
export async function fetchGetTokenRanges(
|
|
18
|
+
params: FetchGetTokenRangesParams,
|
|
19
|
+
): Promise<GetTokenIDRangesReturn> {
|
|
20
|
+
const { chainId, collectionAddress, config } = params;
|
|
21
|
+
|
|
22
|
+
const indexerClient = getIndexerClient(chainId, config);
|
|
23
|
+
|
|
24
|
+
const response = await indexerClient.getTokenIDRanges({
|
|
25
|
+
contractAddress: collectionAddress,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
if (!response) {
|
|
29
|
+
throw new Error('Failed to fetch token ranges');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return response;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type GetTokenRangesQueryOptions =
|
|
36
|
+
ValuesOptional<FetchGetTokenRangesParams> & {
|
|
37
|
+
query?: StandardQueryOptions;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export function getTokenRangesQueryOptions(params: GetTokenRangesQueryOptions) {
|
|
41
|
+
const enabled = Boolean(
|
|
42
|
+
params.chainId &&
|
|
43
|
+
params.collectionAddress &&
|
|
44
|
+
params.config &&
|
|
45
|
+
(params.query?.enabled ?? true),
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
return queryOptions({
|
|
49
|
+
queryKey: ['indexer', 'tokenRanges', params],
|
|
50
|
+
queryFn: () =>
|
|
51
|
+
fetchGetTokenRanges({
|
|
52
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
53
|
+
chainId: params.chainId!,
|
|
54
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
55
|
+
collectionAddress: params.collectionAddress!,
|
|
56
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
57
|
+
config: params.config!,
|
|
58
|
+
}),
|
|
59
|
+
...params.query,
|
|
60
|
+
enabled,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
@@ -1,60 +1,66 @@
|
|
|
1
1
|
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
-
import type { Address } from 'viem';
|
|
3
2
|
import type { SdkConfig } from '../../types';
|
|
4
3
|
import {
|
|
5
|
-
type GetCollectibleHighestOfferArgs,
|
|
6
4
|
collectableKeys,
|
|
5
|
+
type GetCollectibleHighestOfferArgs,
|
|
7
6
|
getMarketplaceClient,
|
|
7
|
+
type ValuesOptional,
|
|
8
8
|
} from '../_internal';
|
|
9
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
9
10
|
|
|
10
|
-
export interface
|
|
11
|
+
export interface FetchHighestOfferParams
|
|
11
12
|
extends Omit<GetCollectibleHighestOfferArgs, 'contractAddress' | 'chainId'> {
|
|
12
|
-
collectionAddress:
|
|
13
|
+
collectionAddress: string;
|
|
13
14
|
chainId: number;
|
|
14
|
-
|
|
15
|
-
enabled?: boolean;
|
|
16
|
-
};
|
|
15
|
+
config: SdkConfig;
|
|
17
16
|
}
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
) {
|
|
18
|
+
/**
|
|
19
|
+
* Fetches the highest offer for a collectible from the marketplace API
|
|
20
|
+
*/
|
|
21
|
+
export async function fetchHighestOffer(params: FetchHighestOfferParams) {
|
|
22
|
+
const { collectionAddress, chainId, config, ...additionalApiParams } = params;
|
|
23
|
+
|
|
23
24
|
const marketplaceClient = getMarketplaceClient(config);
|
|
24
25
|
|
|
25
|
-
const
|
|
26
|
-
const data = await marketplaceClient.getCollectibleHighestOffer({
|
|
27
|
-
chainId: String(chainId),
|
|
26
|
+
const apiArgs: GetCollectibleHighestOfferArgs = {
|
|
28
27
|
contractAddress: collectionAddress,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
// let order: Order | undefined;
|
|
33
|
-
// if (data.order) {
|
|
34
|
-
// order = {
|
|
35
|
-
// ...data.order,
|
|
36
|
-
// priceAmount: BigInt(data.order.priceAmount),
|
|
37
|
-
// priceAmountNet: BigInt(data.order.priceAmountNet),
|
|
38
|
-
// };
|
|
39
|
-
// }
|
|
28
|
+
chainId: String(chainId),
|
|
29
|
+
...additionalApiParams,
|
|
30
|
+
};
|
|
40
31
|
|
|
41
|
-
|
|
32
|
+
const result = await marketplaceClient.getCollectibleHighestOffer(apiArgs);
|
|
33
|
+
return result.order ?? null;
|
|
42
34
|
}
|
|
43
35
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
36
|
+
export type HighestOfferQueryOptions =
|
|
37
|
+
ValuesOptional<FetchHighestOfferParams> & {
|
|
38
|
+
query?: StandardQueryOptions;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export function highestOfferQueryOptions(params: HighestOfferQueryOptions) {
|
|
42
|
+
const enabled = Boolean(
|
|
43
|
+
params.collectionAddress &&
|
|
44
|
+
params.chainId &&
|
|
45
|
+
params.tokenId &&
|
|
46
|
+
params.config &&
|
|
47
|
+
(params.query?.enabled ?? true),
|
|
48
|
+
);
|
|
49
|
+
|
|
55
50
|
return queryOptions({
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
queryKey: [...collectableKeys.highestOffers, params],
|
|
52
|
+
queryFn: () =>
|
|
53
|
+
fetchHighestOffer({
|
|
54
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
55
|
+
chainId: params.chainId!,
|
|
56
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
57
|
+
collectionAddress: params.collectionAddress!,
|
|
58
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
59
|
+
tokenId: params.tokenId!,
|
|
60
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
61
|
+
config: params.config!,
|
|
62
|
+
}),
|
|
63
|
+
...params.query,
|
|
64
|
+
enabled,
|
|
59
65
|
});
|
|
60
66
|
}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
export * from './balanceOfCollectible';
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
2
|
+
export * from './collectible';
|
|
3
|
+
export * from './collectionDetails';
|
|
4
|
+
export * from './countOfPrimarySaleItems';
|
|
5
|
+
export * from './currency';
|
|
6
|
+
export * from './floorOrder';
|
|
5
7
|
export * from './highestOffer';
|
|
8
|
+
export * from './inventory';
|
|
6
9
|
export * from './listBalances';
|
|
7
|
-
export * from './
|
|
10
|
+
export * from './listCollectibles';
|
|
11
|
+
export * from './listCollections';
|
|
8
12
|
export * from './listTokenMetadata';
|
|
13
|
+
export * from './lowestListing';
|
|
9
14
|
export * from './marketCurrencies';
|
|
15
|
+
export * from './tokenSupplies';
|
|
@@ -9,10 +9,10 @@ import { OrderSide, type Page, type SdkConfig } from '../../types';
|
|
|
9
9
|
import {
|
|
10
10
|
type CollectibleOrder,
|
|
11
11
|
type ContractType,
|
|
12
|
-
LaosAPI,
|
|
13
12
|
getIndexerClient,
|
|
13
|
+
LaosAPI,
|
|
14
14
|
} from '../_internal';
|
|
15
|
-
import {
|
|
15
|
+
import { fetchListCollectibles } from './listCollectibles';
|
|
16
16
|
import { fetchMarketplaceConfig } from './marketplaceConfig';
|
|
17
17
|
|
|
18
18
|
export interface UseInventoryArgs {
|
|
@@ -38,6 +38,11 @@ interface InventoryState {
|
|
|
38
38
|
// Store state per collection
|
|
39
39
|
const stateByCollection = new Map<string, InventoryState>();
|
|
40
40
|
|
|
41
|
+
// Test helper to clear state between tests
|
|
42
|
+
export const clearInventoryState = () => {
|
|
43
|
+
stateByCollection.clear();
|
|
44
|
+
};
|
|
45
|
+
|
|
41
46
|
const getCollectionKey = (args: UseInventoryArgs) =>
|
|
42
47
|
`${args.chainId}-${args.collectionAddress}-${args.accountAddress}`;
|
|
43
48
|
|
|
@@ -105,6 +110,7 @@ async function fetchAllIndexerTokens(
|
|
|
105
110
|
chainId: chainId.toString(),
|
|
106
111
|
accountAddress,
|
|
107
112
|
includeMetadata: true,
|
|
113
|
+
contractAddress: collectionAddress,
|
|
108
114
|
page: {
|
|
109
115
|
sort: [
|
|
110
116
|
{
|
|
@@ -259,7 +265,7 @@ export async function fetchInventory(
|
|
|
259
265
|
|
|
260
266
|
// Fetch collectibles from marketplace API
|
|
261
267
|
const marketplaceConfig = await fetchMarketplaceConfig({ config });
|
|
262
|
-
const collectibles = await
|
|
268
|
+
const collectibles = await fetchListCollectibles(
|
|
263
269
|
{
|
|
264
270
|
chainId,
|
|
265
271
|
collectionAddress,
|
|
@@ -268,8 +274,8 @@ export async function fetchInventory(
|
|
|
268
274
|
includeEmpty: true,
|
|
269
275
|
},
|
|
270
276
|
side: OrderSide.listing,
|
|
277
|
+
config,
|
|
271
278
|
},
|
|
272
|
-
config,
|
|
273
279
|
marketplaceConfig,
|
|
274
280
|
page,
|
|
275
281
|
);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { GetTokenBalancesReturn, Page } from '@0xsequence/indexer';
|
|
2
2
|
import { infiniteQueryOptions } from '@tanstack/react-query';
|
|
3
|
-
import type { Hex } from 'viem';
|
|
3
|
+
import type { Address, Hex } from 'viem';
|
|
4
4
|
import type { SdkConfig } from '../../types';
|
|
5
|
-
import {
|
|
5
|
+
import { balanceQueries, getIndexerClient, LaosAPI } from '../_internal';
|
|
6
6
|
|
|
7
7
|
export type UseListBalancesArgs = {
|
|
8
8
|
chainId: number;
|
|
9
|
-
accountAddress?:
|
|
10
|
-
contractAddress?:
|
|
9
|
+
accountAddress?: Address;
|
|
10
|
+
contractAddress?: Address;
|
|
11
11
|
tokenId?: string;
|
|
12
12
|
includeMetadata?: boolean;
|
|
13
13
|
metadataOptions?: {
|
|
@@ -34,6 +34,7 @@ export async function fetchBalances(
|
|
|
34
34
|
return laosClient.getTokenBalances({
|
|
35
35
|
chainId: args.chainId.toString(),
|
|
36
36
|
accountAddress: args.accountAddress,
|
|
37
|
+
contractAddress: args.contractAddress as Address,
|
|
37
38
|
includeMetadata: args.includeMetadata,
|
|
38
39
|
page: {
|
|
39
40
|
sort: [
|