@0xsequence/marketplace-sdk 0.9.0 → 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 +77 -8
- package/dist/{CalendarIcon-DbQ7Vxcw.js → CalendarIcon-CqsuAuCm.js} +4 -51
- package/dist/CalendarIcon-CqsuAuCm.js.map +1 -0
- package/dist/{CollectibleCard-C8Ae64Ab.d.ts → CollectibleCard-Dd-CG6dE.d.ts} +8 -7
- package/dist/InfoIcon-v0w_Lu7t.js +53 -0
- package/dist/InfoIcon-v0w_Lu7t.js.map +1 -0
- package/dist/{_internal-BgWcRIak.js → _internal-C75gOSNo.js} +2 -10
- 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-DTIan01C.js → api-BiMGqWdz.js} +17 -34
- 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/{coinbase-ByA_XRB0.js → coinbase-Df8URNxq.js} +1 -1
- package/dist/{coinbase-ByA_XRB0.js.map → coinbase-Df8URNxq.js.map} +1 -1
- package/dist/{new-marketplace-types-Bfis0U4J.d.ts → create-config-DKJ-F0jc.d.ts} +402 -41
- package/dist/{wagmi-CDzEQbfk.js → create-config-fQ-jbJD1.js} +20 -10
- 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-BL9RUSEK.d.ts → index-136YrWDH.d.ts} +1 -1
- package/dist/{index-D5v5iluA.d.ts → index-BAhaEfqY.d.ts} +1 -1
- package/dist/index-BKBin-rq.d.ts +979 -0
- package/dist/{index-BQsgAvtX.d.ts → index-BUWB_RXp.d.ts} +776 -570
- package/dist/{index-21LE7OhL.d.ts → index-BhVFc2rX.d.ts} +6 -3
- package/dist/{index-DXMfTZ1F.d.ts → index-C5aqo8xu.d.ts} +1 -1
- package/dist/{index-ByznONYE.d.ts → index-CKrYP7ot.d.ts} +20 -48
- package/dist/{index-DaE5ZNHb.d.ts → index-CUwMH7Ht.d.ts} +5 -5
- package/dist/{index-CLy8y5hm.d.ts → index-Cu70Lw-w.d.ts} +1 -1
- package/dist/index.css +414 -1
- package/dist/index.d.ts +8 -10
- package/dist/index.js +13 -9
- 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-BSDIX7NZ.js → marketplace.gen-HpnpL5xU.js} +3 -3
- package/dist/marketplace.gen-HpnpL5xU.js.map +1 -0
- package/dist/{marketplaceConfig-C6X1SUik.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/{primary-sale-C55ALnfQ.js → primary-sale-CmWxSfFQ.js} +1 -1
- package/dist/{primary-sale-C55ALnfQ.js.map → primary-sale-CmWxSfFQ.js.map} +1 -1
- package/dist/provider-DPGUA10G.js +125 -0
- package/dist/provider-DPGUA10G.js.map +1 -0
- package/dist/{queries-CUU65uYZ.js → queries-Ce_2othB.js} +165 -7
- 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 +7 -4
- 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 +11 -6
- package/dist/react/_internal/wagmi/index.d.ts +2 -4
- package/dist/react/_internal/wagmi/index.js +5 -3
- package/dist/react/hooks/index.d.ts +12 -17
- package/dist/react/hooks/index.js +23 -19
- package/dist/react/hooks/options/index.d.ts +2 -3
- package/dist/react/hooks/options/index.js +12 -7
- package/dist/react/index.d.ts +12 -17
- package/dist/react/index.js +28 -19
- package/dist/react/queries/index.d.ts +9 -8
- package/dist/react/queries/index.js +20 -15
- package/dist/react/ssr/index.d.ts +7 -9
- package/dist/react/ssr/index.js +11 -6
- package/dist/react/ssr/index.js.map +1 -1
- package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +3 -8
- package/dist/react/ui/components/marketplace-collectible-card/index.js +27 -18
- 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 +11 -6
- 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 +13 -9
- package/dist/react/ui/index.d.ts +3 -8
- package/dist/react/ui/index.js +27 -18
- package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +2 -2
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +23 -18
- package/dist/{react-DAIicQPT.js → react-DP0M2Wfm.js} +799 -4306
- 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-Da4TdyUk.js → token-CHSBPYVG.js} +1 -1
- package/dist/{token-Da4TdyUk.js.map → token-CHSBPYVG.js.map} +1 -1
- 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 +2 -2
- package/dist/{types-DwWE6xOF.js → types-Yw2ywj6j.js} +1 -1
- package/dist/{types-DwWE6xOF.js.map → types-Yw2ywj6j.js.map} +1 -1
- package/dist/utils/abi/index.d.ts +4 -4
- package/dist/utils/abi/index.js +4 -4
- 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 +1 -1
- package/dist/utils/abi/token/index.js +1 -1
- package/dist/utils/index.d.ts +7 -8
- package/dist/utils/index.js +12 -9
- package/dist/{utils-CW2NA5KG.js → utils-9RXDgcBl.js} +4 -11
- package/dist/utils-9RXDgcBl.js.map +1 -0
- package/dist/{utils-BPYfgDSL.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.config.mjs +4 -0
- package/package.json +27 -14
- package/postcss.config.mjs +6 -0
- package/src/index.css +5 -4
- package/src/index.ts +1 -0
- package/src/react/__tests__/provider.test.tsx +4 -3
- package/src/react/_internal/api/__mocks__/indexer.msw.ts +16 -0
- package/src/react/_internal/api/__mocks__/laos.msw.ts +387 -0
- package/src/react/_internal/api/__mocks__/marketplace.msw.ts +2 -0
- package/src/react/_internal/api/__tests__/laos-api.test.ts +756 -0
- package/src/react/_internal/api/laos-api.ts +3 -0
- package/src/react/_internal/api/marketplace.gen.ts +5 -3
- package/src/react/_internal/api/query-keys.ts +12 -4
- package/src/react/_internal/api/services.ts +2 -14
- 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/utils.ts +4 -4
- package/src/react/_internal/wagmi/create-config.ts +28 -13
- package/src/react/_internal/wallet/wallet.ts +4 -4
- package/src/react/hooks/__tests__/useBalanceOfCollectible.laos.test.tsx +367 -0
- 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__/useCollectionBalanceDetails.test.tsx +17 -0
- package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +11 -3
- package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +3 -3
- package/src/react/hooks/__tests__/useCurrencyBalance.test.tsx +7 -3
- package/src/react/hooks/__tests__/useFilters.test.tsx +2 -2
- package/src/react/hooks/__tests__/useGetTokenRanges.test.tsx +111 -0
- package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +83 -57
- package/src/react/hooks/__tests__/useTransferTokens.test.tsx +469 -0
- package/src/react/hooks/index.ts +3 -1
- package/src/react/hooks/useCheckoutOptions.tsx +96 -0
- package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +98 -57
- package/src/react/hooks/useCollectionBalanceDetails.tsx +95 -68
- package/src/react/hooks/useCollectionDetailsPolling.tsx +3 -7
- package/src/react/hooks/useComparePrices.tsx +90 -82
- package/src/react/hooks/useConvertPriceToUSD.tsx +85 -71
- package/src/react/hooks/useCurrencyBalance.tsx +132 -46
- package/src/react/hooks/useERC721SaleMintedTokens.tsx +8 -5
- package/src/react/hooks/useFilters.tsx +154 -111
- package/src/react/hooks/useGetCountOfPrimarySaleItems.tsx +48 -0
- package/src/react/hooks/useGetTokenRanges.tsx +83 -22
- package/src/react/hooks/useList1155ShopCardData.tsx +2 -0
- package/src/react/hooks/useList721ShopCardData.tsx +12 -7
- package/src/react/hooks/useListCollections.tsx +25 -25
- package/src/react/hooks/useListMarketCardData.tsx +2 -1
- package/src/react/hooks/useListPrimarySaleItems.tsx +66 -0
- package/src/react/hooks/useListTokenMetadata.ts +71 -0
- package/src/react/hooks/useOpenConnectModal.tsx +9 -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/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 +7 -4
- package/src/react/queries/checkoutOptions.ts +85 -0
- package/src/react/queries/checkoutOptionsSalesContract.ts +89 -0
- package/src/react/queries/collectionBalanceDetails.ts +92 -0
- package/src/react/queries/comparePrices.ts +108 -0
- package/src/react/queries/convertPriceToUSD.ts +92 -0
- package/src/react/queries/filters.ts +138 -0
- package/src/react/queries/getTokenRanges.ts +62 -0
- package/src/react/queries/index.ts +3 -0
- package/src/react/queries/inventory.ts +6 -0
- package/src/react/queries/listBalances.ts +4 -3
- package/src/react/queries/listCollections.ts +7 -3
- package/src/react/queries/listTokenMetadata.ts +2 -2
- package/src/react/queries/marketplaceConfig.ts +1 -1
- 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/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/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 +13 -8
- package/src/react/ui/components/_internals/action-button/store.ts +44 -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/Footer.tsx +11 -4
- package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -4
- package/src/react/ui/components/marketplace-collectible-card/types.ts +4 -3
- package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +4 -7
- package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +5 -1
- package/src/react/ui/components/marketplace-logos/marketplace-logos.stories.tsx +199 -0
- package/src/react/ui/components/media/Media.stories.tsx +642 -0
- package/src/react/ui/components/media/Media.tsx +24 -19
- package/src/react/ui/components/media/types.ts +6 -0
- package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +15 -0
- package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +6 -0
- package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +7 -1
- package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +9 -1
- package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +15 -8
- package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +3 -0
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +30 -27
- package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +2 -2
- package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +11 -2
- package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +1 -1
- package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +7 -0
- 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/store.ts +3 -3
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +30 -13
- package/src/react/ui/modals/MakeOfferModal/store.ts +3 -3
- package/src/react/ui/modals/SellModal/Modal.tsx +11 -8
- package/src/react/ui/modals/SellModal/store.ts +3 -3
- 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 +51 -48
- 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 +31 -35
- 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/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 +5 -2
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +23 -17
- 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/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 +155 -20
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +339 -40
- 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 -13
- 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 +36 -10
- package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +32 -20
- package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +91 -62
- package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +43 -44
- package/src/react/ui/modals/_internal/types.ts +2 -2
- package/src/types/sdk-config.ts +6 -1
- package/src/utils/network.ts +15 -0
- package/test/test-utils.tsx +2 -0
- package/vitest.shims.d.ts +2 -0
- package/vitest.storybook.config.js +33 -0
- package/dist/CalendarIcon-DbQ7Vxcw.js.map +0 -1
- package/dist/_internal-BgWcRIak.js.map +0 -1
- package/dist/api-DTIan01C.js.map +0 -1
- package/dist/builder-api-C_zj5mr3.d.ts +0 -12
- package/dist/index-BUVWziLP.d.ts +0 -60
- package/dist/index-COt10OgI.d.ts +0 -24
- package/dist/index-DPNWNa7t.d.ts +0 -414
- package/dist/index-DsfCs3-x.d.ts +0 -122
- package/dist/index-dUb6wb4Y.d.ts +0 -22
- package/dist/marketplace.gen-BSDIX7NZ.js.map +0 -1
- package/dist/marketplaceConfig-C6X1SUik.js.map +0 -1
- package/dist/queries-CUU65uYZ.js.map +0 -1
- package/dist/react-DAIicQPT.js.map +0 -1
- package/dist/transaction-CcVViHEL.js.map +0 -1
- package/dist/utils-BPYfgDSL.js.map +0 -1
- package/dist/utils-CW2NA5KG.js.map +0 -1
- package/dist/wagmi-CDzEQbfk.js.map +0 -1
- package/src/react/hooks/__tests__/useGetTokenSuppliesMap.test.tsx +0 -104
- package/src/react/hooks/useGetTokenSuppliesMap.tsx +0 -73
- package/src/react/hooks/useListPrimarySaleItems.ts +0 -102
- package/src/react/queries/getTokenSuppliesMap.ts +0 -77
- package/src/react/ui/modals/TransferModal/_store.ts +0 -66
- package/src/react/ui/modals/_internal/components/quantityInput/QuantityInputBase.tsx +0 -166
- package/src/react/ui/modals/_internal/stores/accountModal.ts +0 -3
- /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/{options-B4QN7Xou.js → options-BBBR8u_4.js} +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useQuery } from '@tanstack/react-query';
|
|
4
|
+
import type { Optional } from '../_internal';
|
|
5
|
+
import type { ListPrimarySaleItemsQueryOptions } from '../queries/primarySaleItems';
|
|
6
|
+
import { primarySaleItemsCountQueryOptions } from '../queries/primarySaleItemsCount';
|
|
7
|
+
import { useConfig } from './useConfig';
|
|
8
|
+
|
|
9
|
+
export type UseGetCountParams = Optional<
|
|
10
|
+
ListPrimarySaleItemsQueryOptions,
|
|
11
|
+
'config'
|
|
12
|
+
>;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Hook to get the total count of primary sale items
|
|
16
|
+
*
|
|
17
|
+
* Retrieves the total count of primary sale items for a specific contract address
|
|
18
|
+
* from the marketplace.
|
|
19
|
+
*
|
|
20
|
+
* @param params - Configuration parameters
|
|
21
|
+
* @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
|
|
22
|
+
* @param params.primarySaleContractAddress - The primary sale contract address
|
|
23
|
+
* @param params.filter - Optional filter parameters for the query
|
|
24
|
+
* @param params.query - Optional React Query configuration
|
|
25
|
+
*
|
|
26
|
+
* @returns Query result containing the count of primary sale items
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const { data: count, isLoading } = useGetCountOfPrimarySaleItems({
|
|
31
|
+
* chainId: 137,
|
|
32
|
+
* primarySaleContractAddress: '0x...',
|
|
33
|
+
* })
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function useGetCountOfPrimarySaleItems(params: UseGetCountParams) {
|
|
37
|
+
const defaultConfig = useConfig();
|
|
38
|
+
const { config = defaultConfig, ...rest } = params;
|
|
39
|
+
|
|
40
|
+
const queryOptions = primarySaleItemsCountQueryOptions({
|
|
41
|
+
config,
|
|
42
|
+
...rest,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
return useQuery(queryOptions);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export type { ListPrimarySaleItemsQueryOptions };
|
|
@@ -1,31 +1,92 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import { useQuery } from '@tanstack/react-query';
|
|
2
4
|
import type { Address } from 'viem';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
+
import type { Optional } from '../_internal';
|
|
6
|
+
import {
|
|
7
|
+
type FetchGetTokenRangesParams,
|
|
8
|
+
type GetTokenRangesQueryOptions,
|
|
9
|
+
getTokenRangesQueryOptions,
|
|
10
|
+
} from '../queries/getTokenRanges';
|
|
11
|
+
import { useConfig } from './useConfig';
|
|
12
|
+
|
|
13
|
+
export type UseGetTokenRangesParams = Optional<
|
|
14
|
+
GetTokenRangesQueryOptions,
|
|
15
|
+
'config'
|
|
16
|
+
>;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Hook to fetch token ID ranges for a collection
|
|
20
|
+
*
|
|
21
|
+
* Retrieves the available token ID ranges for a specific collection,
|
|
22
|
+
* which is useful for understanding the token distribution and
|
|
23
|
+
* available tokens within a collection.
|
|
24
|
+
*
|
|
25
|
+
* @param params - Configuration parameters
|
|
26
|
+
* @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
|
|
27
|
+
* @param params.collectionAddress - The collection contract address to fetch ranges for
|
|
28
|
+
* @param params.query - Optional React Query configuration
|
|
29
|
+
*
|
|
30
|
+
* @returns Query result containing token ID ranges for the collection
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* Basic usage:
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const { data: tokenRanges, isLoading } = useGetTokenRanges({
|
|
36
|
+
* chainId: 137,
|
|
37
|
+
* collectionAddress: '0x1234...'
|
|
38
|
+
* })
|
|
39
|
+
*
|
|
40
|
+
* if (data) {
|
|
41
|
+
* console.log(`Token ranges: ${JSON.stringify(data.tokenIDRanges)}`);
|
|
42
|
+
* data.tokenIDRanges?.forEach(range => {
|
|
43
|
+
* console.log(`Range: ${range.start} - ${range.end}`);
|
|
44
|
+
* });
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* With conditional enabling:
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const { data: tokenRanges } = useGetTokenRanges({
|
|
52
|
+
* chainId: 1,
|
|
53
|
+
* collectionAddress: selectedCollection?.address,
|
|
54
|
+
* query: {
|
|
55
|
+
* enabled: Boolean(selectedCollection?.address),
|
|
56
|
+
* staleTime: 300000, // Cache for 5 minutes
|
|
57
|
+
* refetchInterval: 60000 // Refresh every minute
|
|
58
|
+
* }
|
|
59
|
+
* })
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export function useGetTokenRanges(params: UseGetTokenRangesParams) {
|
|
63
|
+
const defaultConfig = useConfig();
|
|
5
64
|
|
|
6
|
-
|
|
65
|
+
const { config = defaultConfig, ...rest } = params;
|
|
66
|
+
|
|
67
|
+
const queryOptions = getTokenRangesQueryOptions({
|
|
68
|
+
config,
|
|
69
|
+
...rest,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
return useQuery({
|
|
73
|
+
...queryOptions,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { getTokenRangesQueryOptions };
|
|
78
|
+
|
|
79
|
+
export type { FetchGetTokenRangesParams, GetTokenRangesQueryOptions };
|
|
80
|
+
|
|
81
|
+
// Legacy exports for backward compatibility
|
|
82
|
+
export type UseGetTokenRangesProps = {
|
|
7
83
|
chainId: number;
|
|
8
84
|
collectionAddress: Address;
|
|
9
85
|
query?: {
|
|
10
86
|
enabled?: boolean;
|
|
11
87
|
};
|
|
12
|
-
}
|
|
88
|
+
};
|
|
13
89
|
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
query = {},
|
|
18
|
-
}: UseGetTokenRangesProps) {
|
|
19
|
-
const config = useConfig();
|
|
20
|
-
const indexerClient = getIndexerClient(chainId, config);
|
|
21
|
-
|
|
22
|
-
return useQuery({
|
|
23
|
-
queryKey: ['indexer-tokenRanges', chainId, collectionAddress],
|
|
24
|
-
queryFn: () => {
|
|
25
|
-
return indexerClient.getTokenIDRanges({
|
|
26
|
-
contractAddress: collectionAddress,
|
|
27
|
-
});
|
|
28
|
-
},
|
|
29
|
-
enabled: query?.enabled,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
90
|
+
export type UseGetTokenRangesReturn = Awaited<
|
|
91
|
+
ReturnType<typeof import('../queries/getTokenRanges').fetchGetTokenRanges>
|
|
92
|
+
>;
|
|
@@ -75,6 +75,7 @@ export function useList1155ShopCardData({
|
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
const supply = saleData?.supply?.toString();
|
|
78
|
+
const unlimitedSupply = saleData?.unlimitedSupply;
|
|
78
79
|
|
|
79
80
|
return {
|
|
80
81
|
collectibleId: tokenId,
|
|
@@ -88,6 +89,7 @@ export function useList1155ShopCardData({
|
|
|
88
89
|
quantityInitial: supply,
|
|
89
90
|
quantityDecimals: collection?.decimals || 0,
|
|
90
91
|
quantityRemaining: supply,
|
|
92
|
+
unlimitedSupply,
|
|
91
93
|
saleStartsAt: saleData?.startDate?.toString(),
|
|
92
94
|
saleEndsAt: saleData?.endDate?.toString(),
|
|
93
95
|
marketplaceType: 'shop',
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Address } from 'viem';
|
|
2
2
|
import { useReadContract } from 'wagmi';
|
|
3
|
-
import { ContractType, OrderSide, type TokenMetadata } from '../../types';
|
|
4
3
|
import { ERC721_SALE_ABI } from '../../utils';
|
|
5
|
-
import type
|
|
4
|
+
import { ContractType, OrderSide, type TokenMetadata } from '../_internal';
|
|
5
|
+
import type { ShopCollectibleCardProps } from '../ui';
|
|
6
6
|
import { useFilterState } from './useFilterState';
|
|
7
7
|
import { useListCollectibles } from './useListCollectibles';
|
|
8
8
|
import { useListPrimarySaleItems } from './useListPrimarySaleItems';
|
|
@@ -92,10 +92,15 @@ export function useList721ShopCardData({
|
|
|
92
92
|
hasMintedTokens && Number(tokenId) < Number(firstAvailableTokenId);
|
|
93
93
|
|
|
94
94
|
const matchingPrimarySaleItem = primarySaleItems?.pages
|
|
95
|
-
.
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
.find((item) =>
|
|
96
|
+
item.primarySaleItems.find(
|
|
97
|
+
(primarySaleItem) =>
|
|
98
|
+
primarySaleItem.primarySaleItem.tokenId?.toString() === tokenId,
|
|
99
|
+
),
|
|
100
|
+
)
|
|
101
|
+
?.primarySaleItems.find(
|
|
102
|
+
(primarySaleItem) =>
|
|
103
|
+
primarySaleItem.primarySaleItem.tokenId?.toString() === tokenId,
|
|
99
104
|
);
|
|
100
105
|
|
|
101
106
|
const saleData = matchingPrimarySaleItem?.primarySaleItem;
|
|
@@ -135,7 +140,7 @@ export function useList721ShopCardData({
|
|
|
135
140
|
chainId,
|
|
136
141
|
collectionAddress: contractAddress,
|
|
137
142
|
collectionType: ContractType.ERC721,
|
|
138
|
-
tokenMetadata
|
|
143
|
+
tokenMetadata,
|
|
139
144
|
cardLoading: isLoading,
|
|
140
145
|
salesContractAddress: salesContractAddress,
|
|
141
146
|
salePrice,
|
|
@@ -16,57 +16,57 @@ export type UseListCollectionsParams = Optional<
|
|
|
16
16
|
>;
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Hook to fetch
|
|
19
|
+
* Hook to fetch collections from marketplace configuration
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
* metadata from the metadata API
|
|
21
|
+
* Retrieves all collections configured in the marketplace, with optional filtering
|
|
22
|
+
* by marketplace type. Combines metadata from the metadata API with marketplace
|
|
23
|
+
* configuration to provide complete collection information.
|
|
23
24
|
*
|
|
24
25
|
* @param params - Configuration parameters
|
|
25
|
-
* @param params.marketplaceType - Optional filter
|
|
26
|
-
* @param params.marketplaceConfig - Optional marketplace configuration (defaults from context)
|
|
27
|
-
* @param params.config - Optional SDK configuration (defaults from context)
|
|
26
|
+
* @param params.marketplaceType - Optional filter by marketplace type
|
|
28
27
|
* @param params.query - Optional React Query configuration
|
|
29
28
|
*
|
|
30
|
-
* @returns Query result containing
|
|
29
|
+
* @returns Query result containing array of collections with metadata
|
|
31
30
|
*
|
|
32
31
|
* @example
|
|
33
|
-
* Basic usage
|
|
32
|
+
* Basic usage:
|
|
34
33
|
* ```typescript
|
|
35
|
-
* const { data: collections, isLoading } = useListCollections()
|
|
34
|
+
* const { data: collections, isLoading } = useListCollections();
|
|
35
|
+
*
|
|
36
|
+
* if (isLoading) return <div>Loading collections...</div>;
|
|
37
|
+
*
|
|
38
|
+
* return (
|
|
39
|
+
* <div>
|
|
40
|
+
* {collections?.map(collection => (
|
|
41
|
+
* <div key={collection.itemsAddress}>
|
|
42
|
+
* {collection.name}
|
|
43
|
+
* </div>
|
|
44
|
+
* ))}
|
|
45
|
+
* </div>
|
|
46
|
+
* );
|
|
36
47
|
* ```
|
|
37
48
|
*
|
|
38
49
|
* @example
|
|
39
|
-
*
|
|
50
|
+
* Filtering by marketplace type:
|
|
40
51
|
* ```typescript
|
|
41
52
|
* const { data: marketCollections } = useListCollections({
|
|
42
53
|
* marketplaceType: 'market'
|
|
43
|
-
* })
|
|
44
|
-
* ```
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* With custom query options:
|
|
48
|
-
* ```typescript
|
|
49
|
-
* const { data: collections } = useListCollections({
|
|
50
|
-
* query: {
|
|
51
|
-
* enabled: isReady,
|
|
52
|
-
* staleTime: 5 * 60 * 1000 // 5 minutes
|
|
53
|
-
* }
|
|
54
|
-
* })
|
|
54
|
+
* });
|
|
55
55
|
* ```
|
|
56
56
|
*/
|
|
57
57
|
export function useListCollections(params: UseListCollectionsParams = {}) {
|
|
58
58
|
const defaultConfig = useConfig();
|
|
59
|
-
const { data:
|
|
59
|
+
const { data: marketplaceConfig } = useMarketplaceConfig();
|
|
60
60
|
|
|
61
61
|
const {
|
|
62
62
|
config = defaultConfig,
|
|
63
|
-
marketplaceConfig
|
|
63
|
+
marketplaceConfig: paramMarketplaceConfig,
|
|
64
64
|
...rest
|
|
65
65
|
} = params;
|
|
66
66
|
|
|
67
67
|
const queryOptions = listCollectionsQueryOptions({
|
|
68
68
|
config,
|
|
69
|
-
marketplaceConfig,
|
|
69
|
+
marketplaceConfig: paramMarketplaceConfig || marketplaceConfig,
|
|
70
70
|
...rest,
|
|
71
71
|
});
|
|
72
72
|
|
|
@@ -19,7 +19,8 @@ import { useListCollectibles } from './useListCollectibles';
|
|
|
19
19
|
interface UseListMarketCardDataProps {
|
|
20
20
|
collectionAddress: Address;
|
|
21
21
|
chainId: number;
|
|
22
|
-
orderbookKind
|
|
22
|
+
// orderbookKind is optional — used to override marketplace config for internal tests
|
|
23
|
+
orderbookKind?: OrderbookKind;
|
|
23
24
|
collectionType: ContractType;
|
|
24
25
|
filterOptions?: PropertyFilter[];
|
|
25
26
|
searchText?: string;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useInfiniteQuery } from '@tanstack/react-query';
|
|
4
|
+
import type { Optional } from '../_internal';
|
|
5
|
+
import {
|
|
6
|
+
type ListPrimarySaleItemsQueryOptions,
|
|
7
|
+
listPrimarySaleItemsQueryOptions,
|
|
8
|
+
} from '../queries/primarySaleItems';
|
|
9
|
+
import { useConfig } from './useConfig';
|
|
10
|
+
|
|
11
|
+
export type UseListPrimarySaleItemsParams = Optional<
|
|
12
|
+
ListPrimarySaleItemsQueryOptions,
|
|
13
|
+
'config'
|
|
14
|
+
>;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Hook to fetch primary sale items with pagination support
|
|
18
|
+
*
|
|
19
|
+
* Retrieves a paginated list of primary sale items for a specific contract address
|
|
20
|
+
* from the marketplace.
|
|
21
|
+
*
|
|
22
|
+
* @param params - Configuration parameters
|
|
23
|
+
* @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
|
|
24
|
+
* @param params.primarySaleContractAddress - The primary sale contract address
|
|
25
|
+
* @param params.filter - Optional filter parameters for the query
|
|
26
|
+
* @param params.page - Optional pagination parameters
|
|
27
|
+
* @param params.query - Optional React Query configuration
|
|
28
|
+
*
|
|
29
|
+
* @returns Infinite query result containing the primary sale items data
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* Basic usage:
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const { data, isLoading } = useListPrimarySaleItems({
|
|
35
|
+
* chainId: 137,
|
|
36
|
+
* primarySaleContractAddress: '0x...',
|
|
37
|
+
* })
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* With filters and pagination:
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const { data, isLoading } = useListPrimarySaleItems({
|
|
44
|
+
* chainId: 1,
|
|
45
|
+
* primarySaleContractAddress: '0x...',
|
|
46
|
+
* filter: { status: 'active' },
|
|
47
|
+
* page: { page: 1, pageSize: 20 },
|
|
48
|
+
* query: {
|
|
49
|
+
* enabled: isReady
|
|
50
|
+
* }
|
|
51
|
+
* })
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export function useListPrimarySaleItems(params: UseListPrimarySaleItemsParams) {
|
|
55
|
+
const defaultConfig = useConfig();
|
|
56
|
+
const { config = defaultConfig, ...rest } = params;
|
|
57
|
+
|
|
58
|
+
const queryOptions = listPrimarySaleItemsQueryOptions({
|
|
59
|
+
config,
|
|
60
|
+
...rest,
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
return useInfiniteQuery(queryOptions);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export type { ListPrimarySaleItemsQueryOptions };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useQuery } from '@tanstack/react-query';
|
|
4
|
+
import type { Optional } from '../_internal';
|
|
5
|
+
import {
|
|
6
|
+
type FetchListTokenMetadataParams,
|
|
7
|
+
type ListTokenMetadataQueryOptions,
|
|
8
|
+
listTokenMetadataQueryOptions,
|
|
9
|
+
} from '../queries/listTokenMetadata';
|
|
10
|
+
import { useConfig } from './useConfig';
|
|
11
|
+
|
|
12
|
+
export type UseListTokenMetadataParams = Optional<
|
|
13
|
+
ListTokenMetadataQueryOptions,
|
|
14
|
+
'config'
|
|
15
|
+
>;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Hook to fetch token metadata from the metadata API
|
|
19
|
+
*
|
|
20
|
+
* Retrieves metadata for a batch of tokens from a specific contract.
|
|
21
|
+
* Useful for getting token names, descriptions, images, and other attributes.
|
|
22
|
+
*
|
|
23
|
+
* @param params - Configuration parameters
|
|
24
|
+
* @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
|
|
25
|
+
* @param params.contractAddress - The contract address containing the tokens
|
|
26
|
+
* @param params.tokenIds - Array of token IDs to fetch metadata for
|
|
27
|
+
* @param params.query - Optional React Query configuration
|
|
28
|
+
*
|
|
29
|
+
* @returns Query result containing token metadata array
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* Basic usage:
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const { data, isLoading } = useListTokenMetadata({
|
|
35
|
+
* chainId: 137,
|
|
36
|
+
* contractAddress: '0x...',
|
|
37
|
+
* tokenIds: ['1', '2', '3']
|
|
38
|
+
* })
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* With conditional fetching:
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const { data, isLoading } = useListTokenMetadata({
|
|
45
|
+
* chainId: 1,
|
|
46
|
+
* contractAddress: '0x...',
|
|
47
|
+
* tokenIds: selectedTokenIds,
|
|
48
|
+
* query: {
|
|
49
|
+
* enabled: selectedTokenIds.length > 0
|
|
50
|
+
* }
|
|
51
|
+
* })
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export function useListTokenMetadata(params: UseListTokenMetadataParams) {
|
|
55
|
+
const defaultConfig = useConfig();
|
|
56
|
+
|
|
57
|
+
const { config = defaultConfig, ...rest } = params;
|
|
58
|
+
|
|
59
|
+
const queryOptions = listTokenMetadataQueryOptions({
|
|
60
|
+
config,
|
|
61
|
+
...rest,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
return useQuery({
|
|
65
|
+
...queryOptions,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { listTokenMetadataQueryOptions };
|
|
70
|
+
|
|
71
|
+
export type { FetchListTokenMetadataParams, ListTokenMetadataQueryOptions };
|
|
@@ -62,15 +62,11 @@ export function useTokenSaleDetailsBatch({
|
|
|
62
62
|
const supplies = await Promise.all(
|
|
63
63
|
tokenIds.map(async (tokenId) => {
|
|
64
64
|
try {
|
|
65
|
-
const result = await indexerClient.
|
|
66
|
-
|
|
67
|
-
[collectionAddress]: [tokenId],
|
|
68
|
-
},
|
|
65
|
+
const result = await indexerClient.getTokenSupplies({
|
|
66
|
+
contractAddress: collectionAddress,
|
|
69
67
|
includeMetadata: false,
|
|
70
68
|
});
|
|
71
|
-
const supply = result.
|
|
72
|
-
(s) => s.tokenID === tokenId,
|
|
73
|
-
);
|
|
69
|
+
const supply = result.tokenIDs?.find((s) => s.tokenID === tokenId);
|
|
74
70
|
return {
|
|
75
71
|
tokenId,
|
|
76
72
|
supply: supply ? Number(supply.supply) : 0,
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useQuery } from '@tanstack/react-query';
|
|
4
|
+
import type { Optional } from '../_internal';
|
|
5
|
+
import {
|
|
6
|
+
type FetchTokenSuppliesParams,
|
|
7
|
+
type TokenSuppliesQueryOptions,
|
|
8
|
+
tokenSuppliesQueryOptions,
|
|
9
|
+
} from '../queries/tokenSupplies';
|
|
10
|
+
import { useConfig } from './useConfig';
|
|
11
|
+
|
|
12
|
+
export type UseTokenSuppliesParams = Optional<
|
|
13
|
+
TokenSuppliesQueryOptions,
|
|
14
|
+
'config'
|
|
15
|
+
>;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Hook to fetch token supplies from the indexer or LAOS API
|
|
19
|
+
*
|
|
20
|
+
* Retrieves supply information for tokens from a specific collection.
|
|
21
|
+
* Automatically chooses between indexer and LAOS APIs based on the isLaos721 flag.
|
|
22
|
+
*
|
|
23
|
+
* @param params - Configuration parameters
|
|
24
|
+
* @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
|
|
25
|
+
* @param params.collectionAddress - The collection contract address
|
|
26
|
+
* @param params.isLaos721 - Whether to use LAOS API instead of indexer
|
|
27
|
+
* @param params.includeMetadata - Whether to include token metadata
|
|
28
|
+
* @param params.page - Pagination options
|
|
29
|
+
* @param params.query - Optional React Query configuration
|
|
30
|
+
*
|
|
31
|
+
* @returns Query result containing token supplies
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* Basic usage:
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const { data, isLoading } = useTokenSupplies({
|
|
37
|
+
* chainId: 137,
|
|
38
|
+
* collectionAddress: '0x...'
|
|
39
|
+
* })
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* With LAOS API:
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const { data, isLoading } = useTokenSupplies({
|
|
46
|
+
* chainId: 1,
|
|
47
|
+
* collectionAddress: '0x...',
|
|
48
|
+
* isLaos721: true
|
|
49
|
+
* })
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* With conditional fetching:
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const { data, isLoading } = useTokenSupplies({
|
|
56
|
+
* chainId: 1,
|
|
57
|
+
* collectionAddress: selectedCollection,
|
|
58
|
+
* query: {
|
|
59
|
+
* enabled: !!selectedCollection
|
|
60
|
+
* }
|
|
61
|
+
* })
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export function useTokenSupplies(params: UseTokenSuppliesParams) {
|
|
65
|
+
const defaultConfig = useConfig();
|
|
66
|
+
|
|
67
|
+
const { config = defaultConfig, ...rest } = params;
|
|
68
|
+
|
|
69
|
+
const queryOptions = tokenSuppliesQueryOptions({
|
|
70
|
+
config,
|
|
71
|
+
...rest,
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
return useQuery({
|
|
75
|
+
...queryOptions,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export { tokenSuppliesQueryOptions };
|
|
80
|
+
|
|
81
|
+
export type { FetchTokenSuppliesParams, TokenSuppliesQueryOptions };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Abi, type Address, erc721Abi
|
|
1
|
+
import { type Abi, type Address, erc721Abi } from 'viem';
|
|
2
2
|
import { useAccount, useWriteContract } from 'wagmi';
|
|
3
3
|
import { ERC1155_ABI } from '../../utils';
|
|
4
4
|
import { NoWalletConnectedError } from '../../utils/_internal/error/transaction';
|
|
@@ -6,7 +6,7 @@ import type { ContractType } from '../_internal';
|
|
|
6
6
|
|
|
7
7
|
interface BaseTransferParams {
|
|
8
8
|
chainId: number;
|
|
9
|
-
collectionAddress:
|
|
9
|
+
collectionAddress: Address;
|
|
10
10
|
tokenId: string;
|
|
11
11
|
receiverAddress: Address;
|
|
12
12
|
}
|
package/src/react/provider.tsx
CHANGED
|
@@ -1,19 +1,78 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { useOpenConnectModal } from '@0xsequence/connect';
|
|
4
|
+
import type { Auth } from '@databeat/tracker';
|
|
3
5
|
import { QueryClientProvider } from '@tanstack/react-query';
|
|
4
|
-
import { createContext } from 'react';
|
|
5
|
-
import type {
|
|
6
|
+
import { createContext, useMemo } from 'react';
|
|
7
|
+
import type {
|
|
8
|
+
MarketplaceSdkContext as MarketplaceSdkContextType,
|
|
9
|
+
SdkConfig,
|
|
10
|
+
} from '../types';
|
|
6
11
|
import { InvalidProjectAccessKeyError } from '../utils/_internal/error/config';
|
|
7
12
|
import { getQueryClient } from './_internal/api/get-query-client';
|
|
13
|
+
import { DatabeatAnalytics } from './_internal/databeat';
|
|
8
14
|
import { PROVIDER_ID } from './_internal/get-provider';
|
|
9
15
|
|
|
10
|
-
export const MarketplaceSdkContext = createContext(
|
|
16
|
+
export const MarketplaceSdkContext = createContext(
|
|
17
|
+
{} as MarketplaceSdkContextType,
|
|
18
|
+
);
|
|
11
19
|
|
|
12
20
|
export type MarketplaceSdkProviderProps = {
|
|
13
21
|
config: SdkConfig;
|
|
14
22
|
children: React.ReactNode;
|
|
23
|
+
openConnectModal?: () => void;
|
|
15
24
|
};
|
|
16
25
|
|
|
26
|
+
export function MarketplaceProvider({
|
|
27
|
+
config,
|
|
28
|
+
children,
|
|
29
|
+
openConnectModal,
|
|
30
|
+
}: MarketplaceSdkProviderProps) {
|
|
31
|
+
if (config.projectAccessKey === '' || !config.projectAccessKey) {
|
|
32
|
+
throw new InvalidProjectAccessKeyError(config.projectAccessKey);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const analytics = useMemo(() => {
|
|
36
|
+
const server = 'https://nodes.sequence.app';
|
|
37
|
+
const auth: Auth = {};
|
|
38
|
+
auth.headers = { 'X-Access-Key': config.projectAccessKey };
|
|
39
|
+
|
|
40
|
+
return new DatabeatAnalytics(server, auth, {
|
|
41
|
+
defaultEnabled: true,
|
|
42
|
+
initProps: () => {
|
|
43
|
+
return {
|
|
44
|
+
origin: typeof window !== 'undefined' ? window.location.origin : '',
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}, [config.projectAccessKey, window]);
|
|
49
|
+
|
|
50
|
+
if (openConnectModal) {
|
|
51
|
+
const context: MarketplaceSdkContextType = {
|
|
52
|
+
...config,
|
|
53
|
+
openConnectModal,
|
|
54
|
+
analytics,
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
return (
|
|
58
|
+
<MarketplaceQueryClientProvider>
|
|
59
|
+
<MarketplaceSdkContext.Provider value={context}>
|
|
60
|
+
<div id={PROVIDER_ID}>{children}</div>
|
|
61
|
+
</MarketplaceSdkContext.Provider>
|
|
62
|
+
</MarketplaceQueryClientProvider>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<MarketplaceProviderWithSequenceConnect
|
|
68
|
+
config={config}
|
|
69
|
+
analytics={analytics}
|
|
70
|
+
>
|
|
71
|
+
{children}
|
|
72
|
+
</MarketplaceProviderWithSequenceConnect>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
17
76
|
export function MarketplaceQueryClientProvider({
|
|
18
77
|
children,
|
|
19
78
|
}: {
|
|
@@ -25,17 +84,22 @@ export function MarketplaceQueryClientProvider({
|
|
|
25
84
|
);
|
|
26
85
|
}
|
|
27
86
|
|
|
28
|
-
|
|
87
|
+
function MarketplaceProviderWithSequenceConnect({
|
|
29
88
|
config,
|
|
30
89
|
children,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
90
|
+
analytics,
|
|
91
|
+
}: MarketplaceSdkProviderProps & { analytics: DatabeatAnalytics }) {
|
|
92
|
+
const { setOpenConnectModal } = useOpenConnectModal();
|
|
93
|
+
|
|
94
|
+
const context: MarketplaceSdkContextType = {
|
|
95
|
+
...config,
|
|
96
|
+
openConnectModal: () => setOpenConnectModal(true),
|
|
97
|
+
analytics,
|
|
98
|
+
};
|
|
35
99
|
|
|
36
100
|
return (
|
|
37
101
|
<MarketplaceQueryClientProvider>
|
|
38
|
-
<MarketplaceSdkContext.Provider value={
|
|
102
|
+
<MarketplaceSdkContext.Provider value={context}>
|
|
39
103
|
<div id={PROVIDER_ID}>{children}</div>
|
|
40
104
|
</MarketplaceSdkContext.Provider>
|
|
41
105
|
</MarketplaceQueryClientProvider>
|