@0xsequence/marketplace-sdk 0.8.10 → 0.8.12
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/.changeset/fluffy-jokes-lay.md +5 -0
- package/.changeset/wise-bugs-boil.md +8 -0
- package/CHANGELOG.md +182 -3
- package/dist/CartIcon-Bll1rbxv.js +141 -0
- package/dist/CartIcon-Bll1rbxv.js.map +1 -0
- package/dist/CollectibleCard-CLQTl0_6.d.ts +8 -0
- package/dist/_internal-69NEWNUE.js +34 -0
- package/dist/_internal-69NEWNUE.js.map +1 -0
- package/dist/abi-BKyRjVcZ.js +0 -0
- package/dist/{alien_swap-2B65TDGT.js → alien_swap-B_76IMma.js} +5 -5
- package/dist/alien_swap-B_76IMma.js.map +1 -0
- package/dist/api-1KFxYh7o.js +232 -0
- package/dist/api-1KFxYh7o.js.map +1 -0
- package/dist/{aqua-xyz-WMYQLAIS.js → aqua-xyz-CMN_TFY5.js} +5 -5
- package/dist/aqua-xyz-CMN_TFY5.js.map +1 -0
- package/dist/{aura-V22RV5OG.js → aura-Cye_TuHj.js} +5 -5
- package/dist/aura-Cye_TuHj.js.map +1 -0
- package/dist/{blur-GE5QOMCM.js → blur-DWDMyMpK.js} +5 -5
- package/dist/blur-DWDMyMpK.js.map +1 -0
- package/dist/builder-api-BQvzykoU.js +28 -0
- package/dist/builder-api-BQvzykoU.js.map +1 -0
- package/dist/builder-api-DoK3907S.d.ts +12 -0
- package/dist/builder.gen-CxP9NT1p.js +303 -0
- package/dist/builder.gen-CxP9NT1p.js.map +1 -0
- package/dist/{coinbase-NLHJMGAP.js → coinbase-ByA_XRB0.js} +5 -5
- package/dist/coinbase-ByA_XRB0.js.map +1 -0
- package/dist/{element-2LGTYYSP.js → element-b77CyXIZ.js} +5 -5
- package/dist/element-b77CyXIZ.js.map +1 -0
- package/dist/{foundation-BPN66ZTN.js → foundation-DbOrKP9Y.js} +5 -5
- package/dist/foundation-DbOrKP9Y.js.map +1 -0
- package/dist/index-1bezgsFq.d.ts +1129 -0
- package/dist/index-4-kfOFdx.d.ts +22 -0
- package/dist/index-BEYefG1G.d.ts +24 -0
- package/dist/index-BHiSG-Yi.d.ts +312 -0
- package/dist/index-BIMIpDiI.d.ts +188 -0
- package/dist/index-BQW0PUkQ.d.ts +3973 -0
- package/dist/index-BfH21xmk.d.ts +117 -0
- package/dist/index-BjIwVzc4.d.ts +1057 -0
- package/dist/index-C39K_8SG.d.ts +1 -0
- package/dist/index-CN8puQQJ.d.ts +24 -0
- package/dist/index-Cl7PQOGu.d.ts +102 -0
- package/dist/index-D5v5iluA.d.ts +809 -0
- package/dist/index-DXMfTZ1F.d.ts +7 -0
- package/dist/index-DafWjEb4.d.ts +65 -0
- package/dist/index-ij9f8GAA.d.ts +1 -0
- package/dist/index.css +384 -371
- package/dist/index.d.ts +10 -28
- package/dist/index.js +13 -105
- package/dist/{looks-rare-MZRSOPT4.js → looks-rare-C1VqNcSM.js} +5 -5
- package/dist/looks-rare-C1VqNcSM.js.map +1 -0
- package/dist/{magic-eden-PUBL6KWW.js → magic-eden-ea_AGCZr.js} +5 -5
- package/dist/magic-eden-ea_AGCZr.js.map +1 -0
- package/dist/{manifold-GA445YJ6.js → manifold-8y8J2sjT.js} +5 -5
- package/dist/manifold-8y8J2sjT.js.map +1 -0
- package/dist/marketplace-logos-CSeGcPW4.js +50 -0
- package/dist/marketplace-logos-CSeGcPW4.js.map +1 -0
- package/dist/marketplace-nwnZv9Cb.js +1913 -0
- package/dist/marketplace-nwnZv9Cb.js.map +1 -0
- package/dist/marketplace.gen-Dqk8vRmD.js +1068 -0
- package/dist/marketplace.gen-Dqk8vRmD.js.map +1 -0
- package/dist/marketplaceConfig-D2MYFqll.js +71 -0
- package/dist/marketplaceConfig-D2MYFqll.js.map +1 -0
- package/dist/{mintify-UMC5PTKC.js → mintify-LA68TzWg.js} +5 -5
- package/dist/mintify-LA68TzWg.js.map +1 -0
- package/dist/{nftx-AX3CY3IE.js → nftx-D3Tc8nzd.js} +5 -5
- package/dist/nftx-D3Tc8nzd.js.map +1 -0
- package/dist/{okx-GNVLAE2R.js → okx-hbqg6oIJ.js} +5 -5
- package/dist/okx-hbqg6oIJ.js.map +1 -0
- package/dist/{open-sea-KI43GVEB.js → open-sea-BccuK8-t.js} +5 -5
- package/dist/open-sea-BccuK8-t.js.map +1 -0
- package/dist/options-DCi6_23w.js +34 -0
- package/dist/options-DCi6_23w.js.map +1 -0
- package/dist/primary-sale-Cw95phYC.js +1264 -0
- package/dist/primary-sale-Cw95phYC.js.map +1 -0
- package/dist/queries-DPvwtnO7.js +486 -0
- package/dist/queries-DPvwtnO7.js.map +1 -0
- package/dist/{rarible-2J3MMZJ7.js → rarible-BgTwwj9g.js} +5 -5
- package/dist/rarible-BgTwwj9g.js.map +1 -0
- package/dist/react/_internal/api/index.d.ts +4 -86
- package/dist/react/_internal/api/index.js +7 -150
- package/dist/react/_internal/databeat/index.d.ts +45 -41
- package/dist/react/_internal/databeat/index.js +23 -27
- package/dist/react/_internal/index.d.ts +7 -24
- package/dist/react/_internal/index.js +9 -176
- package/dist/react/_internal/wagmi/index.d.ts +4 -18
- package/dist/react/_internal/wagmi/index.js +5 -14
- package/dist/react/hooks/index.d.ts +17 -3803
- package/dist/react/hooks/index.js +23 -157
- package/dist/react/hooks/options/index.d.ts +5 -7
- package/dist/react/hooks/options/index.js +11 -19
- package/dist/react/index.d.ts +37 -33
- package/dist/react/index.js +23 -199
- package/dist/react/queries/index.d.ts +8 -26
- package/dist/react/queries/index.js +18 -40
- package/dist/react/ssr/index.d.ts +19 -13
- package/dist/react/ssr/index.js +29 -27
- package/dist/react/ssr/index.js.map +1 -1
- package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +10 -0
- package/dist/react/ui/components/marketplace-collectible-card/index.js +23 -0
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +8 -0
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +10 -0
- package/dist/react/ui/components/marketplace-logos/index.d.ts +26 -24
- package/dist/react/ui/components/marketplace-logos/index.js +3 -45
- package/dist/react/ui/icons/index.d.ts +1 -2
- package/dist/react/ui/icons/index.js +10 -14
- package/dist/react/ui/index.d.ts +10 -116
- package/dist/react/ui/index.js +23 -46
- package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +59 -33
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +23 -31
- package/dist/react-BG7o4PId.js +8351 -0
- package/dist/react-BG7o4PId.js.map +1 -0
- package/dist/react-BbHBl6gg.css +80 -0
- package/dist/react-BbHBl6gg.css.map +1 -0
- package/dist/sdk-config-DJzxVPld.d.ts +1535 -0
- package/dist/{sequence-TGLUFEPQ.js → sequence-Do3kzb4J.js} +5 -5
- package/dist/sequence-Do3kzb4J.js.map +1 -0
- package/dist/src-Dz2CfBL0.js +8 -0
- package/dist/src-Dz2CfBL0.js.map +1 -0
- package/dist/{sudo-swap-M2O6E3TE.js → sudo-swap-B6vPKxBz.js} +5 -5
- package/dist/sudo-swap-B6vPKxBz.js.map +1 -0
- package/dist/{super-rare-UU2U4LIN.js → super-rare-eCm1SE6O.js} +5 -5
- package/dist/super-rare-eCm1SE6O.js.map +1 -0
- package/dist/token-CO5llIla.js +1312 -0
- package/dist/token-CO5llIla.js.map +1 -0
- package/dist/transaction-CcVViHEL.js +97 -0
- package/dist/transaction-CcVViHEL.js.map +1 -0
- package/dist/types/index.d.ts +3 -12
- package/dist/types/index.js +5 -44
- package/dist/types-BIJOaL4j.d.ts +68 -0
- package/dist/types-DwWE6xOF.js +13 -0
- package/dist/types-DwWE6xOF.js.map +1 -0
- package/dist/useCollection-C-mclKU0.d.ts +66 -0
- package/dist/utils/abi/index.d.ts +5 -3
- package/dist/utils/abi/index.js +6 -26
- package/dist/utils/abi/marketplace/index.d.ts +2 -805
- package/dist/utils/abi/marketplace/index.js +3 -11
- package/dist/utils/abi/primary-sale/index.d.ts +2 -1054
- package/dist/utils/abi/primary-sale/index.js +3 -9
- package/dist/utils/abi/token/index.d.ts +2 -1125
- package/dist/utils/abi/token/index.js +3 -11
- package/dist/utils/index.d.ts +8 -91
- package/dist/utils/index.js +11 -56
- package/dist/utils-BFdxaToy.js +216 -0
- package/dist/utils-BFdxaToy.js.map +1 -0
- package/dist/utils-Cat9_pef.js +44 -0
- package/dist/utils-Cat9_pef.js.map +1 -0
- package/dist/wagmi-DRctYEk6.js +159 -0
- package/dist/wagmi-DRctYEk6.js.map +1 -0
- package/dist/{x2y2-3W5BBMZC.js → x2y2-DD17tT91.js} +5 -5
- package/dist/x2y2-DD17tT91.js.map +1 -0
- package/dist/{zora-6EY6FUH6.js → zora-BpSG9UzS.js} +5 -5
- package/dist/zora-BpSG9UzS.js.map +1 -0
- package/package.json +21 -19
- package/src/index.ts +0 -1
- package/src/react/_internal/api/__mocks__/builder.msw.ts +157 -80
- package/src/react/_internal/api/__mocks__/indexer.msw.ts +1 -0
- package/src/react/_internal/api/builder-api.ts +2 -2
- package/src/react/_internal/api/builder.gen.ts +666 -112
- package/src/react/_internal/api/marketplace.gen.ts +2421 -1315
- package/src/react/_internal/api/services.ts +42 -49
- package/src/react/_internal/types.ts +1 -13
- package/src/react/_internal/wagmi/__tests__/create-config.test.ts +102 -87
- package/src/react/_internal/wagmi/create-config.ts +15 -6
- package/src/react/_internal/wagmi/get-connectors.ts +29 -21
- package/src/react/hooks/__tests__/__snapshots__/useListCollections.test.tsx.snap +273 -0
- package/src/react/hooks/__tests__/__snapshots__/useMarketplaceConfig.test.tsx.snap +122 -82
- package/src/react/hooks/__tests__/useAutoSelectFeeOption.test.tsx +7 -4
- package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +225 -0
- package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +3 -3
- package/src/react/hooks/__tests__/useFilters.test.tsx +0 -16
- package/src/react/hooks/__tests__/useGenerateCancelTransaction.test.tsx +2 -3
- package/src/react/hooks/__tests__/useHighestOffer.test.tsx +0 -16
- package/src/react/hooks/__tests__/useInventory.test.tsx +6 -42
- package/src/react/hooks/__tests__/useListCollections.test.tsx +24 -57
- package/src/react/hooks/__tests__/{useCurrencies.test.tsx → useMarketCurrencies.test.tsx} +21 -15
- package/src/react/hooks/__tests__/useMarketplaceConfig.test.tsx +2 -59
- package/src/react/hooks/index.ts +9 -1
- package/src/react/hooks/useBalanceOfCollectible.tsx +14 -8
- package/src/react/hooks/useCancelTransactionSteps.tsx +5 -1
- package/src/react/hooks/useCheckoutOptions.tsx +2 -1
- package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +67 -0
- package/src/react/hooks/useCollectionDetails.tsx +22 -7
- package/src/react/hooks/useConvertPriceToUSD.tsx +1 -1
- package/src/react/hooks/useCountListingsForCollectible.tsx +5 -4
- package/src/react/hooks/useCountOfCollectables.tsx +10 -7
- package/src/react/hooks/useCountOffersForCollectible.tsx +5 -4
- package/src/react/hooks/useCurrency.tsx +2 -2
- package/src/react/hooks/useERC721SaleMintedTokens.tsx +67 -0
- package/src/react/hooks/useFilters.tsx +14 -22
- package/src/react/hooks/useFloorOrder.tsx +5 -2
- package/src/react/hooks/useGenerateCancelTransaction.tsx +13 -6
- package/src/react/hooks/useGenerateListingTransaction.tsx +15 -5
- package/src/react/hooks/useGenerateOfferTransaction.tsx +15 -6
- package/src/react/hooks/useGenerateSellTransaction.tsx +15 -6
- package/src/react/hooks/useGetTokenSuppliesMap.ts +33 -0
- package/src/react/hooks/useInventory.tsx +7 -4
- package/src/react/hooks/useList1155ShopCardData.tsx +130 -0
- package/src/react/hooks/useList721ShopCardData.tsx +130 -0
- package/src/react/hooks/useListBalances.tsx +7 -8
- package/src/react/hooks/useListCollectibleActivities.tsx +2 -1
- package/src/react/hooks/useListCollectibles.tsx +1 -12
- package/src/react/hooks/useListCollectiblesPaginated.tsx +8 -5
- package/src/react/hooks/useListCollectionActivities.tsx +2 -1
- package/src/react/hooks/useListCollections.tsx +14 -76
- package/src/react/hooks/useListListingsForCollectible.tsx +2 -1
- package/src/react/hooks/useListMarketCardData.tsx +157 -0
- package/src/react/hooks/useListOffersForCollectible.tsx +2 -1
- package/src/react/hooks/useListPrimarySaleItems.ts +42 -0
- package/src/react/hooks/useMarketCurrencies.tsx +8 -0
- package/src/react/hooks/useMarketplaceConfig.tsx +0 -2
- package/src/react/hooks/useTokenSaleDetailsBatch.tsx +134 -0
- package/src/react/queries/highestOffer.ts +6 -4
- package/src/react/queries/index.ts +1 -0
- package/src/react/queries/inventory.ts +36 -2
- package/src/react/queries/listBalances.ts +14 -30
- package/src/react/queries/listCollectibles.ts +60 -7
- package/src/react/queries/listCollections.ts +124 -0
- package/src/react/queries/listTokenMetadata.ts +6 -1
- package/src/react/queries/lowestListing.ts +6 -4
- package/src/react/queries/marketCurrencies.ts +81 -0
- package/src/react/queries/marketplaceConfig.ts +82 -79
- package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +122 -82
- package/src/react/ssr/__tests__/create-ssr-client.test.ts +0 -3
- package/src/react/ssr/create-ssr-client.ts +5 -10
- package/src/react/ui/components/_internals/action-button/ActionButton.tsx +47 -13
- package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +1 -1
- package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +28 -15
- package/src/react/ui/components/_internals/action-button/__tests__/OwnerActions.test.tsx +1 -1
- package/src/react/ui/components/_internals/action-button/__tests__/useActionButtonLogic.test.tsx +1 -1
- package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +1 -1
- package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +78 -15
- package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +1 -1
- package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +1 -1
- package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +17 -0
- package/src/react/ui/components/marketplace-collectible-card/CollectibleCardSkeleton.tsx +24 -0
- package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +231 -0
- package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +76 -0
- package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +55 -0
- package/src/react/ui/components/marketplace-collectible-card/index.ts +3 -0
- package/src/react/ui/components/marketplace-collectible-card/types.ts +95 -0
- package/src/react/ui/components/marketplace-collectible-card/utils/formatPrice.ts +45 -0
- package/src/react/ui/components/marketplace-collectible-card/utils/index.ts +2 -0
- package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +39 -0
- package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +124 -0
- package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +105 -0
- package/src/react/ui/components/{collectible-card/media → media}/Media.tsx +52 -30
- package/src/react/ui/components/{collectible-card/media → media}/MediaSkeleton.tsx +1 -1
- package/src/react/ui/components/{collectible-card/media → media}/types.ts +4 -1
- package/src/react/ui/index.ts +5 -2
- package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +554 -0
- package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +385 -0
- package/src/react/ui/modals/BuyModal/__tests__/ERC721ShopModal.test.tsx +272 -0
- package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx.bak +112 -0
- package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +117 -13
- package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +10 -7
- package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +157 -0
- package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +136 -0
- package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +184 -0
- package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +121 -0
- package/src/react/ui/modals/BuyModal/components/ERC721BuyModal.tsx +85 -0
- package/src/react/ui/modals/BuyModal/components/ERC721ShopModal.tsx +86 -0
- package/src/react/ui/modals/BuyModal/components/Modal.tsx +14 -0
- package/src/react/ui/modals/BuyModal/components/types.ts +8 -0
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useCheckoutOptions.test.tsx +4 -4
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +379 -0
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC721SalePaymentParams.test.tsx +253 -0
- package/src/react/ui/modals/BuyModal/hooks/__tests__/{useFees.test.tsx → useMarketPlatformFee.test.tsx} +37 -28
- package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +62 -44
- package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +73 -0
- package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +196 -0
- package/src/react/ui/modals/BuyModal/hooks/useLoadData.ts +74 -18
- package/src/react/ui/modals/BuyModal/hooks/useMarketPlatformFee.ts +53 -0
- package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +27 -12
- package/src/react/ui/modals/BuyModal/store.ts +147 -13
- package/src/react/ui/modals/CreateListingModal/Modal.tsx +3 -5
- package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +5 -3
- package/src/react/ui/modals/CreateListingModal/hooks/useGetTokenApproval.ts +2 -1
- package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +7 -5
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +2 -3
- package/src/react/ui/modals/MakeOfferModal/hooks/useGetTokenApproval.tsx +2 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +4 -3
- package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +5 -3
- package/src/react/ui/modals/SellModal/Modal.tsx +0 -1
- package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +4 -3
- package/src/react/ui/modals/SellModal/hooks/useTransactionSteps.tsx +8 -5
- package/src/react/ui/modals/SuccessfulPurchaseModal/__tests__/Modal.test.tsx +11 -7
- package/src/react/ui/modals/SuccessfulPurchaseModal/index.tsx +34 -28
- package/src/react/ui/modals/SuccessfulPurchaseModal/store.ts +71 -0
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +0 -1
- package/src/react/ui/modals/TransferModal/index.tsx +0 -1
- package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +0 -1
- package/src/react/ui/modals/_internal/components/actionModal/ActionModal.tsx +105 -108
- package/src/react/ui/modals/_internal/components/actionModal/store.ts +45 -12
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +2 -2
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +7 -6
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +13 -7
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +3 -5
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +5 -3
- package/src/react/ui/modals/_internal/components/switchChainModal/__tests__/SwitchChainModal.test.tsx +12 -8
- package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +35 -33
- package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +61 -32
- package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
- package/src/react/ui/modals/_internal/hooks/useSelectWaasFeeOptions.ts +2 -12
- package/src/react/ui/modals/modal-provider.tsx +1 -1
- package/src/types/buyModalErrors.ts +438 -0
- package/src/types/index.ts +1 -3
- package/src/types/new-marketplace-types.ts +104 -0
- package/src/types/sdk-config.ts +22 -12
- package/src/types/types.ts +17 -0
- package/src/utils/_internal/error/transaction.ts +36 -1
- package/tsconfig.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/tsdown.config.ts +25 -0
- package/.ctirc +0 -32
- package/dist/alien_swap-2B65TDGT.js.map +0 -1
- package/dist/aqua-xyz-WMYQLAIS.js.map +0 -1
- package/dist/aura-V22RV5OG.js.map +0 -1
- package/dist/blur-GE5QOMCM.js.map +0 -1
- package/dist/chunk-2PSNAIAT.js +0 -1
- package/dist/chunk-2PSNAIAT.js.map +0 -1
- package/dist/chunk-5C6ZZ6WX.js +0 -130
- package/dist/chunk-5C6ZZ6WX.js.map +0 -1
- package/dist/chunk-5O44EPXZ.js +0 -207
- package/dist/chunk-5O44EPXZ.js.map +0 -1
- package/dist/chunk-6CTFVBKU.js +0 -1
- package/dist/chunk-6CTFVBKU.js.map +0 -1
- package/dist/chunk-7F27CJZW.js +0 -1544
- package/dist/chunk-7F27CJZW.js.map +0 -1
- package/dist/chunk-A7BVFBWB.js +0 -81
- package/dist/chunk-A7BVFBWB.js.map +0 -1
- package/dist/chunk-D7RVSZAQ.js +0 -332
- package/dist/chunk-D7RVSZAQ.js.map +0 -1
- package/dist/chunk-DWTLVJAW.js +0 -42
- package/dist/chunk-DWTLVJAW.js.map +0 -1
- package/dist/chunk-FGM57QUU.js +0 -128
- package/dist/chunk-FGM57QUU.js.map +0 -1
- package/dist/chunk-FUM4OGOQ.js +0 -1027
- package/dist/chunk-FUM4OGOQ.js.map +0 -1
- package/dist/chunk-JKCF7HEA.js +0 -1
- package/dist/chunk-JKCF7HEA.js.map +0 -1
- package/dist/chunk-KTST7ORH.js +0 -53
- package/dist/chunk-KTST7ORH.js.map +0 -1
- package/dist/chunk-M6NJ73Y5.js +0 -154
- package/dist/chunk-M6NJ73Y5.js.map +0 -1
- package/dist/chunk-N7BPFK46.js +0 -1
- package/dist/chunk-N7BPFK46.js.map +0 -1
- package/dist/chunk-NX52D7NX.js +0 -135
- package/dist/chunk-NX52D7NX.js.map +0 -1
- package/dist/chunk-O34GCB47.js +0 -32
- package/dist/chunk-O34GCB47.js.map +0 -1
- package/dist/chunk-Q3ECVC4F.js +0 -811
- package/dist/chunk-Q3ECVC4F.js.map +0 -1
- package/dist/chunk-RVIUUJTP.js +0 -76
- package/dist/chunk-RVIUUJTP.js.map +0 -1
- package/dist/chunk-SXVUTSMT.js +0 -2895
- package/dist/chunk-SXVUTSMT.js.map +0 -1
- package/dist/chunk-UJSF7PSC.js +0 -5728
- package/dist/chunk-UJSF7PSC.js.map +0 -1
- package/dist/chunk-WH5BZC7W.js +0 -38
- package/dist/chunk-WH5BZC7W.js.map +0 -1
- package/dist/chunk-XX4EVWBF.js +0 -1292
- package/dist/chunk-XX4EVWBF.js.map +0 -1
- package/dist/chunk-Y2HJO2VY.js +0 -432
- package/dist/chunk-Y2HJO2VY.js.map +0 -1
- package/dist/chunk-Y63BOO6M.js +0 -11
- package/dist/chunk-Y63BOO6M.js.map +0 -1
- package/dist/coinbase-NLHJMGAP.js.map +0 -1
- package/dist/create-config-CAQcvjl6.d.ts +0 -8
- package/dist/element-2LGTYYSP.js.map +0 -1
- package/dist/foundation-BPN66ZTN.js.map +0 -1
- package/dist/get-query-client-D46hbjk6.d.ts +0 -5
- package/dist/index-MlUK9AQE.d.ts +0 -62
- package/dist/index.css.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/listTokenMetadata-DO4ChDjn.d.ts +0 -203
- package/dist/looks-rare-MZRSOPT4.js.map +0 -1
- package/dist/magic-eden-PUBL6KWW.js.map +0 -1
- package/dist/manifold-GA445YJ6.js.map +0 -1
- package/dist/marketplace.gen-DQzWciwC.d.ts +0 -1072
- package/dist/marketplaceConfig-D0MXemEl.d.ts +0 -17
- package/dist/mintify-UMC5PTKC.js.map +0 -1
- package/dist/nftx-AX3CY3IE.js.map +0 -1
- package/dist/okx-GNVLAE2R.js.map +0 -1
- package/dist/open-sea-KI43GVEB.js.map +0 -1
- package/dist/rarible-2J3MMZJ7.js.map +0 -1
- package/dist/react/_internal/api/index.js.map +0 -1
- package/dist/react/_internal/databeat/index.js.map +0 -1
- package/dist/react/_internal/index.js.map +0 -1
- package/dist/react/_internal/wagmi/index.js.map +0 -1
- package/dist/react/hooks/index.js.map +0 -1
- package/dist/react/hooks/options/index.js.map +0 -1
- package/dist/react/index.css +0 -2764
- package/dist/react/index.css.map +0 -1
- package/dist/react/index.js.map +0 -1
- package/dist/react/queries/index.js.map +0 -1
- package/dist/react/ui/components/collectible-card/index.css +0 -2764
- package/dist/react/ui/components/collectible-card/index.css.map +0 -1
- package/dist/react/ui/components/collectible-card/index.d.ts +0 -70
- package/dist/react/ui/components/collectible-card/index.js +0 -32
- package/dist/react/ui/components/collectible-card/index.js.map +0 -1
- package/dist/react/ui/components/marketplace-logos/index.js.map +0 -1
- package/dist/react/ui/icons/index.js.map +0 -1
- package/dist/react/ui/index.css +0 -2764
- package/dist/react/ui/index.css.map +0 -1
- package/dist/react/ui/index.js.map +0 -1
- package/dist/react/ui/modals/_internal/components/actionModal/index.js.map +0 -1
- package/dist/sdk-config-onSPBxJj.d.ts +0 -134
- package/dist/sequence-TGLUFEPQ.js.map +0 -1
- package/dist/services-CMSb9ipU.d.ts +0 -23
- package/dist/sudo-swap-M2O6E3TE.js.map +0 -1
- package/dist/super-rare-UU2U4LIN.js.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types-B8xzPEKX.d.ts +0 -68
- package/dist/utils/abi/index.js.map +0 -1
- package/dist/utils/abi/marketplace/index.js.map +0 -1
- package/dist/utils/abi/primary-sale/index.js.map +0 -1
- package/dist/utils/abi/token/index.js.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/x2y2-3W5BBMZC.js.map +0 -1
- package/dist/zora-6EY6FUH6.js.map +0 -1
- package/postcss.config.mjs +0 -5
- package/src/react/hooks/__tests__/__snapshots__/useRoyaltyPercentage.test.tsx.snap +0 -8
- package/src/react/hooks/useCurrencies.tsx +0 -77
- package/src/react/ui/components/collectible-card/CollectibleCard.tsx +0 -170
- package/src/react/ui/components/collectible-card/Footer.tsx +0 -157
- package/src/react/ui/components/collectible-card/__tests__/CollectibleCard.test.tsx +0 -94
- package/src/react/ui/components/collectible-card/__tests__/Footer.test.tsx +0 -136
- package/src/react/ui/components/collectible-card/__tests__/Media.test.tsx +0 -224
- package/src/react/ui/components/collectible-card/index.ts +0 -2
- package/src/react/ui/modals/BuyModal/ERC1155QuantityModal.tsx +0 -124
- package/src/react/ui/modals/BuyModal/Modal.tsx +0 -124
- package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx +0 -104
- package/src/react/ui/modals/BuyModal/hooks/useFees.ts +0 -38
- package/src/react/ui/modals/SuccessfulPurchaseModal/_store.ts +0 -72
- package/tsup.config.ts +0 -23
- /package/src/react/ui/components/{collectible-card/media → media}/utils.ts +0 -0
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
// Enhanced error types with price context and better debugging information
|
|
2
|
+
export type BuyModalError =
|
|
3
|
+
| PriceOverflowError
|
|
4
|
+
| PriceCalculationError
|
|
5
|
+
| InvalidPriceFormatError
|
|
6
|
+
| InvalidQuantityError
|
|
7
|
+
| NetworkError
|
|
8
|
+
| ContractError
|
|
9
|
+
| CheckoutError
|
|
10
|
+
| ValidationError
|
|
11
|
+
| StateError;
|
|
12
|
+
|
|
13
|
+
export interface PriceOverflowError {
|
|
14
|
+
type: 'PRICE_OVERFLOW';
|
|
15
|
+
maxSafeValue: string;
|
|
16
|
+
attemptedValue: string;
|
|
17
|
+
operation: string;
|
|
18
|
+
timestamp: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface PriceCalculationError {
|
|
22
|
+
type: 'PRICE_CALCULATION_ERROR';
|
|
23
|
+
operation: string;
|
|
24
|
+
inputs: string[];
|
|
25
|
+
originalError?: string;
|
|
26
|
+
timestamp: number;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// export interface InsufficientFundsError {
|
|
30
|
+
// type: "INSUFFICIENT_FUNDS";
|
|
31
|
+
// required: Price;
|
|
32
|
+
// available: Price;
|
|
33
|
+
// currency: string;
|
|
34
|
+
// shortfall: Price;
|
|
35
|
+
// timestamp: number;
|
|
36
|
+
// }
|
|
37
|
+
|
|
38
|
+
export interface InvalidPriceFormatError {
|
|
39
|
+
type: 'INVALID_PRICE_FORMAT';
|
|
40
|
+
providedPrice: string;
|
|
41
|
+
expectedFormat: string;
|
|
42
|
+
suggestions?: string[];
|
|
43
|
+
timestamp: number;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface InvalidQuantityError {
|
|
47
|
+
type: 'INVALID_QUANTITY';
|
|
48
|
+
provided: number;
|
|
49
|
+
min: number;
|
|
50
|
+
max: number;
|
|
51
|
+
available?: number;
|
|
52
|
+
timestamp: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface NetworkError {
|
|
56
|
+
type: 'NETWORK_ERROR';
|
|
57
|
+
message: string;
|
|
58
|
+
retryable: boolean;
|
|
59
|
+
chainId?: number;
|
|
60
|
+
endpoint?: string;
|
|
61
|
+
timestamp: number;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface ContractError {
|
|
65
|
+
type: 'CONTRACT_ERROR';
|
|
66
|
+
contractAddress: string;
|
|
67
|
+
message: string;
|
|
68
|
+
method?: string;
|
|
69
|
+
chainId?: number;
|
|
70
|
+
blockNumber?: number;
|
|
71
|
+
timestamp: number;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface CheckoutError {
|
|
75
|
+
type: 'CHECKOUT_ERROR';
|
|
76
|
+
provider: string;
|
|
77
|
+
message: string;
|
|
78
|
+
code?: string;
|
|
79
|
+
retryable: boolean;
|
|
80
|
+
timestamp: number;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface ValidationError {
|
|
84
|
+
type: 'VALIDATION_ERROR';
|
|
85
|
+
field: string;
|
|
86
|
+
message: string;
|
|
87
|
+
value?: unknown;
|
|
88
|
+
constraints?: Record<string, unknown>;
|
|
89
|
+
timestamp: number;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface StateError {
|
|
93
|
+
type: 'STATE_ERROR';
|
|
94
|
+
currentState: string;
|
|
95
|
+
attemptedAction: string;
|
|
96
|
+
message: string;
|
|
97
|
+
timestamp: number;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// biome-ignore lint/complexity/noStaticOnlyClass:
|
|
101
|
+
export class BuyModalErrorFactory {
|
|
102
|
+
static priceOverflow(
|
|
103
|
+
maxSafeValue: string,
|
|
104
|
+
attemptedValue: string,
|
|
105
|
+
operation: string,
|
|
106
|
+
): PriceOverflowError {
|
|
107
|
+
return {
|
|
108
|
+
type: 'PRICE_OVERFLOW',
|
|
109
|
+
maxSafeValue,
|
|
110
|
+
attemptedValue,
|
|
111
|
+
operation,
|
|
112
|
+
timestamp: Date.now(),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
static priceCalculation(
|
|
117
|
+
operation: string,
|
|
118
|
+
inputs: string[],
|
|
119
|
+
originalError?: string,
|
|
120
|
+
): PriceCalculationError {
|
|
121
|
+
return {
|
|
122
|
+
type: 'PRICE_CALCULATION_ERROR',
|
|
123
|
+
operation,
|
|
124
|
+
inputs,
|
|
125
|
+
originalError,
|
|
126
|
+
timestamp: Date.now(),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// static insufficientFunds(
|
|
131
|
+
// required: Price,
|
|
132
|
+
// available: Price,
|
|
133
|
+
// currency: string,
|
|
134
|
+
// shortfall: Price
|
|
135
|
+
// ): InsufficientFundsError {
|
|
136
|
+
// return {
|
|
137
|
+
// type: "INSUFFICIENT_FUNDS",
|
|
138
|
+
// required,
|
|
139
|
+
// available,
|
|
140
|
+
// currency,
|
|
141
|
+
// shortfall,
|
|
142
|
+
// timestamp: Date.now(),
|
|
143
|
+
// };
|
|
144
|
+
// }
|
|
145
|
+
|
|
146
|
+
static invalidPriceFormat(
|
|
147
|
+
providedPrice: string,
|
|
148
|
+
expectedFormat: string,
|
|
149
|
+
suggestions?: string[],
|
|
150
|
+
): InvalidPriceFormatError {
|
|
151
|
+
return {
|
|
152
|
+
type: 'INVALID_PRICE_FORMAT',
|
|
153
|
+
providedPrice,
|
|
154
|
+
expectedFormat,
|
|
155
|
+
suggestions,
|
|
156
|
+
timestamp: Date.now(),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
static invalidQuantity(
|
|
161
|
+
provided: number,
|
|
162
|
+
min: number,
|
|
163
|
+
max: number,
|
|
164
|
+
available?: number,
|
|
165
|
+
): InvalidQuantityError {
|
|
166
|
+
return {
|
|
167
|
+
type: 'INVALID_QUANTITY',
|
|
168
|
+
provided,
|
|
169
|
+
min,
|
|
170
|
+
max,
|
|
171
|
+
available,
|
|
172
|
+
timestamp: Date.now(),
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
static networkError(
|
|
177
|
+
message: string,
|
|
178
|
+
retryable: boolean,
|
|
179
|
+
chainId?: number,
|
|
180
|
+
endpoint?: string,
|
|
181
|
+
): NetworkError {
|
|
182
|
+
return {
|
|
183
|
+
type: 'NETWORK_ERROR',
|
|
184
|
+
message,
|
|
185
|
+
retryable,
|
|
186
|
+
chainId,
|
|
187
|
+
endpoint,
|
|
188
|
+
timestamp: Date.now(),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
static contractError(
|
|
193
|
+
contractAddress: string,
|
|
194
|
+
message: string,
|
|
195
|
+
method?: string,
|
|
196
|
+
chainId?: number,
|
|
197
|
+
blockNumber?: number,
|
|
198
|
+
): ContractError {
|
|
199
|
+
return {
|
|
200
|
+
type: 'CONTRACT_ERROR',
|
|
201
|
+
contractAddress,
|
|
202
|
+
message,
|
|
203
|
+
method,
|
|
204
|
+
chainId,
|
|
205
|
+
blockNumber,
|
|
206
|
+
timestamp: Date.now(),
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
static checkoutError(
|
|
211
|
+
provider: string,
|
|
212
|
+
message: string,
|
|
213
|
+
code?: string,
|
|
214
|
+
retryable = false,
|
|
215
|
+
): CheckoutError {
|
|
216
|
+
return {
|
|
217
|
+
type: 'CHECKOUT_ERROR',
|
|
218
|
+
provider,
|
|
219
|
+
message,
|
|
220
|
+
code,
|
|
221
|
+
retryable,
|
|
222
|
+
timestamp: Date.now(),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
static validationError(
|
|
227
|
+
field: string,
|
|
228
|
+
message: string,
|
|
229
|
+
value?: unknown,
|
|
230
|
+
constraints?: Record<string, unknown>,
|
|
231
|
+
): ValidationError {
|
|
232
|
+
return {
|
|
233
|
+
type: 'VALIDATION_ERROR',
|
|
234
|
+
field,
|
|
235
|
+
message,
|
|
236
|
+
value,
|
|
237
|
+
constraints,
|
|
238
|
+
timestamp: Date.now(),
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
static stateError(
|
|
243
|
+
currentState: string,
|
|
244
|
+
attemptedAction: string,
|
|
245
|
+
message: string,
|
|
246
|
+
): StateError {
|
|
247
|
+
return {
|
|
248
|
+
type: 'STATE_ERROR',
|
|
249
|
+
currentState,
|
|
250
|
+
attemptedAction,
|
|
251
|
+
message,
|
|
252
|
+
timestamp: Date.now(),
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// Error message formatters for user-friendly display
|
|
258
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: Formatter provides good namespacing for error formatting
|
|
259
|
+
export class BuyModalErrorFormatter {
|
|
260
|
+
static format(error: BuyModalError): string {
|
|
261
|
+
switch (error.type) {
|
|
262
|
+
case 'PRICE_OVERFLOW':
|
|
263
|
+
return 'Price calculation exceeded safe limits. Please reduce quantity or contact support.';
|
|
264
|
+
|
|
265
|
+
case 'PRICE_CALCULATION_ERROR':
|
|
266
|
+
return 'Price calculation failed. Please refresh and try again.';
|
|
267
|
+
|
|
268
|
+
// case "INSUFFICIENT_FUNDS":
|
|
269
|
+
// return `Insufficient funds. You need ${error.currency} but only have available.`;
|
|
270
|
+
|
|
271
|
+
case 'INVALID_PRICE_FORMAT':
|
|
272
|
+
return `Invalid price format. Expected: ${error.expectedFormat}`;
|
|
273
|
+
|
|
274
|
+
case 'INVALID_QUANTITY':
|
|
275
|
+
return `Invalid quantity. Must be between ${error.min} and ${error.max}.`;
|
|
276
|
+
|
|
277
|
+
case 'NETWORK_ERROR':
|
|
278
|
+
return error.retryable
|
|
279
|
+
? `Network error. ${error.message} Please try again.`
|
|
280
|
+
: `Network unavailable. ${error.message}`;
|
|
281
|
+
|
|
282
|
+
case 'CONTRACT_ERROR':
|
|
283
|
+
return `Blockchain error at ${error.contractAddress}. Please refresh and try again.`;
|
|
284
|
+
|
|
285
|
+
case 'CHECKOUT_ERROR':
|
|
286
|
+
return error.retryable
|
|
287
|
+
? `Checkout failed with ${error.provider}. Please try again.`
|
|
288
|
+
: `Checkout unavailable with ${error.provider}.`;
|
|
289
|
+
|
|
290
|
+
case 'VALIDATION_ERROR':
|
|
291
|
+
return `${error.field}: ${error.message}`;
|
|
292
|
+
|
|
293
|
+
case 'STATE_ERROR':
|
|
294
|
+
return `Invalid operation: ${error.message}`;
|
|
295
|
+
|
|
296
|
+
default:
|
|
297
|
+
return 'An unexpected error occurred. Please try again.';
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
static isRetryable(error: BuyModalError): boolean {
|
|
302
|
+
switch (error.type) {
|
|
303
|
+
case 'NETWORK_ERROR':
|
|
304
|
+
case 'CHECKOUT_ERROR':
|
|
305
|
+
return error.retryable;
|
|
306
|
+
|
|
307
|
+
case 'PRICE_CALCULATION_ERROR':
|
|
308
|
+
case 'CONTRACT_ERROR':
|
|
309
|
+
return true;
|
|
310
|
+
|
|
311
|
+
default:
|
|
312
|
+
return false;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
static getRecoveryAction(error: BuyModalError): string {
|
|
317
|
+
switch (error.type) {
|
|
318
|
+
// case "INSUFFICIENT_FUNDS":
|
|
319
|
+
// return "Add funds to your wallet";
|
|
320
|
+
|
|
321
|
+
case 'INVALID_QUANTITY':
|
|
322
|
+
return 'Adjust quantity';
|
|
323
|
+
|
|
324
|
+
case 'INVALID_PRICE_FORMAT':
|
|
325
|
+
return 'Enter valid price';
|
|
326
|
+
|
|
327
|
+
case 'NETWORK_ERROR':
|
|
328
|
+
case 'CONTRACT_ERROR':
|
|
329
|
+
return 'Retry transaction';
|
|
330
|
+
|
|
331
|
+
case 'CHECKOUT_ERROR':
|
|
332
|
+
return 'Try different payment method';
|
|
333
|
+
|
|
334
|
+
default:
|
|
335
|
+
return 'Refresh and try again';
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Transform class-based errors (BaseError/TransactionError) to user-friendly BuyModalError
|
|
341
|
+
* This bridges the internal error system with the modal error system
|
|
342
|
+
*/
|
|
343
|
+
static fromTransactionError(error: Error): BuyModalError {
|
|
344
|
+
// Import transaction errors
|
|
345
|
+
const errorName = error.name || error.constructor.name;
|
|
346
|
+
|
|
347
|
+
switch (errorName) {
|
|
348
|
+
case 'PriceCalculationError':
|
|
349
|
+
return BuyModalErrorFactory.priceCalculation(
|
|
350
|
+
'price calculation',
|
|
351
|
+
[],
|
|
352
|
+
error.message,
|
|
353
|
+
);
|
|
354
|
+
|
|
355
|
+
case 'SalesContractError': {
|
|
356
|
+
// Extract contract address from error message if available
|
|
357
|
+
const addressMatch = error.message.match(/0x[a-fA-F0-9]{40}/);
|
|
358
|
+
return BuyModalErrorFactory.contractError(
|
|
359
|
+
addressMatch?.[0] || 'unknown',
|
|
360
|
+
error.message,
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
case 'QuantityValidationError': {
|
|
365
|
+
// Parse quantity from error message
|
|
366
|
+
const quantityMatch = error.message.match(/Invalid quantity: (\d+)/);
|
|
367
|
+
const availableMatch = error.message.match(
|
|
368
|
+
/available supply \((\d+)\)/,
|
|
369
|
+
);
|
|
370
|
+
return BuyModalErrorFactory.invalidQuantity(
|
|
371
|
+
Number(quantityMatch?.[1] || 0),
|
|
372
|
+
0,
|
|
373
|
+
Number(availableMatch?.[1] || 0),
|
|
374
|
+
);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
case 'UserRejectedRequestError':
|
|
378
|
+
return BuyModalErrorFactory.checkoutError(
|
|
379
|
+
'user',
|
|
380
|
+
'User cancelled the transaction',
|
|
381
|
+
'USER_REJECTED',
|
|
382
|
+
false,
|
|
383
|
+
);
|
|
384
|
+
|
|
385
|
+
case 'NoWalletConnectedError':
|
|
386
|
+
return BuyModalErrorFactory.stateError(
|
|
387
|
+
'disconnected',
|
|
388
|
+
'purchase',
|
|
389
|
+
'Please connect your wallet to continue',
|
|
390
|
+
);
|
|
391
|
+
|
|
392
|
+
case 'ChainSwitchError':
|
|
393
|
+
case 'NetworkError':
|
|
394
|
+
return BuyModalErrorFactory.networkError(
|
|
395
|
+
error.message,
|
|
396
|
+
true, // retryable
|
|
397
|
+
);
|
|
398
|
+
|
|
399
|
+
case 'ShopDataValidationError':
|
|
400
|
+
return BuyModalErrorFactory.validationError(
|
|
401
|
+
'shop-config',
|
|
402
|
+
error.message,
|
|
403
|
+
);
|
|
404
|
+
|
|
405
|
+
default:
|
|
406
|
+
// Generic error for unknown types
|
|
407
|
+
return BuyModalErrorFactory.stateError(
|
|
408
|
+
'unknown',
|
|
409
|
+
'operation',
|
|
410
|
+
error.message || 'An unexpected error occurred',
|
|
411
|
+
);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Enhanced error wrapper that catches and transforms errors consistently
|
|
417
|
+
*/
|
|
418
|
+
static async withErrorHandling<T>(
|
|
419
|
+
operation: () => Promise<T>,
|
|
420
|
+
_context: string, // Prefixed with underscore to indicate intentionally unused
|
|
421
|
+
): Promise<T> {
|
|
422
|
+
try {
|
|
423
|
+
return await operation();
|
|
424
|
+
} catch (error) {
|
|
425
|
+
// Transform the error to user-friendly format
|
|
426
|
+
const buyModalError = BuyModalErrorFormatter.fromTransactionError(
|
|
427
|
+
error as Error,
|
|
428
|
+
);
|
|
429
|
+
|
|
430
|
+
// Re-throw as the original error for error boundaries to catch
|
|
431
|
+
// but attach the transformed error for UI consumption
|
|
432
|
+
const enhancedError = error as Error & { buyModalError?: BuyModalError };
|
|
433
|
+
enhancedError.buyModalError = buyModalError;
|
|
434
|
+
|
|
435
|
+
throw enhancedError;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
package/src/types/index.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
export * from './api-types';
|
|
2
2
|
export * from './sdk-config';
|
|
3
3
|
export * from './types';
|
|
4
|
-
export type * from '../react/_internal/api/builder.gen';
|
|
5
4
|
export type * from './../react/queries/marketplaceConfig';
|
|
6
5
|
export {
|
|
7
|
-
MarketplaceWallet,
|
|
6
|
+
type MarketplaceWallet,
|
|
8
7
|
FilterCondition,
|
|
9
|
-
MarketplaceType,
|
|
10
8
|
} from '../react/_internal/api/builder.gen';
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
FilterCondition,
|
|
3
|
+
MarketplaceSettings,
|
|
4
|
+
MarketplaceWalletType,
|
|
5
|
+
OpenIdProvider,
|
|
6
|
+
} from '../react/_internal/api/builder.gen';
|
|
7
|
+
import type { ContractType, OrderbookKind } from './api-types';
|
|
8
|
+
import type { MarketplaceType } from './types';
|
|
9
|
+
|
|
10
|
+
export interface MarketplaceConfig {
|
|
11
|
+
projectId: number;
|
|
12
|
+
settings: MarketplaceSettings;
|
|
13
|
+
market: MarketPage;
|
|
14
|
+
shop: ShopPage;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface MarketplacePage {
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
bannerUrl: string;
|
|
20
|
+
ogImage?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface MarketPage extends MarketplacePage {
|
|
24
|
+
collections: MarketCollection[];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface ShopPage extends MarketplacePage {
|
|
28
|
+
collections: ShopCollection[];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface MarketplaceSocials {
|
|
32
|
+
twitter: string;
|
|
33
|
+
discord: string;
|
|
34
|
+
website: string;
|
|
35
|
+
tiktok: string;
|
|
36
|
+
instagram: string;
|
|
37
|
+
youtube: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface MarketplaceWalletEcosystem {
|
|
41
|
+
walletUrl: string;
|
|
42
|
+
walletAppName: string;
|
|
43
|
+
logoLightUrl?: string;
|
|
44
|
+
logoDarkUrl?: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface MarketplaceWalletEmbedded {
|
|
48
|
+
tenantKey: string;
|
|
49
|
+
emailEnabled: boolean;
|
|
50
|
+
providers: Array<OpenIdProvider>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
interface MarketplaceCollection {
|
|
54
|
+
chainId: number;
|
|
55
|
+
bannerUrl: string;
|
|
56
|
+
itemsAddress: string;
|
|
57
|
+
filterSettings?: CollectionFilterSettings;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface MarketCollection extends MarketplaceCollection {
|
|
61
|
+
marketplaceType: MarketplaceType;
|
|
62
|
+
contractType: ContractType; //TODO: This should be added to the shop collection too
|
|
63
|
+
feePercentage: number;
|
|
64
|
+
destinationMarketplace: OrderbookKind;
|
|
65
|
+
currencyOptions: Array<string>;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface ShopCollection extends MarketplaceCollection {
|
|
69
|
+
marketplaceType: MarketplaceType;
|
|
70
|
+
saleAddress: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface EcosystemWalletSettings {
|
|
74
|
+
walletUrl: string;
|
|
75
|
+
walletAppName: string;
|
|
76
|
+
logoLightUrl?: string;
|
|
77
|
+
logoDarkUrl?: string;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface MarketplaceWalletOptions {
|
|
81
|
+
walletType: MarketplaceWalletType;
|
|
82
|
+
oidcIssuers: { [key: string]: string };
|
|
83
|
+
connectors: Array<string>;
|
|
84
|
+
includeEIP6963Wallets: boolean;
|
|
85
|
+
ecosystem?: EcosystemWalletSettings;
|
|
86
|
+
waas?: MarketplaceWalletWaasSettings;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface MarketplaceWalletWaasSettings {
|
|
90
|
+
tenantKey: string;
|
|
91
|
+
emailEnabled: boolean;
|
|
92
|
+
providers: Array<OpenIdProvider>;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface MetadataFilterRule {
|
|
96
|
+
key: string;
|
|
97
|
+
condition: FilterCondition;
|
|
98
|
+
value?: string;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface CollectionFilterSettings {
|
|
102
|
+
filterOrder: Array<string>;
|
|
103
|
+
exclusions: Array<MetadataFilterRule>;
|
|
104
|
+
}
|
package/src/types/sdk-config.ts
CHANGED
|
@@ -1,21 +1,31 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LookupMarketplaceReturn } from '../react/_internal/api/builder.gen';
|
|
2
|
+
import type { MarketplaceConfig } from './types';
|
|
2
3
|
|
|
3
|
-
export type Env = 'development' | '
|
|
4
|
+
export type Env = 'development' | 'production' | 'next';
|
|
5
|
+
|
|
6
|
+
export type ApiConfig = {
|
|
7
|
+
env: Env;
|
|
8
|
+
accessKey?: string;
|
|
9
|
+
};
|
|
4
10
|
|
|
5
11
|
export type SdkConfig = {
|
|
6
12
|
projectAccessKey: string;
|
|
7
13
|
projectId: string;
|
|
8
14
|
walletConnectProjectId?: string;
|
|
9
15
|
_internal?: {
|
|
10
|
-
prefetchedMarketplaceSettings?:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
prefetchedMarketplaceSettings?: LookupMarketplaceReturn;
|
|
17
|
+
overrides?: {
|
|
18
|
+
marketplaceConfig?: Partial<MarketplaceConfig>;
|
|
19
|
+
|
|
20
|
+
api?: {
|
|
21
|
+
builder?: ApiConfig;
|
|
22
|
+
marketplace?: ApiConfig;
|
|
23
|
+
nodeGateway?: ApiConfig;
|
|
24
|
+
metadata?: ApiConfig;
|
|
25
|
+
indexer?: ApiConfig;
|
|
26
|
+
sequenceApi?: ApiConfig;
|
|
27
|
+
sequenceWallet?: ApiConfig;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
20
30
|
};
|
|
21
31
|
};
|
package/src/types/types.ts
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
import type { Currency } from './api-types';
|
|
2
|
+
import type { MarketplaceConfig } from './new-marketplace-types';
|
|
3
|
+
export * from './new-marketplace-types';
|
|
2
4
|
|
|
3
5
|
export type Price = {
|
|
4
6
|
amountRaw: string;
|
|
5
7
|
currency: Currency;
|
|
6
8
|
};
|
|
7
9
|
|
|
10
|
+
export type MarketplaceType = 'market' | 'shop';
|
|
11
|
+
|
|
12
|
+
export enum CollectibleCardAction {
|
|
13
|
+
BUY = 'Buy',
|
|
14
|
+
SELL = 'Sell',
|
|
15
|
+
LIST = 'Create listing',
|
|
16
|
+
OFFER = 'Make an offer',
|
|
17
|
+
TRANSFER = 'Transfer',
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type MarketCollection =
|
|
21
|
+
MarketplaceConfig['market']['collections'][number];
|
|
22
|
+
|
|
23
|
+
export type ShopCollection = MarketplaceConfig['shop']['collections'][number];
|
|
24
|
+
|
|
8
25
|
// export type Order = Omit<APIOrder, 'priceAmount' | 'priceAmountNet'> & {
|
|
9
26
|
// priceAmount: bigint;
|
|
10
27
|
// priceAmountNet: bigint;
|
|
@@ -371,6 +371,38 @@ export class WalletInstanceNotFoundError extends TransactionError {
|
|
|
371
371
|
}
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
+
export class SalesContractError extends TransactionError {
|
|
375
|
+
override name = 'SalesContractError';
|
|
376
|
+
constructor(contractAddress: string, method?: string, cause?: Error) {
|
|
377
|
+
super(`Sales contract operation failed: ${contractAddress}`, {
|
|
378
|
+
details: `Failed to interact with sales contract${
|
|
379
|
+
method ? ` on method: ${method}` : ''
|
|
380
|
+
}. ${cause?.message || 'Contract may be paused or misconfigured.'}`,
|
|
381
|
+
cause,
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
export class QuantityValidationError extends TransactionError {
|
|
387
|
+
override name = 'QuantityValidationError';
|
|
388
|
+
constructor(provided: number, available: number, tokenId?: string) {
|
|
389
|
+
super(`Invalid quantity: ${provided}`, {
|
|
390
|
+
details: `Requested quantity (${provided}) exceeds available supply (${available})${
|
|
391
|
+
tokenId ? ` for token ${tokenId}` : ''
|
|
392
|
+
}.`,
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
export class ShopDataValidationError extends TransactionError {
|
|
398
|
+
override name = 'ShopDataValidationError';
|
|
399
|
+
constructor(missingField: string) {
|
|
400
|
+
super(`Invalid shop configuration: missing ${missingField}`, {
|
|
401
|
+
details: `The shop is missing required field: ${missingField}. Check your marketplace configuration.`,
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
374
406
|
export type TransactionErrorTypes =
|
|
375
407
|
| ChainIdUnavailableError
|
|
376
408
|
| TransactionReceiptError
|
|
@@ -408,4 +440,7 @@ export type TransactionErrorTypes =
|
|
|
408
440
|
| TransactionExecutionError
|
|
409
441
|
| NoWalletConnectedError
|
|
410
442
|
| TransactionError
|
|
411
|
-
| WalletInstanceNotFoundError
|
|
443
|
+
| WalletInstanceNotFoundError
|
|
444
|
+
| SalesContractError
|
|
445
|
+
| QuantityValidationError
|
|
446
|
+
| ShopDataValidationError;
|
package/tsconfig.json
CHANGED