thirdweb 5.69.1-nightly-f368793375d099eec53569330af7a083e558e483-20241120000334 → 5.70.0-nightly-ecaa304a812188da3c81888bb52ca6064093c139-20241121000332
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/dist/cjs/client/client.js +1 -0
- package/dist/cjs/client/client.js.map +1 -1
- package/dist/cjs/exports/react.js +32 -3
- package/dist/cjs/exports/react.js.map +1 -1
- package/dist/cjs/extensions/erc721/lazyMinting/read/getBatchesToReveal.js +1 -1
- package/dist/cjs/extensions/modules/common/checkModulesCompatibility.js +5 -0
- package/dist/cjs/extensions/modules/common/checkModulesCompatibility.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-pack.js +1 -0
- package/dist/cjs/extensions/prebuilts/deploy-pack.js.map +1 -1
- package/dist/cjs/extensions/thirdweb/write/publish.js +4 -0
- package/dist/cjs/extensions/thirdweb/write/publish.js.map +1 -1
- package/dist/cjs/react/core/hooks/others/useChainQuery.js +3 -3
- package/dist/cjs/react/core/hooks/rpc/useBlockNumber.js +1 -1
- package/dist/cjs/react/core/hooks/wallets/useCapabilities.js +1 -1
- package/dist/cjs/react/core/hooks/wallets/useSendCalls.js +3 -3
- package/dist/cjs/react/core/providers/connection-manager.js +3 -0
- package/dist/cjs/react/core/providers/connection-manager.js.map +1 -1
- package/dist/cjs/react/core/utils/wallet.js +2 -1
- package/dist/cjs/react/core/utils/wallet.js.map +1 -1
- package/dist/cjs/react/core/utils/walletIcon.js +2 -0
- package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
- package/dist/cjs/react/native/hooks/wallets/useProfiles.js +1 -1
- package/dist/cjs/react/native/providers/thirdweb-provider.js +1 -0
- package/dist/cjs/react/native/providers/thirdweb-provider.js.map +1 -1
- package/dist/cjs/react/native/ui/AutoConnect/AutoConnect.js +1 -0
- package/dist/cjs/react/native/ui/AutoConnect/AutoConnect.js.map +1 -1
- package/dist/cjs/react/native/ui/connect/ConnectModal.js +1 -0
- package/dist/cjs/react/native/ui/connect/ConnectModal.js.map +1 -1
- package/dist/cjs/react/native/ui/transaction/TransactionButton.js +1 -0
- package/dist/cjs/react/native/ui/transaction/TransactionButton.js.map +1 -1
- package/dist/cjs/react/web/hooks/wallets/useProfiles.js +1 -1
- package/dist/cjs/react/web/providers/thirdweb-provider.js +1 -0
- package/dist/cjs/react/web/providers/thirdweb-provider.js.map +1 -1
- package/dist/cjs/react/web/ui/AutoConnect/AutoConnect.js +1 -0
- package/dist/cjs/react/web/ui/AutoConnect/AutoConnect.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/Blobbie.js +19 -4
- package/dist/cjs/react/web/ui/ConnectWallet/Blobbie.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +21 -19
- package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/Details.js +18 -13
- package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +1 -0
- package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
- package/dist/cjs/react/web/ui/PayEmbed.js +1 -0
- package/dist/cjs/react/web/ui/PayEmbed.js.map +1 -1
- package/dist/cjs/react/web/ui/SiteEmbed.js +3 -2
- package/dist/cjs/react/web/ui/SiteEmbed.js.map +1 -1
- package/dist/cjs/react/web/ui/SiteLink.js +2 -1
- package/dist/cjs/react/web/ui/SiteLink.js.map +1 -1
- package/dist/cjs/react/web/ui/TransactionButton/index.js +1 -0
- package/dist/cjs/react/web/ui/TransactionButton/index.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/address.js +49 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/address.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js +144 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/balance.js +122 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/balance.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/blobbie.js +16 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/blobbie.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/name.js +106 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/name.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/provider.js +43 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/provider.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/description.js +69 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/description.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/hooks.js +45 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/hooks.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/media.js +82 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/media.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/name.js +68 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/name.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/provider.js +55 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/provider.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Token/icon.js +113 -0
- package/dist/cjs/react/web/ui/prebuilt/Token/icon.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Token/name.js +137 -0
- package/dist/cjs/react/web/ui/prebuilt/Token/name.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Token/provider.js +54 -0
- package/dist/cjs/react/web/ui/prebuilt/Token/provider.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Token/symbol.js +134 -0
- package/dist/cjs/react/web/ui/prebuilt/Token/symbol.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.js +1 -0
- package/dist/cjs/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js +1 -0
- package/dist/cjs/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +1 -0
- package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -1
- package/dist/cjs/storage/unpin.js +1 -1
- package/dist/cjs/storage/upload.js +1 -0
- package/dist/cjs/storage/upload.js.map +1 -1
- package/dist/cjs/transaction/actions/to-serializable-transaction.js +1 -1
- package/dist/cjs/transaction/actions/zksync/send-eip712-transaction.js +5 -0
- package/dist/cjs/transaction/actions/zksync/send-eip712-transaction.js.map +1 -1
- package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js +5 -0
- package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js.map +1 -1
- package/dist/cjs/utils/config.js +9 -0
- package/dist/cjs/utils/config.js.map +1 -1
- package/dist/cjs/utils/json.js +7 -4
- package/dist/cjs/utils/json.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/eip5792/get-calls-status.js +1 -1
- package/dist/cjs/wallets/eip5792/get-capabilities.js +1 -1
- package/dist/cjs/wallets/eip5792/send-calls.js +2 -2
- package/dist/cjs/wallets/eip5792/wait-for-bundle.js +1 -1
- package/dist/cjs/wallets/in-app/core/users/getUser.js +1 -1
- package/dist/cjs/wallets/smart/smart-wallet.js +1 -0
- package/dist/cjs/wallets/smart/smart-wallet.js.map +1 -1
- package/dist/esm/client/client.js +1 -0
- package/dist/esm/client/client.js.map +1 -1
- package/dist/esm/exports/react.js +17 -1
- package/dist/esm/exports/react.js.map +1 -1
- package/dist/esm/extensions/erc721/lazyMinting/read/getBatchesToReveal.js +1 -1
- package/dist/esm/extensions/modules/common/checkModulesCompatibility.js +5 -0
- package/dist/esm/extensions/modules/common/checkModulesCompatibility.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-pack.js +1 -0
- package/dist/esm/extensions/prebuilts/deploy-pack.js.map +1 -1
- package/dist/esm/extensions/thirdweb/write/publish.js +4 -0
- package/dist/esm/extensions/thirdweb/write/publish.js.map +1 -1
- package/dist/esm/react/core/hooks/others/useChainQuery.js +3 -3
- package/dist/esm/react/core/hooks/rpc/useBlockNumber.js +1 -1
- package/dist/esm/react/core/hooks/wallets/useCapabilities.js +1 -1
- package/dist/esm/react/core/hooks/wallets/useSendCalls.js +3 -3
- package/dist/esm/react/core/providers/connection-manager.js +3 -0
- package/dist/esm/react/core/providers/connection-manager.js.map +1 -1
- package/dist/esm/react/core/utils/wallet.js +2 -1
- package/dist/esm/react/core/utils/wallet.js.map +1 -1
- package/dist/esm/react/core/utils/walletIcon.js +2 -0
- package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
- package/dist/esm/react/native/hooks/wallets/useProfiles.js +1 -1
- package/dist/esm/react/native/providers/thirdweb-provider.js +1 -0
- package/dist/esm/react/native/providers/thirdweb-provider.js.map +1 -1
- package/dist/esm/react/native/ui/AutoConnect/AutoConnect.js +1 -0
- package/dist/esm/react/native/ui/AutoConnect/AutoConnect.js.map +1 -1
- package/dist/esm/react/native/ui/connect/ConnectModal.js +1 -0
- package/dist/esm/react/native/ui/connect/ConnectModal.js.map +1 -1
- package/dist/esm/react/native/ui/transaction/TransactionButton.js +1 -0
- package/dist/esm/react/native/ui/transaction/TransactionButton.js.map +1 -1
- package/dist/esm/react/web/hooks/wallets/useProfiles.js +1 -1
- package/dist/esm/react/web/providers/thirdweb-provider.js +1 -0
- package/dist/esm/react/web/providers/thirdweb-provider.js.map +1 -1
- package/dist/esm/react/web/ui/AutoConnect/AutoConnect.js +1 -0
- package/dist/esm/react/web/ui/AutoConnect/AutoConnect.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/Blobbie.js +19 -4
- package/dist/esm/react/web/ui/ConnectWallet/Blobbie.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +21 -19
- package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/Details.js +19 -14
- package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +1 -0
- package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
- package/dist/esm/react/web/ui/PayEmbed.js +1 -0
- package/dist/esm/react/web/ui/PayEmbed.js.map +1 -1
- package/dist/esm/react/web/ui/SiteEmbed.js +3 -2
- package/dist/esm/react/web/ui/SiteEmbed.js.map +1 -1
- package/dist/esm/react/web/ui/SiteLink.js +2 -1
- package/dist/esm/react/web/ui/SiteLink.js.map +1 -1
- package/dist/esm/react/web/ui/TransactionButton/index.js +1 -0
- package/dist/esm/react/web/ui/TransactionButton/index.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/address.js +46 -0
- package/dist/esm/react/web/ui/prebuilt/Account/address.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Account/avatar.js +141 -0
- package/dist/esm/react/web/ui/prebuilt/Account/avatar.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Account/balance.js +119 -0
- package/dist/esm/react/web/ui/prebuilt/Account/balance.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Account/blobbie.js +13 -0
- package/dist/esm/react/web/ui/prebuilt/Account/blobbie.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Account/name.js +103 -0
- package/dist/esm/react/web/ui/prebuilt/Account/name.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Account/provider.js +39 -0
- package/dist/esm/react/web/ui/prebuilt/Account/provider.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/description.js +66 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/description.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/hooks.js +41 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/hooks.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/media.js +79 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/media.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/name.js +65 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/name.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/provider.js +50 -0
- package/dist/esm/react/web/ui/prebuilt/NFT/provider.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Token/icon.js +110 -0
- package/dist/esm/react/web/ui/prebuilt/Token/icon.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Token/name.js +134 -0
- package/dist/esm/react/web/ui/prebuilt/Token/name.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Token/provider.js +50 -0
- package/dist/esm/react/web/ui/prebuilt/Token/provider.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Token/symbol.js +131 -0
- package/dist/esm/react/web/ui/prebuilt/Token/symbol.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.js +1 -0
- package/dist/esm/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js +1 -0
- package/dist/esm/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +1 -0
- package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -1
- package/dist/esm/storage/unpin.js +1 -1
- package/dist/esm/storage/upload.js +1 -0
- package/dist/esm/storage/upload.js.map +1 -1
- package/dist/esm/transaction/actions/to-serializable-transaction.js +1 -1
- package/dist/esm/transaction/actions/zksync/send-eip712-transaction.js +5 -0
- package/dist/esm/transaction/actions/zksync/send-eip712-transaction.js.map +1 -1
- package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js +5 -0
- package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js.map +1 -1
- package/dist/esm/utils/config.js +9 -0
- package/dist/esm/utils/config.js.map +1 -1
- package/dist/esm/utils/json.js +6 -2
- package/dist/esm/utils/json.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/eip5792/get-calls-status.js +1 -1
- package/dist/esm/wallets/eip5792/get-capabilities.js +1 -1
- package/dist/esm/wallets/eip5792/send-calls.js +2 -2
- package/dist/esm/wallets/eip5792/wait-for-bundle.js +1 -1
- package/dist/esm/wallets/in-app/core/users/getUser.js +1 -1
- package/dist/esm/wallets/smart/smart-wallet.js +1 -0
- package/dist/esm/wallets/smart/smart-wallet.js.map +1 -1
- package/dist/types/client/client.d.ts +1 -0
- package/dist/types/client/client.d.ts.map +1 -1
- package/dist/types/exports/react.d.ts +14 -1
- package/dist/types/exports/react.d.ts.map +1 -1
- package/dist/types/extensions/erc721/lazyMinting/read/getBatchesToReveal.d.ts +1 -1
- package/dist/types/extensions/modules/common/checkModulesCompatibility.d.ts +5 -0
- package/dist/types/extensions/modules/common/checkModulesCompatibility.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-pack.d.ts +1 -0
- package/dist/types/extensions/prebuilts/deploy-pack.d.ts.map +1 -1
- package/dist/types/extensions/thirdweb/write/publish.d.ts +4 -0
- package/dist/types/extensions/thirdweb/write/publish.d.ts.map +1 -1
- package/dist/types/react/core/hooks/others/useChainQuery.d.ts +3 -3
- package/dist/types/react/core/hooks/rpc/useBlockNumber.d.ts +1 -1
- package/dist/types/react/core/hooks/wallets/useCapabilities.d.ts +1 -1
- package/dist/types/react/core/hooks/wallets/useSendCalls.d.ts +3 -3
- package/dist/types/react/core/providers/connection-manager.d.ts +3 -0
- package/dist/types/react/core/providers/connection-manager.d.ts.map +1 -1
- package/dist/types/react/core/utils/wallet.d.ts +2 -1
- package/dist/types/react/core/utils/wallet.d.ts.map +1 -1
- package/dist/types/react/core/utils/walletIcon.d.ts +2 -0
- package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
- package/dist/types/react/native/hooks/wallets/useProfiles.d.ts +1 -1
- package/dist/types/react/native/providers/thirdweb-provider.d.ts +1 -0
- package/dist/types/react/native/providers/thirdweb-provider.d.ts.map +1 -1
- package/dist/types/react/native/ui/AutoConnect/AutoConnect.d.ts +1 -0
- package/dist/types/react/native/ui/AutoConnect/AutoConnect.d.ts.map +1 -1
- package/dist/types/react/native/ui/connect/ConnectModal.d.ts +1 -0
- package/dist/types/react/native/ui/connect/ConnectModal.d.ts.map +1 -1
- package/dist/types/react/native/ui/transaction/TransactionButton.d.ts +1 -0
- package/dist/types/react/native/ui/transaction/TransactionButton.d.ts.map +1 -1
- package/dist/types/react/web/hooks/wallets/useProfiles.d.ts +1 -1
- package/dist/types/react/web/providers/thirdweb-provider.d.ts +1 -0
- package/dist/types/react/web/providers/thirdweb-provider.d.ts.map +1 -1
- package/dist/types/react/web/ui/AutoConnect/AutoConnect.d.ts +1 -0
- package/dist/types/react/web/ui/AutoConnect/AutoConnect.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/Blobbie.d.ts +22 -5
- package/dist/types/react/web/ui/ConnectWallet/Blobbie.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts +2 -1
- package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts +1 -0
- package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts.map +1 -1
- package/dist/types/react/web/ui/PayEmbed.d.ts +2 -2
- package/dist/types/react/web/ui/PayEmbed.d.ts.map +1 -1
- package/dist/types/react/web/ui/SiteEmbed.d.ts +3 -2
- package/dist/types/react/web/ui/SiteEmbed.d.ts.map +1 -1
- package/dist/types/react/web/ui/SiteLink.d.ts +2 -1
- package/dist/types/react/web/ui/SiteLink.d.ts.map +1 -1
- package/dist/types/react/web/ui/TransactionButton/index.d.ts +1 -0
- package/dist/types/react/web/ui/TransactionButton/index.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Account/address.d.ts +52 -0
- package/dist/types/react/web/ui/prebuilt/Account/address.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Account/avatar.d.ts +142 -0
- package/dist/types/react/web/ui/prebuilt/Account/avatar.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts +137 -0
- package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Account/blobbie.d.ts +8 -0
- package/dist/types/react/web/ui/prebuilt/Account/blobbie.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Account/name.d.ts +119 -0
- package/dist/types/react/web/ui/prebuilt/Account/name.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Account/provider.d.ts +45 -0
- package/dist/types/react/web/ui/prebuilt/Account/provider.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/NFT/description.d.ts +59 -0
- package/dist/types/react/web/ui/prebuilt/NFT/description.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/NFT/hooks.d.ts +14 -0
- package/dist/types/react/web/ui/prebuilt/NFT/hooks.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts +75 -0
- package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts +59 -0
- package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/NFT/provider.d.ts +55 -0
- package/dist/types/react/web/ui/prebuilt/NFT/provider.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Token/icon.d.ts +95 -0
- package/dist/types/react/web/ui/prebuilt/Token/icon.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Token/name.d.ts +140 -0
- package/dist/types/react/web/ui/prebuilt/Token/name.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Token/provider.d.ts +61 -0
- package/dist/types/react/web/ui/prebuilt/Token/provider.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Token/symbol.d.ts +137 -0
- package/dist/types/react/web/ui/prebuilt/Token/symbol.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.d.ts +1 -0
- package/dist/types/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/thirdweb/ClaimButton/index.d.ts +1 -0
- package/dist/types/react/web/ui/prebuilt/thirdweb/ClaimButton/index.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.d.ts +1 -0
- package/dist/types/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.d.ts.map +1 -1
- package/dist/types/storage/unpin.d.ts +1 -1
- package/dist/types/storage/upload.d.ts +1 -0
- package/dist/types/storage/upload.d.ts.map +1 -1
- package/dist/types/transaction/actions/to-serializable-transaction.d.ts +1 -1
- package/dist/types/transaction/actions/zksync/send-eip712-transaction.d.ts +5 -0
- package/dist/types/transaction/actions/zksync/send-eip712-transaction.d.ts.map +1 -1
- package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts +5 -0
- package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts.map +1 -1
- package/dist/types/utils/config.d.ts +9 -0
- package/dist/types/utils/config.d.ts.map +1 -1
- package/dist/types/utils/json.d.ts +1 -1
- package/dist/types/utils/json.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wallets/eip5792/get-calls-status.d.ts +1 -1
- package/dist/types/wallets/eip5792/get-capabilities.d.ts +1 -1
- package/dist/types/wallets/eip5792/send-calls.d.ts +2 -2
- package/dist/types/wallets/eip5792/wait-for-bundle.d.ts +1 -1
- package/dist/types/wallets/in-app/core/users/getUser.d.ts +1 -1
- package/dist/types/wallets/smart/smart-wallet.d.ts +1 -0
- package/dist/types/wallets/smart/smart-wallet.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/client/client.ts +1 -0
- package/src/exports/react.ts +56 -2
- package/src/extensions/erc721/lazyMinting/read/getBatchesToReveal.ts +1 -1
- package/src/extensions/modules/common/checkModulesCompatibility.ts +5 -0
- package/src/extensions/prebuilts/deploy-pack.ts +1 -0
- package/src/extensions/thirdweb/write/publish.ts +4 -0
- package/src/react/core/hooks/others/useChainQuery.ts +3 -3
- package/src/react/core/hooks/rpc/useBlockNumber.ts +1 -1
- package/src/react/core/hooks/wallets/useCapabilities.ts +1 -1
- package/src/react/core/hooks/wallets/useSendCalls.ts +3 -3
- package/src/react/core/providers/connection-manager.tsx +3 -0
- package/src/react/core/utils/wallet.ts +2 -1
- package/src/react/core/utils/walletIcon.ts +2 -0
- package/src/react/native/hooks/wallets/useProfiles.ts +1 -1
- package/src/react/native/providers/thirdweb-provider.tsx +1 -0
- package/src/react/native/ui/AutoConnect/AutoConnect.tsx +1 -0
- package/src/react/native/ui/connect/ConnectModal.tsx +1 -0
- package/src/react/native/ui/transaction/TransactionButton.tsx +1 -0
- package/src/react/web/hooks/wallets/useProfiles.ts +1 -1
- package/src/react/web/providers/thirdweb-provider.tsx +1 -0
- package/src/react/web/ui/AutoConnect/AutoConnect.tsx +1 -0
- package/src/react/web/ui/ConnectWallet/Blobbie.tsx +31 -4
- package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +36 -32
- package/src/react/web/ui/ConnectWallet/Details.tsx +91 -58
- package/src/react/web/ui/ConnectWallet/Modal/ConnectEmbed.tsx +1 -0
- package/src/react/web/ui/PayEmbed.tsx +2 -2
- package/src/react/web/ui/SiteEmbed.tsx +3 -2
- package/src/react/web/ui/SiteLink.tsx +2 -1
- package/src/react/web/ui/TransactionButton/index.tsx +1 -0
- package/src/react/web/ui/prebuilt/Account/address.test.tsx +28 -0
- package/src/react/web/ui/prebuilt/Account/address.tsx +64 -0
- package/src/react/web/ui/prebuilt/Account/avatar.test.tsx +48 -0
- package/src/react/web/ui/prebuilt/Account/avatar.tsx +221 -0
- package/src/react/web/ui/prebuilt/Account/balance.test.tsx +54 -0
- package/src/react/web/ui/prebuilt/Account/balance.tsx +202 -0
- package/src/react/web/ui/prebuilt/Account/blobbie.tsx +12 -0
- package/src/react/web/ui/prebuilt/Account/name.test.tsx +62 -0
- package/src/react/web/ui/prebuilt/Account/name.tsx +175 -0
- package/src/react/web/ui/prebuilt/Account/provider.test.tsx +38 -0
- package/src/react/web/ui/prebuilt/Account/provider.tsx +69 -0
- package/src/react/web/ui/prebuilt/NFT/NFT.test.tsx +17 -14
- package/src/react/web/ui/prebuilt/NFT/description.tsx +87 -0
- package/src/react/web/ui/prebuilt/NFT/hooks.tsx +53 -0
- package/src/react/web/ui/prebuilt/NFT/media.tsx +119 -0
- package/src/react/web/ui/prebuilt/NFT/name.tsx +85 -0
- package/src/react/web/ui/prebuilt/NFT/provider.tsx +75 -0
- package/src/react/web/ui/prebuilt/Token/icon.tsx +164 -0
- package/src/react/web/ui/prebuilt/Token/name.tsx +201 -0
- package/src/react/web/ui/prebuilt/Token/provider.tsx +86 -0
- package/src/react/web/ui/prebuilt/Token/symbol.tsx +201 -0
- package/src/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.tsx +1 -0
- package/src/react/web/ui/prebuilt/thirdweb/ClaimButton/index.tsx +1 -0
- package/src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx +1 -0
- package/src/storage/unpin.ts +1 -1
- package/src/storage/upload.ts +1 -0
- package/src/transaction/actions/to-serializable-transaction.ts +1 -1
- package/src/transaction/actions/zksync/send-eip712-transaction.ts +5 -0
- package/src/utils/any-evm/zksync/isZkSyncChain.ts +5 -0
- package/src/utils/config.ts +9 -0
- package/src/utils/json.ts +8 -2
- package/src/version.ts +1 -1
- package/src/wallets/eip5792/get-calls-status.ts +1 -1
- package/src/wallets/eip5792/get-capabilities.ts +1 -1
- package/src/wallets/eip5792/send-calls.ts +2 -2
- package/src/wallets/eip5792/wait-for-bundle.ts +1 -1
- package/src/wallets/in-app/core/users/getUser.ts +1 -1
- package/src/wallets/smart/smart-wallet.ts +1 -0
- package/dist/cjs/react/web/ui/prebuilt/NFT/NFT.js +0 -217
- package/dist/cjs/react/web/ui/prebuilt/NFT/NFT.js.map +0 -1
- package/dist/esm/react/web/ui/prebuilt/NFT/NFT.js +0 -212
- package/dist/esm/react/web/ui/prebuilt/NFT/NFT.js.map +0 -1
- package/dist/types/react/web/ui/prebuilt/NFT/NFT.d.ts +0 -76
- package/dist/types/react/web/ui/prebuilt/NFT/NFT.d.ts.map +0 -1
- package/src/extensions/prebuilts/deploy-published.test.ts +0 -132
- package/src/react/web/ui/prebuilt/NFT/NFT.tsx +0 -272
- package/src/wallets/smart/smart-wallet-integration-v07.test.ts +0 -270
- package/src/wallets/smart/smart-wallet-integration.test.ts +0 -375
@@ -1,272 +0,0 @@
|
|
1
|
-
"use client";
|
2
|
-
|
3
|
-
import { useSuspenseQuery } from "@tanstack/react-query";
|
4
|
-
import { createContext, useContext } from "react";
|
5
|
-
import type { ThirdwebContract } from "../../../../../contract/contract.js";
|
6
|
-
import { getNFT as getNFT721 } from "../../../../../extensions/erc721/read/getNFT.js";
|
7
|
-
import { getNFT as getNFT1155 } from "../../../../../extensions/erc1155/read/getNFT.js";
|
8
|
-
import type { NFT as NFTType } from "../../../../../utils/nft/parseNft.js";
|
9
|
-
import { MediaRenderer } from "../../MediaRenderer/MediaRenderer.js";
|
10
|
-
import type { MediaRendererProps } from "../../MediaRenderer/types.js";
|
11
|
-
|
12
|
-
/**
|
13
|
-
* Props for the <NFT> component
|
14
|
-
* @component
|
15
|
-
*/
|
16
|
-
type NFTProviderProps = {
|
17
|
-
/**
|
18
|
-
* The NFT contract address. Accepts both ERC721 and ERC1155 contracts
|
19
|
-
*/
|
20
|
-
contract: ThirdwebContract;
|
21
|
-
/**
|
22
|
-
* The tokenId whose info you want to display
|
23
|
-
*/
|
24
|
-
tokenId: bigint;
|
25
|
-
};
|
26
|
-
|
27
|
-
/**
|
28
|
-
* @internal
|
29
|
-
*/
|
30
|
-
export const NFTProviderContext = /* @__PURE__ */ createContext<
|
31
|
-
NFTProviderProps | undefined
|
32
|
-
>(undefined);
|
33
|
-
|
34
|
-
/**
|
35
|
-
* A React context provider component that supplies NFT-related data to its child components.
|
36
|
-
*
|
37
|
-
* This component serves as a wrapper around the `NFTProviderContext.Provider` and passes
|
38
|
-
* the provided NFT data down to all of its child components through the context API.
|
39
|
-
*
|
40
|
-
*
|
41
|
-
* @component
|
42
|
-
* @param {React.PropsWithChildren<NFTProviderProps>} props - The props for the NFT provider
|
43
|
-
*
|
44
|
-
* @example
|
45
|
-
* ```tsx
|
46
|
-
* import { getContract } from "thirdweb";
|
47
|
-
* import { NFT } from "thirdweb/react";
|
48
|
-
*
|
49
|
-
* const contract = getContract({
|
50
|
-
* address: "0x...",
|
51
|
-
* chain: ethereum,
|
52
|
-
* client: yourThirdwebClient,
|
53
|
-
* });
|
54
|
-
*
|
55
|
-
* <NFT contract={contract} tokenId={0n}>
|
56
|
-
* <Suspense fallback={"Loading media..."}>
|
57
|
-
* <NFT.Media />
|
58
|
-
* <NFT.Description />
|
59
|
-
* </Suspense>
|
60
|
-
* </NFT>
|
61
|
-
* ```
|
62
|
-
*/
|
63
|
-
export function NFT(props: React.PropsWithChildren<NFTProviderProps>) {
|
64
|
-
return (
|
65
|
-
<NFTProviderContext.Provider value={props}>
|
66
|
-
{props.children}
|
67
|
-
</NFTProviderContext.Provider>
|
68
|
-
);
|
69
|
-
}
|
70
|
-
|
71
|
-
/**
|
72
|
-
* @internal
|
73
|
-
*/
|
74
|
-
function useNFTContext() {
|
75
|
-
const ctx = useContext(NFTProviderContext);
|
76
|
-
if (!ctx) {
|
77
|
-
throw new Error(
|
78
|
-
"NFTProviderContext not found. Make sure you are using NFT.Media, NFT.Description, etc. inside a <NFT /> component",
|
79
|
-
);
|
80
|
-
}
|
81
|
-
return ctx;
|
82
|
-
}
|
83
|
-
|
84
|
-
/**
|
85
|
-
* @component
|
86
|
-
* The props for the <NFT.Media /> component
|
87
|
-
* It is similar to the [`MediaRendererProps`](https://portal.thirdweb.com/references/typescript/v5/MediaRendererProps)
|
88
|
-
* (excluding `src`, `poster` and `client`) that you can
|
89
|
-
* use to style the NFT.Media
|
90
|
-
*/
|
91
|
-
export type NFTMediaProps = Omit<
|
92
|
-
MediaRendererProps,
|
93
|
-
"src" | "poster" | "client"
|
94
|
-
>;
|
95
|
-
|
96
|
-
/**
|
97
|
-
* This component fetches and displays an NFT's media. It uses thirdweb [`MediaRenderer`](https://portal.thirdweb.com/react/v5/components/MediaRenderer) under the hood
|
98
|
-
* so you can style it just like how you would style a MediaRenderer.
|
99
|
-
* @returns A MediaRenderer component
|
100
|
-
*
|
101
|
-
* Since this component has an internal loading state (for when the NFT media is being fetched),
|
102
|
-
* you must wrap it with React.Suspense to make it work.
|
103
|
-
*
|
104
|
-
* @component
|
105
|
-
* @example
|
106
|
-
* ### Basic usage
|
107
|
-
* ```tsx
|
108
|
-
* import { getContract } from "thirdweb";
|
109
|
-
* import { NFT } from "thirdweb/react";
|
110
|
-
*
|
111
|
-
* const nftContract = getContract({
|
112
|
-
* address: "0x...",
|
113
|
-
* chain: ethereum,
|
114
|
-
* client: yourThirdwebClient,
|
115
|
-
* });
|
116
|
-
*
|
117
|
-
* <NFT contract={nftContract} tokenId={0n}>
|
118
|
-
* This will show the media for tokenId #0 from the `nftContract` collection
|
119
|
-
* <Suspense fallback={"Loading media..."}>
|
120
|
-
* <NFT.Media />
|
121
|
-
* </Suspense>
|
122
|
-
* </NFT>
|
123
|
-
* ```
|
124
|
-
*
|
125
|
-
* ### Basic stylings
|
126
|
-
* You can style NFT.Media with the `style` and `className` props.
|
127
|
-
* ```tsx
|
128
|
-
* <NFT.Media style={{ borderRadius: "8px" }} className="mx-auto" />
|
129
|
-
* ```
|
130
|
-
*/
|
131
|
-
NFT.Media = (props: NFTMediaProps) => {
|
132
|
-
const { contract, tokenId } = useNFTContext();
|
133
|
-
const nftQuery = useSuspenseQuery({
|
134
|
-
queryKey: [
|
135
|
-
"__nft_info_internal__",
|
136
|
-
contract.chain.id,
|
137
|
-
contract.address,
|
138
|
-
tokenId.toString(),
|
139
|
-
],
|
140
|
-
queryFn: () => getNFTInfo({ contract, tokenId }),
|
141
|
-
});
|
142
|
-
const animation_url = nftQuery.data?.metadata.animation_url;
|
143
|
-
const image =
|
144
|
-
nftQuery.data?.metadata.image || nftQuery.data?.metadata.image_url;
|
145
|
-
|
146
|
-
return (
|
147
|
-
<MediaRenderer
|
148
|
-
client={contract.client}
|
149
|
-
src={animation_url || image}
|
150
|
-
poster={image}
|
151
|
-
{...props}
|
152
|
-
/>
|
153
|
-
);
|
154
|
-
};
|
155
|
-
|
156
|
-
/**
|
157
|
-
* This component fetches and displays an NFT's name. It takes in a `className` and `style` props
|
158
|
-
* so you can style it just like how you would style a <span> element.
|
159
|
-
* @returns A <span> element containing the name of the NFT
|
160
|
-
*
|
161
|
-
* Since this component has an internal loading state (for when the NFT media is being fetched),
|
162
|
-
* you must wrap it with React.Suspense to make it work.
|
163
|
-
*
|
164
|
-
* @component
|
165
|
-
* @example
|
166
|
-
* ### Basic usage
|
167
|
-
* ```tsx
|
168
|
-
* import { getContract } from "thirdweb";
|
169
|
-
* import { NFT } from "thirdweb/react";
|
170
|
-
*
|
171
|
-
* const nftContract = getContract({
|
172
|
-
* address: "0x...",
|
173
|
-
* chain: ethereum,
|
174
|
-
* client: yourThirdwebClient,
|
175
|
-
* });
|
176
|
-
*
|
177
|
-
* <NFT contract={nftContract} tokenId={0n}>
|
178
|
-
* This will show the name for tokenId #0 from the `nftContract` collection
|
179
|
-
* <Suspense fallback={"Loading nft name..."}>
|
180
|
-
* <NFT.Name className="mx-auto" style={{ color: "red" }} />
|
181
|
-
* </Suspense>
|
182
|
-
* </NFT>
|
183
|
-
* ```
|
184
|
-
*/
|
185
|
-
NFT.Name = (props: { className?: string; style?: React.CSSProperties }) => {
|
186
|
-
const { contract, tokenId } = useNFTContext();
|
187
|
-
const nftQuery = useSuspenseQuery({
|
188
|
-
queryKey: [
|
189
|
-
"__nft_info_internal__",
|
190
|
-
contract.chain.id,
|
191
|
-
contract.address,
|
192
|
-
tokenId.toString(),
|
193
|
-
],
|
194
|
-
queryFn: () => getNFTInfo({ contract, tokenId }),
|
195
|
-
});
|
196
|
-
const name = nftQuery.data?.metadata.name || "";
|
197
|
-
return <span {...props}>{name}</span>;
|
198
|
-
};
|
199
|
-
|
200
|
-
/**
|
201
|
-
* This component fetches and displays an NFT's description. It takes in a `className` and `style` props
|
202
|
-
* so you can style it just like how you would style a <span> element.
|
203
|
-
* @returns A <span> element containing the description of the NFT
|
204
|
-
*
|
205
|
-
* Since this component has an internal loading state (for when the NFT media is being fetched),
|
206
|
-
* you must wrap it with React.Suspense to make it work.
|
207
|
-
*
|
208
|
-
* @component
|
209
|
-
* @example
|
210
|
-
* ### Basic usage
|
211
|
-
* ```tsx
|
212
|
-
* import { getContract } from "thirdweb";
|
213
|
-
* import { NFT } from "thirdweb/react";
|
214
|
-
*
|
215
|
-
* const nftContract = getContract({
|
216
|
-
* address: "0x...",
|
217
|
-
* chain: ethereum,
|
218
|
-
* client: yourThirdwebClient,
|
219
|
-
* });
|
220
|
-
*
|
221
|
-
* <NFT contract={nftContract} tokenId={0n}>
|
222
|
-
* This will show the description for tokenId #0 from the `nftContract` collection
|
223
|
-
* <Suspense fallback={"Loading description..."}>
|
224
|
-
* <NFT.Description className="mx-auto" style={{ color: "red" }} />
|
225
|
-
* </Suspense>
|
226
|
-
* </NFT>
|
227
|
-
* ```
|
228
|
-
*/
|
229
|
-
NFT.Description = (props: {
|
230
|
-
className: string;
|
231
|
-
style: React.CSSProperties;
|
232
|
-
}) => {
|
233
|
-
const { contract, tokenId } = useNFTContext();
|
234
|
-
const nftQuery = useSuspenseQuery({
|
235
|
-
queryKey: [
|
236
|
-
"__nft_info_internal__",
|
237
|
-
contract.chain.id,
|
238
|
-
contract.address,
|
239
|
-
tokenId.toString(),
|
240
|
-
],
|
241
|
-
queryFn: () => getNFTInfo({ contract, tokenId }),
|
242
|
-
});
|
243
|
-
const description = nftQuery.data?.metadata.description || "";
|
244
|
-
return <span {...props}>{description}</span>;
|
245
|
-
};
|
246
|
-
|
247
|
-
/**
|
248
|
-
* @internal
|
249
|
-
*/
|
250
|
-
export async function getNFTInfo(options: NFTProviderProps): Promise<NFTType> {
|
251
|
-
const nft = await Promise.allSettled([
|
252
|
-
getNFT721(options),
|
253
|
-
getNFT1155(options),
|
254
|
-
]).then(([possibleNFT721, possibleNFT1155]) => {
|
255
|
-
// getNFT extension always return an NFT object
|
256
|
-
// so we need to check if the tokenURI exists
|
257
|
-
if (
|
258
|
-
possibleNFT721.status === "fulfilled" &&
|
259
|
-
possibleNFT721.value.tokenURI
|
260
|
-
) {
|
261
|
-
return possibleNFT721.value;
|
262
|
-
}
|
263
|
-
if (
|
264
|
-
possibleNFT1155.status === "fulfilled" &&
|
265
|
-
possibleNFT1155.value.tokenURI
|
266
|
-
) {
|
267
|
-
return possibleNFT1155.value;
|
268
|
-
}
|
269
|
-
throw new Error("Failed to load NFT metadata");
|
270
|
-
});
|
271
|
-
return nft;
|
272
|
-
}
|
@@ -1,270 +0,0 @@
|
|
1
|
-
import { beforeAll, describe, expect, it } from "vitest";
|
2
|
-
import { TEST_CLIENT } from "../../../test/src/test-clients.js";
|
3
|
-
import { typedData } from "../../../test/src/typed-data.js";
|
4
|
-
import { verifySignature } from "../../auth/verify-signature.js";
|
5
|
-
import { type ThirdwebContract, getContract } from "../../contract/contract.js";
|
6
|
-
import { parseEventLogs } from "../../event/actions/parse-logs.js";
|
7
|
-
|
8
|
-
import { sepolia } from "../../chains/chain-definitions/sepolia.js";
|
9
|
-
import {
|
10
|
-
addAdmin,
|
11
|
-
adminUpdatedEvent,
|
12
|
-
} from "../../exports/extensions/erc4337.js";
|
13
|
-
import { balanceOf } from "../../extensions/erc1155/__generated__/IERC1155/read/balanceOf.js";
|
14
|
-
import { claimTo } from "../../extensions/erc1155/drops/write/claimTo.js";
|
15
|
-
import { checkContractWalletSignature } from "../../extensions/erc1271/checkContractWalletSignature.js";
|
16
|
-
import { setContractURI } from "../../extensions/marketplace/__generated__/IMarketplace/write/setContractURI.js";
|
17
|
-
import { estimateGasCost } from "../../transaction/actions/estimate-gas-cost.js";
|
18
|
-
import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
|
19
|
-
import { sendBatchTransaction } from "../../transaction/actions/send-batch-transaction.js";
|
20
|
-
import { waitForReceipt } from "../../transaction/actions/wait-for-tx-receipt.js";
|
21
|
-
import { getAddress } from "../../utils/address.js";
|
22
|
-
import { isContractDeployed } from "../../utils/bytecode/is-contract-deployed.js";
|
23
|
-
import { sleep } from "../../utils/sleep.js";
|
24
|
-
import type { Account, Wallet } from "../interfaces/wallet.js";
|
25
|
-
import { generateAccount } from "../utils/generateAccount.js";
|
26
|
-
import { predictSmartAccountAddress } from "./lib/calls.js";
|
27
|
-
import { DEFAULT_ACCOUNT_FACTORY_V0_7 } from "./lib/constants.js";
|
28
|
-
import { smartWallet } from "./smart-wallet.js";
|
29
|
-
|
30
|
-
let wallet: Wallet;
|
31
|
-
let smartAccount: Account;
|
32
|
-
let smartWalletAddress: string;
|
33
|
-
let personalAccount: Account;
|
34
|
-
let accountContract: ThirdwebContract;
|
35
|
-
|
36
|
-
const chain = sepolia;
|
37
|
-
const client = TEST_CLIENT;
|
38
|
-
const contract = getContract({
|
39
|
-
client,
|
40
|
-
chain,
|
41
|
-
address: "0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8",
|
42
|
-
});
|
43
|
-
|
44
|
-
describe.runIf(process.env.TW_SECRET_KEY).skip(
|
45
|
-
"SmartWallet 0.7 core tests",
|
46
|
-
{
|
47
|
-
retry: 0,
|
48
|
-
timeout: 240_000,
|
49
|
-
},
|
50
|
-
() => {
|
51
|
-
beforeAll(async () => {
|
52
|
-
personalAccount = await generateAccount({
|
53
|
-
client,
|
54
|
-
});
|
55
|
-
wallet = smartWallet({
|
56
|
-
chain,
|
57
|
-
gasless: true,
|
58
|
-
factoryAddress: DEFAULT_ACCOUNT_FACTORY_V0_7,
|
59
|
-
});
|
60
|
-
smartAccount = await wallet.connect({
|
61
|
-
client: TEST_CLIENT,
|
62
|
-
personalAccount,
|
63
|
-
});
|
64
|
-
smartWalletAddress = smartAccount.address;
|
65
|
-
accountContract = getContract({
|
66
|
-
address: smartWalletAddress,
|
67
|
-
chain,
|
68
|
-
client,
|
69
|
-
});
|
70
|
-
});
|
71
|
-
|
72
|
-
it("can connect", async () => {
|
73
|
-
expect(smartWalletAddress).toHaveLength(42);
|
74
|
-
const predictedAddress = await predictSmartAccountAddress({
|
75
|
-
client,
|
76
|
-
chain,
|
77
|
-
adminAddress: personalAccount.address,
|
78
|
-
factoryAddress: DEFAULT_ACCOUNT_FACTORY_V0_7,
|
79
|
-
});
|
80
|
-
expect(predictedAddress).toEqual(smartWalletAddress);
|
81
|
-
});
|
82
|
-
|
83
|
-
it("should revert on unsuccessful transactions", async () => {
|
84
|
-
const tx = sendAndConfirmTransaction({
|
85
|
-
transaction: setContractURI({
|
86
|
-
contract,
|
87
|
-
uri: "https://example.com",
|
88
|
-
}),
|
89
|
-
account: smartAccount,
|
90
|
-
});
|
91
|
-
|
92
|
-
await expect(tx).rejects.toMatchInlineSnapshot(`
|
93
|
-
[TransactionError: Error - Not authorized
|
94
|
-
|
95
|
-
contract: ${contract.address}
|
96
|
-
chainId: 11155111]
|
97
|
-
`);
|
98
|
-
});
|
99
|
-
|
100
|
-
it("can execute a tx", async () => {
|
101
|
-
const tx = await sendAndConfirmTransaction({
|
102
|
-
transaction: claimTo({
|
103
|
-
contract,
|
104
|
-
quantity: 1n,
|
105
|
-
to: smartWalletAddress,
|
106
|
-
tokenId: 0n,
|
107
|
-
}),
|
108
|
-
account: smartAccount,
|
109
|
-
});
|
110
|
-
expect(tx.transactionHash).toHaveLength(66);
|
111
|
-
const isDeployed = await isContractDeployed(accountContract);
|
112
|
-
expect(isDeployed).toEqual(true);
|
113
|
-
const balance = await balanceOf({
|
114
|
-
contract,
|
115
|
-
owner: getAddress(smartWalletAddress),
|
116
|
-
tokenId: 0n,
|
117
|
-
});
|
118
|
-
expect(balance).toEqual(1n);
|
119
|
-
});
|
120
|
-
|
121
|
-
it("can estimate a tx", async () => {
|
122
|
-
const estimates = await estimateGasCost({
|
123
|
-
transaction: claimTo({
|
124
|
-
contract,
|
125
|
-
quantity: 1n,
|
126
|
-
to: smartWalletAddress,
|
127
|
-
tokenId: 0n,
|
128
|
-
}),
|
129
|
-
account: smartAccount,
|
130
|
-
});
|
131
|
-
expect(estimates.wei.toString()).not.toBe("0");
|
132
|
-
});
|
133
|
-
|
134
|
-
it("can execute a batched tx", async () => {
|
135
|
-
const tx = await sendBatchTransaction({
|
136
|
-
account: smartAccount,
|
137
|
-
transactions: [
|
138
|
-
claimTo({
|
139
|
-
contract,
|
140
|
-
quantity: 1n,
|
141
|
-
to: smartWalletAddress,
|
142
|
-
tokenId: 0n,
|
143
|
-
}),
|
144
|
-
claimTo({
|
145
|
-
contract,
|
146
|
-
quantity: 1n,
|
147
|
-
to: smartWalletAddress,
|
148
|
-
tokenId: 0n,
|
149
|
-
}),
|
150
|
-
],
|
151
|
-
});
|
152
|
-
expect(tx.transactionHash).toHaveLength(66);
|
153
|
-
const result = await waitForReceipt({
|
154
|
-
client,
|
155
|
-
transactionHash: tx.transactionHash,
|
156
|
-
chain,
|
157
|
-
});
|
158
|
-
expect(result.status).toEqual("success");
|
159
|
-
});
|
160
|
-
|
161
|
-
it("can sign and verify 1271 with replay protection", async () => {
|
162
|
-
const message = "hello world";
|
163
|
-
const signature = await smartAccount.signMessage({ message });
|
164
|
-
const isValidV1 = await verifySignature({
|
165
|
-
message,
|
166
|
-
signature,
|
167
|
-
address: smartWalletAddress,
|
168
|
-
chain,
|
169
|
-
client,
|
170
|
-
});
|
171
|
-
expect(isValidV1).toEqual(true);
|
172
|
-
const isValidV2 = await checkContractWalletSignature({
|
173
|
-
message,
|
174
|
-
signature,
|
175
|
-
contract: accountContract,
|
176
|
-
});
|
177
|
-
expect(isValidV2).toEqual(true);
|
178
|
-
|
179
|
-
// sign typed data
|
180
|
-
const signatureTyped = await smartAccount.signTypedData({
|
181
|
-
...typedData.basic,
|
182
|
-
primaryType: "Mail",
|
183
|
-
});
|
184
|
-
expect(signatureTyped.length).toBe(132);
|
185
|
-
|
186
|
-
// add admin
|
187
|
-
const newAdmin = await generateAccount({ client });
|
188
|
-
const receipt = await sendAndConfirmTransaction({
|
189
|
-
account: smartAccount,
|
190
|
-
transaction: addAdmin({
|
191
|
-
account: smartAccount,
|
192
|
-
adminAddress: newAdmin.address,
|
193
|
-
contract: getContract({
|
194
|
-
address: smartAccount.address,
|
195
|
-
chain,
|
196
|
-
client,
|
197
|
-
}),
|
198
|
-
}),
|
199
|
-
});
|
200
|
-
const logs = parseEventLogs({
|
201
|
-
events: [adminUpdatedEvent()],
|
202
|
-
logs: receipt.logs,
|
203
|
-
});
|
204
|
-
expect(logs.some((l) => l.args.signer === newAdmin.address)).toBe(true);
|
205
|
-
expect(logs.some((l) => l.args.isAdmin)).toBe(true);
|
206
|
-
});
|
207
|
-
|
208
|
-
it("can execute a 2 tx in parallel", async () => {
|
209
|
-
const newSmartWallet = smartWallet({
|
210
|
-
chain,
|
211
|
-
gasless: true,
|
212
|
-
overrides: {
|
213
|
-
accountSalt: "test",
|
214
|
-
},
|
215
|
-
});
|
216
|
-
const newSmartAccount = await newSmartWallet.connect({
|
217
|
-
client: TEST_CLIENT,
|
218
|
-
personalAccount,
|
219
|
-
});
|
220
|
-
const newSmartAccountContract = getContract({
|
221
|
-
address: newSmartAccount.address,
|
222
|
-
chain,
|
223
|
-
client,
|
224
|
-
});
|
225
|
-
let isDeployed = await isContractDeployed(newSmartAccountContract);
|
226
|
-
expect(isDeployed).toEqual(false);
|
227
|
-
|
228
|
-
// sending transactions in parallel should deploy the account and not cause errors
|
229
|
-
const txs = await Promise.all([
|
230
|
-
sendAndConfirmTransaction({
|
231
|
-
transaction: claimTo({
|
232
|
-
contract,
|
233
|
-
quantity: 1n,
|
234
|
-
to: newSmartAccount.address,
|
235
|
-
tokenId: 0n,
|
236
|
-
}),
|
237
|
-
account: newSmartAccount,
|
238
|
-
}),
|
239
|
-
sleep(1000).then(() =>
|
240
|
-
sendAndConfirmTransaction({
|
241
|
-
transaction: claimTo({
|
242
|
-
contract,
|
243
|
-
quantity: 1n,
|
244
|
-
to: newSmartAccount.address,
|
245
|
-
tokenId: 0n,
|
246
|
-
}),
|
247
|
-
account: newSmartAccount,
|
248
|
-
}),
|
249
|
-
),
|
250
|
-
]);
|
251
|
-
expect(txs.length).toEqual(2);
|
252
|
-
expect(txs.every((t) => t.transactionHash.length === 66)).toBe(true);
|
253
|
-
const result1 = await waitForReceipt({
|
254
|
-
client,
|
255
|
-
transactionHash: txs[0].transactionHash,
|
256
|
-
chain,
|
257
|
-
});
|
258
|
-
expect(result1.status).toEqual("success");
|
259
|
-
const result2 = await waitForReceipt({
|
260
|
-
client,
|
261
|
-
transactionHash: txs[1].transactionHash,
|
262
|
-
chain,
|
263
|
-
});
|
264
|
-
expect(result2.status).toEqual("success");
|
265
|
-
|
266
|
-
isDeployed = await isContractDeployed(newSmartAccountContract);
|
267
|
-
expect(isDeployed).toEqual(true);
|
268
|
-
});
|
269
|
-
},
|
270
|
-
);
|