thirdweb 5.53.1-nightly-865c5e3b16af70c3660f30ba8cffc5d6e360a389-20240911000352 → 5.54.0-nightly-c3800d6c0765a9a0b69ac0a4a390d20cec932419-20240912000413
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/analytics/track.js +18 -0
- package/dist/cjs/analytics/track.js.map +1 -1
- package/dist/cjs/chains/chain-definitions/polygon.js +1 -1
- package/dist/cjs/chains/chain-definitions/polygon.js.map +1 -1
- package/dist/cjs/contract/deployment/deploy-deterministic.js +19 -0
- package/dist/cjs/contract/deployment/deploy-deterministic.js.map +1 -1
- package/dist/cjs/contract/deployment/deploy-via-autofactory.js +3 -1
- package/dist/cjs/contract/deployment/deploy-via-autofactory.js.map +1 -1
- package/dist/cjs/contract/deployment/deploy-with-abi.js +50 -6
- package/dist/cjs/contract/deployment/deploy-with-abi.js.map +1 -1
- package/dist/cjs/contract/deployment/utils/bootstrap.js +22 -7
- package/dist/cjs/contract/deployment/utils/bootstrap.js.map +1 -1
- package/dist/cjs/contract/deployment/utils/clone-factory.js +1 -2
- package/dist/cjs/contract/deployment/utils/clone-factory.js.map +1 -1
- package/dist/cjs/contract/deployment/utils/infra.js +38 -2
- package/dist/cjs/contract/deployment/utils/infra.js.map +1 -1
- package/dist/cjs/contract/deployment/zksync/zkDeployContract.js +7 -1
- package/dist/cjs/contract/deployment/zksync/zkDeployContract.js.map +1 -1
- package/dist/cjs/contract/deployment/zksync/zkDeployDeterministic.js +2 -1
- package/dist/cjs/contract/deployment/zksync/zkDeployDeterministic.js.map +1 -1
- package/dist/cjs/contract/deployment/zksync/zkDeployProxy.js +5 -4
- package/dist/cjs/contract/deployment/zksync/zkDeployProxy.js.map +1 -1
- package/dist/cjs/exports/deploys.js +7 -3
- package/dist/cjs/exports/deploys.js.map +1 -1
- package/dist/cjs/exports/utils.js +3 -1
- package/dist/cjs/exports/utils.js.map +1 -1
- package/dist/cjs/extensions/erc721/write/updateTokenURI.js +3 -0
- package/dist/cjs/extensions/erc721/write/updateTokenURI.js.map +1 -1
- package/dist/cjs/extensions/marketplace/offers/write/makeOffer.js +0 -1
- package/dist/cjs/extensions/marketplace/offers/write/makeOffer.js.map +1 -1
- package/dist/cjs/extensions/modules/common/getOrDeployModule.js +2 -4
- package/dist/cjs/extensions/modules/common/getOrDeployModule.js.map +1 -1
- package/dist/cjs/extensions/modules/common/installPublishedModule.js +1 -1
- package/dist/cjs/extensions/modules/common/installPublishedModule.js.map +1 -1
- package/dist/cjs/extensions/modules/common/uninstallPublishedModule.js +1 -2
- package/dist/cjs/extensions/modules/common/uninstallPublishedModule.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-erc1155.js +0 -1
- package/dist/cjs/extensions/prebuilts/deploy-erc1155.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-erc20.js +0 -1
- package/dist/cjs/extensions/prebuilts/deploy-erc20.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-erc721.js +0 -1
- package/dist/cjs/extensions/prebuilts/deploy-erc721.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-marketplace.js +5 -7
- package/dist/cjs/extensions/prebuilts/deploy-marketplace.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-modular.js +32 -27
- package/dist/cjs/extensions/prebuilts/deploy-modular.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-published.js +98 -28
- package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-split.js +0 -1
- package/dist/cjs/extensions/prebuilts/deploy-split.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-vote.js +0 -1
- package/dist/cjs/extensions/prebuilts/deploy-vote.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/get-required-transactions.js +66 -0
- package/dist/cjs/extensions/prebuilts/get-required-transactions.js.map +1 -0
- package/dist/cjs/react/core/social/useSocialProfiles.js +2 -0
- package/dist/cjs/react/core/social/useSocialProfiles.js.map +1 -1
- package/dist/cjs/react/native/ui/components/Address.js +1 -3
- package/dist/cjs/react/native/ui/components/Address.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/Details.js +7 -0
- package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +20 -3
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js +7 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +7 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js +7 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +49 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js +20 -0
- package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js.map +1 -1
- package/dist/cjs/social/profiles.js +2 -1
- package/dist/cjs/social/profiles.js.map +1 -1
- package/dist/cjs/utils/abi/normalizeFunctionParams.js +24 -0
- package/dist/cjs/utils/abi/normalizeFunctionParams.js.map +1 -0
- package/dist/cjs/utils/any-evm/compute-published-contract-address.js +14 -2
- package/dist/cjs/utils/any-evm/compute-published-contract-address.js.map +1 -1
- package/dist/cjs/utils/any-evm/compute-published-contract-deploy-info.js +17 -4
- package/dist/cjs/utils/any-evm/compute-published-contract-deploy-info.js.map +1 -1
- package/dist/cjs/utils/caching/lru.js +15 -14
- package/dist/cjs/utils/caching/lru.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js +3 -13
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +1 -1
- package/dist/esm/analytics/track.js +17 -0
- package/dist/esm/analytics/track.js.map +1 -1
- package/dist/esm/chains/chain-definitions/polygon.js +1 -1
- package/dist/esm/chains/chain-definitions/polygon.js.map +1 -1
- package/dist/esm/contract/deployment/deploy-deterministic.js +19 -1
- package/dist/esm/contract/deployment/deploy-deterministic.js.map +1 -1
- package/dist/esm/contract/deployment/deploy-via-autofactory.js +3 -1
- package/dist/esm/contract/deployment/deploy-via-autofactory.js.map +1 -1
- package/dist/esm/contract/deployment/deploy-with-abi.js +50 -6
- package/dist/esm/contract/deployment/deploy-with-abi.js.map +1 -1
- package/dist/esm/contract/deployment/utils/bootstrap.js +22 -8
- package/dist/esm/contract/deployment/utils/bootstrap.js.map +1 -1
- package/dist/esm/contract/deployment/utils/clone-factory.js +1 -2
- package/dist/esm/contract/deployment/utils/clone-factory.js.map +1 -1
- package/dist/esm/contract/deployment/utils/infra.js +38 -4
- package/dist/esm/contract/deployment/utils/infra.js.map +1 -1
- package/dist/esm/contract/deployment/zksync/zkDeployContract.js +7 -1
- package/dist/esm/contract/deployment/zksync/zkDeployContract.js.map +1 -1
- package/dist/esm/contract/deployment/zksync/zkDeployDeterministic.js +2 -1
- package/dist/esm/contract/deployment/zksync/zkDeployDeterministic.js.map +1 -1
- package/dist/esm/contract/deployment/zksync/zkDeployProxy.js +5 -4
- package/dist/esm/contract/deployment/zksync/zkDeployProxy.js.map +1 -1
- package/dist/esm/exports/deploys.js +3 -1
- package/dist/esm/exports/deploys.js.map +1 -1
- package/dist/esm/exports/utils.js +1 -0
- package/dist/esm/exports/utils.js.map +1 -1
- package/dist/esm/extensions/erc721/write/updateTokenURI.js +3 -0
- package/dist/esm/extensions/erc721/write/updateTokenURI.js.map +1 -1
- package/dist/esm/extensions/marketplace/offers/write/makeOffer.js +0 -1
- package/dist/esm/extensions/marketplace/offers/write/makeOffer.js.map +1 -1
- package/dist/esm/extensions/modules/common/getOrDeployModule.js +2 -4
- package/dist/esm/extensions/modules/common/getOrDeployModule.js.map +1 -1
- package/dist/esm/extensions/modules/common/installPublishedModule.js +1 -1
- package/dist/esm/extensions/modules/common/installPublishedModule.js.map +1 -1
- package/dist/esm/extensions/modules/common/uninstallPublishedModule.js +1 -2
- package/dist/esm/extensions/modules/common/uninstallPublishedModule.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-erc1155.js +0 -1
- package/dist/esm/extensions/prebuilts/deploy-erc1155.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-erc20.js +0 -1
- package/dist/esm/extensions/prebuilts/deploy-erc20.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-erc721.js +0 -1
- package/dist/esm/extensions/prebuilts/deploy-erc721.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-marketplace.js +5 -7
- package/dist/esm/extensions/prebuilts/deploy-marketplace.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-modular.js +33 -28
- package/dist/esm/extensions/prebuilts/deploy-modular.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-published.js +99 -28
- package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-split.js +0 -1
- package/dist/esm/extensions/prebuilts/deploy-split.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-vote.js +0 -1
- package/dist/esm/extensions/prebuilts/deploy-vote.js.map +1 -1
- package/dist/esm/extensions/prebuilts/get-required-transactions.js +63 -0
- package/dist/esm/extensions/prebuilts/get-required-transactions.js.map +1 -0
- package/dist/esm/react/core/social/useSocialProfiles.js +2 -0
- package/dist/esm/react/core/social/useSocialProfiles.js.map +1 -1
- package/dist/esm/react/native/ui/components/Address.js +1 -3
- package/dist/esm/react/native/ui/components/Address.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/Details.js +7 -0
- package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +20 -3
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js +7 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +7 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js +7 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +49 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
- package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js +20 -0
- package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js.map +1 -1
- package/dist/esm/social/profiles.js +2 -1
- package/dist/esm/social/profiles.js.map +1 -1
- package/dist/esm/utils/abi/normalizeFunctionParams.js +21 -0
- package/dist/esm/utils/abi/normalizeFunctionParams.js.map +1 -0
- package/dist/esm/utils/any-evm/compute-published-contract-address.js +15 -3
- package/dist/esm/utils/any-evm/compute-published-contract-address.js.map +1 -1
- package/dist/esm/utils/any-evm/compute-published-contract-deploy-info.js +16 -4
- package/dist/esm/utils/any-evm/compute-published-contract-deploy-info.js.map +1 -1
- package/dist/esm/utils/caching/lru.js +15 -14
- package/dist/esm/utils/caching/lru.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js +3 -13
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +1 -1
- package/dist/types/analytics/track.d.ts +15 -0
- package/dist/types/analytics/track.d.ts.map +1 -1
- package/dist/types/contract/deployment/deploy-deterministic.d.ts +12 -1
- package/dist/types/contract/deployment/deploy-deterministic.d.ts.map +1 -1
- package/dist/types/contract/deployment/deploy-via-autofactory.d.ts.map +1 -1
- package/dist/types/contract/deployment/deploy-with-abi.d.ts +33 -10
- package/dist/types/contract/deployment/deploy-with-abi.d.ts.map +1 -1
- package/dist/types/contract/deployment/utils/bootstrap.d.ts +8 -3
- package/dist/types/contract/deployment/utils/bootstrap.d.ts.map +1 -1
- package/dist/types/contract/deployment/utils/clone-factory.d.ts.map +1 -1
- package/dist/types/contract/deployment/utils/infra.d.ts +24 -1
- package/dist/types/contract/deployment/utils/infra.d.ts.map +1 -1
- package/dist/types/contract/deployment/zksync/zkDeployContract.d.ts +2 -1
- package/dist/types/contract/deployment/zksync/zkDeployContract.d.ts.map +1 -1
- package/dist/types/contract/deployment/zksync/zkDeployDeterministic.d.ts +1 -1
- package/dist/types/contract/deployment/zksync/zkDeployDeterministic.d.ts.map +1 -1
- package/dist/types/contract/deployment/zksync/zkDeployProxy.d.ts.map +1 -1
- package/dist/types/exports/deploys.d.ts +3 -1
- package/dist/types/exports/deploys.d.ts.map +1 -1
- package/dist/types/exports/utils.d.ts +1 -0
- package/dist/types/exports/utils.d.ts.map +1 -1
- package/dist/types/extensions/erc721/write/updateTokenURI.d.ts +3 -0
- package/dist/types/extensions/erc721/write/updateTokenURI.d.ts.map +1 -1
- package/dist/types/extensions/marketplace/offers/write/makeOffer.d.ts.map +1 -1
- package/dist/types/extensions/modules/common/getOrDeployModule.d.ts +0 -2
- package/dist/types/extensions/modules/common/getOrDeployModule.d.ts.map +1 -1
- package/dist/types/extensions/modules/common/installPublishedModule.d.ts +1 -1
- package/dist/types/extensions/modules/common/installPublishedModule.d.ts.map +1 -1
- package/dist/types/extensions/modules/common/uninstallPublishedModule.d.ts +0 -1
- package/dist/types/extensions/modules/common/uninstallPublishedModule.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-erc1155.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-erc20.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-erc721.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-marketplace.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-modular.d.ts +1 -0
- package/dist/types/extensions/prebuilts/deploy-modular.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-published.d.ts +37 -6
- package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-split.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-vote.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/get-required-transactions.d.ts +26 -0
- package/dist/types/extensions/prebuilts/get-required-transactions.d.ts.map +1 -0
- package/dist/types/react/core/social/useSocialProfiles.d.ts +2 -0
- package/dist/types/react/core/social/useSocialProfiles.d.ts.map +1 -1
- package/dist/types/react/native/ui/components/Address.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/screens/Buy/BuyScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts.map +1 -1
- package/dist/types/social/profiles.d.ts +2 -1
- package/dist/types/social/profiles.d.ts.map +1 -1
- package/dist/types/utils/abi/normalizeFunctionParams.d.ts +3 -0
- package/dist/types/utils/abi/normalizeFunctionParams.d.ts.map +1 -0
- package/dist/types/utils/any-evm/compute-published-contract-address.d.ts +2 -2
- package/dist/types/utils/any-evm/compute-published-contract-address.d.ts.map +1 -1
- package/dist/types/utils/any-evm/compute-published-contract-deploy-info.d.ts +17 -2
- package/dist/types/utils/any-evm/compute-published-contract-deploy-info.d.ts.map +1 -1
- package/dist/types/utils/caching/lru.d.ts +4 -13
- package/dist/types/utils/caching/lru.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-calls.d.ts.map +1 -1
- package/package.json +16 -21
- package/src/analytics/track.ts +29 -0
- package/src/chains/chain-definitions/polygon.ts +1 -1
- package/src/contract/deployment/deploy-deterministic.test.ts +16 -5
- package/src/contract/deployment/deploy-deterministic.ts +35 -2
- package/src/contract/deployment/deploy-via-autofactory.test.ts +0 -2
- package/src/contract/deployment/deploy-via-autofactory.ts +3 -0
- package/src/contract/deployment/deploy-with-abi.ts +63 -24
- package/src/contract/deployment/utils/bootstrap.test.ts +3 -2
- package/src/contract/deployment/utils/bootstrap.ts +35 -11
- package/src/contract/deployment/utils/clone-factory.ts +1 -2
- package/src/contract/deployment/utils/infra.ts +61 -5
- package/src/contract/deployment/zksync/zkDeployContract.ts +13 -2
- package/src/contract/deployment/zksync/zkDeployDeterministic.ts +4 -3
- package/src/contract/deployment/zksync/zkDeployProxy.ts +5 -4
- package/src/exports/deploys.ts +12 -5
- package/src/exports/utils.ts +2 -0
- package/src/extensions/airdrop/write/airdropERC1155WithSignature.test.ts +4 -1
- package/src/extensions/airdrop/write/airdropERC20WithSignature.test.ts +4 -1
- package/src/extensions/airdrop/write/airdropERC721WithSignature.test.ts +4 -1
- package/src/extensions/airdrop/write/claimERC1155.test.ts +4 -1
- package/src/extensions/airdrop/write/claimERC20.test.ts +4 -1
- package/src/extensions/airdrop/write/claimERC721.test.ts +4 -1
- package/src/extensions/erc1155/write/updateTokenURI.test.ts +54 -0
- package/src/extensions/erc20/write/getApprovalForTransaction.test.ts +112 -0
- package/src/extensions/erc20/write/transferFrom.test.ts +104 -0
- package/src/extensions/erc4337/account/permissions.test.ts +4 -1
- package/src/extensions/erc721/drops/write/updateMetadata.test.ts +29 -0
- package/src/extensions/erc721/write/updateTokenURI.test.ts +56 -0
- package/src/extensions/erc721/write/updateTokenURI.ts +3 -0
- package/src/extensions/marketplace/offers/offers.test.ts +0 -1
- package/src/extensions/marketplace/offers/write/makeOffer.ts +0 -1
- package/src/extensions/modules/common/getOrDeployModule.ts +2 -7
- package/src/extensions/modules/common/installPublishedModule.ts +2 -2
- package/src/extensions/modules/common/uninstallPublishedModule.ts +1 -9
- package/src/extensions/prebuilts/deploy-erc1155.ts +0 -1
- package/src/extensions/prebuilts/deploy-erc20.ts +0 -1
- package/src/extensions/prebuilts/deploy-erc721.ts +0 -1
- package/src/extensions/prebuilts/deploy-marketplace.ts +6 -8
- package/src/extensions/prebuilts/deploy-modular-core.test.ts +63 -2
- package/src/extensions/prebuilts/deploy-modular.ts +50 -38
- package/src/extensions/prebuilts/deploy-published.test.ts +61 -4
- package/src/extensions/prebuilts/deploy-published.ts +161 -47
- package/src/extensions/prebuilts/deploy-split.ts +0 -1
- package/src/extensions/prebuilts/deploy-vote.ts +0 -1
- package/src/extensions/prebuilts/get-required-transactions.test.ts +61 -0
- package/src/extensions/prebuilts/get-required-transactions.ts +110 -0
- package/src/react/core/social/useSocialProfiles.ts +2 -0
- package/src/react/native/ui/components/Address.tsx +1 -3
- package/src/react/web/ui/ConnectWallet/Details.tsx +7 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +31 -3
- package/src/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.tsx +7 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.tsx +7 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.tsx +7 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +53 -0
- package/src/react/web/ui/TransactionButton/TransactionModal.tsx +21 -0
- package/src/social/profiles.ts +2 -1
- package/src/transaction/actions/zksync/send-eip712-transaction.test.ts +13 -13
- package/src/utils/abi/normalizeFunctionParams.ts +29 -0
- package/src/utils/any-evm/compute-published-contract-address.ts +17 -8
- package/src/utils/any-evm/compute-published-contract-deploy-info.ts +31 -11
- package/src/utils/bytecode/resolveImplementation.test.ts +7 -5
- package/src/utils/caching/lru.test.ts +38 -0
- package/src/utils/caching/lru.ts +18 -14
- package/src/version.ts +1 -1
- package/src/wallets/in-app/core/eip5972/in-app-wallet-calls.ts +3 -14
@@ -1,16 +1,22 @@
|
|
1
|
-
import type {
|
1
|
+
import type { AbiFunction } from "abitype";
|
2
2
|
import type { Chain } from "../../chains/types.js";
|
3
3
|
import type { ThirdwebClient } from "../../client/client.js";
|
4
|
-
import { getContract } from "../../contract/contract.js";
|
4
|
+
import { type ThirdwebContract, getContract } from "../../contract/contract.js";
|
5
5
|
import { fetchPublishedContractMetadata } from "../../contract/deployment/publisher.js";
|
6
|
+
import { getOrDeployInfraContractFromMetadata } from "../../contract/deployment/utils/bootstrap.js";
|
7
|
+
import {} from "../../contract/deployment/utils/infra.js";
|
6
8
|
import { zkDeployContract } from "../../contract/deployment/zksync/zkDeployContract.js";
|
7
9
|
import { sendAndConfirmTransaction } from "../../transaction/actions/send-and-confirm-transaction.js";
|
8
10
|
import { simulateTransaction } from "../../transaction/actions/simulate.js";
|
9
11
|
import { prepareContractCall } from "../../transaction/prepare-contract-call.js";
|
10
12
|
import { resolveMethod } from "../../transaction/resolve-method.js";
|
13
|
+
import { encodeAbiParameters } from "../../utils/abi/encodeAbiParameters.js";
|
14
|
+
import { normalizeFunctionParams } from "../../utils/abi/normalizeFunctionParams.js";
|
15
|
+
import { getAddress } from "../../utils/address.js";
|
11
16
|
import type { CompilerMetadata } from "../../utils/any-evm/deploy-metadata.js";
|
12
17
|
import type { FetchDeployMetadataResult } from "../../utils/any-evm/deploy-metadata.js";
|
13
18
|
import { isZkSyncChain } from "../../utils/any-evm/zksync/isZkSyncChain.js";
|
19
|
+
import type { Hex } from "../../utils/encoding/hex.js";
|
14
20
|
import type { Account } from "../../wallets/interfaces/wallet.js";
|
15
21
|
|
16
22
|
/**
|
@@ -21,10 +27,11 @@ export type DeployPublishedContractOptions = {
|
|
21
27
|
chain: Chain;
|
22
28
|
account: Account;
|
23
29
|
contractId: string;
|
24
|
-
contractParams
|
30
|
+
contractParams?: Record<string, unknown>;
|
25
31
|
publisher?: string;
|
26
32
|
version?: string;
|
27
|
-
implementationConstructorParams?: unknown
|
33
|
+
implementationConstructorParams?: Record<string, unknown>;
|
34
|
+
salt?: string;
|
28
35
|
};
|
29
36
|
|
30
37
|
/**
|
@@ -32,6 +39,27 @@ export type DeployPublishedContractOptions = {
|
|
32
39
|
* @param options - the deploy options
|
33
40
|
* @returns a promise that resolves to the deployed contract address
|
34
41
|
* @example
|
42
|
+
*
|
43
|
+
* ## Deploying a published contract
|
44
|
+
*
|
45
|
+
* ```ts
|
46
|
+
* import { deployPublishedContract } from "thirdweb/deploys";
|
47
|
+
*
|
48
|
+
* const address = await deployedPublishedContract({
|
49
|
+
* client,
|
50
|
+
* chain,
|
51
|
+
* account,
|
52
|
+
* contractId: "MyPublishedContract",
|
53
|
+
* contractParams: {
|
54
|
+
* param1: "value1",
|
55
|
+
* param2: 123,
|
56
|
+
* },
|
57
|
+
* publisher: "0x...", // optional, defaults to the thirdweb deployer
|
58
|
+
* });
|
59
|
+
* ```
|
60
|
+
*
|
61
|
+
* ## Deploying a published contract deterministically
|
62
|
+
*
|
35
63
|
* ```ts
|
36
64
|
* import { deployPublishedContract } from "thirdweb/deploys";
|
37
65
|
*
|
@@ -40,8 +68,12 @@ export type DeployPublishedContractOptions = {
|
|
40
68
|
* chain,
|
41
69
|
* account,
|
42
70
|
* contractId: "MyPublishedContract",
|
43
|
-
* contractParams:
|
71
|
+
* contractParams: {
|
72
|
+
* param1: "value1",
|
73
|
+
* param2: 123,
|
74
|
+
* },
|
44
75
|
* publisher: "0x...",
|
76
|
+
* salt: "your-salt", // this will deterministically deploy the contract at the same address on all chains
|
45
77
|
* });
|
46
78
|
* ```
|
47
79
|
* @extension DEPLOY
|
@@ -58,6 +90,7 @@ export async function deployPublishedContract(
|
|
58
90
|
publisher,
|
59
91
|
version,
|
60
92
|
implementationConstructorParams,
|
93
|
+
salt,
|
61
94
|
} = options;
|
62
95
|
const deployMetadata = await fetchPublishedContractMetadata({
|
63
96
|
client,
|
@@ -71,8 +104,9 @@ export async function deployPublishedContract(
|
|
71
104
|
chain,
|
72
105
|
deployMetadata,
|
73
106
|
client,
|
74
|
-
contractParams,
|
107
|
+
initializeParams: contractParams,
|
75
108
|
implementationConstructorParams,
|
109
|
+
salt,
|
76
110
|
});
|
77
111
|
}
|
78
112
|
|
@@ -84,8 +118,13 @@ export type DeployContractfromDeployMetadataOptions = {
|
|
84
118
|
chain: Chain;
|
85
119
|
account: Account;
|
86
120
|
deployMetadata: FetchDeployMetadataResult;
|
87
|
-
|
88
|
-
implementationConstructorParams?: unknown
|
121
|
+
initializeParams?: Record<string, unknown>;
|
122
|
+
implementationConstructorParams?: Record<string, unknown>;
|
123
|
+
modules?: {
|
124
|
+
deployMetadata: FetchDeployMetadataResult;
|
125
|
+
initializeParams?: Record<string, unknown>;
|
126
|
+
}[];
|
127
|
+
salt?: string;
|
89
128
|
};
|
90
129
|
|
91
130
|
/**
|
@@ -93,14 +132,16 @@ export type DeployContractfromDeployMetadataOptions = {
|
|
93
132
|
*/
|
94
133
|
export async function deployContractfromDeployMetadata(
|
95
134
|
options: DeployContractfromDeployMetadataOptions,
|
96
|
-
) {
|
135
|
+
): Promise<string> {
|
97
136
|
const {
|
98
137
|
client,
|
99
138
|
account,
|
100
139
|
chain,
|
101
|
-
|
140
|
+
initializeParams,
|
102
141
|
deployMetadata,
|
103
142
|
implementationConstructorParams,
|
143
|
+
modules,
|
144
|
+
salt,
|
104
145
|
} = options;
|
105
146
|
switch (deployMetadata?.deployType) {
|
106
147
|
case "standard": {
|
@@ -109,7 +150,8 @@ export async function deployContractfromDeployMetadata(
|
|
109
150
|
client,
|
110
151
|
chain,
|
111
152
|
compilerMetadata: deployMetadata,
|
112
|
-
contractParams,
|
153
|
+
contractParams: initializeParams,
|
154
|
+
salt,
|
113
155
|
});
|
114
156
|
}
|
115
157
|
case "autoFactory": {
|
@@ -126,32 +168,18 @@ export async function deployContractfromDeployMetadata(
|
|
126
168
|
client,
|
127
169
|
account,
|
128
170
|
contractId: deployMetadata.name,
|
129
|
-
constructorParams: implementationConstructorParams
|
171
|
+
constructorParams: implementationConstructorParams,
|
130
172
|
publisher: deployMetadata.publisher,
|
131
173
|
});
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
`Could not find initialize function for ${deployMetadata.name}`,
|
142
|
-
);
|
143
|
-
}
|
144
|
-
const initializeTransaction = prepareContractCall({
|
145
|
-
contract: getContract({
|
146
|
-
client,
|
147
|
-
chain,
|
148
|
-
address: implementationContract.address,
|
149
|
-
}),
|
150
|
-
method: resolveMethod(
|
151
|
-
deployMetadata.factoryDeploymentData
|
152
|
-
?.implementationInitializerFunction || "initialize",
|
153
|
-
),
|
154
|
-
params: contractParams,
|
174
|
+
|
175
|
+
const initializeTransaction = await getInitializeTransaction({
|
176
|
+
client,
|
177
|
+
chain,
|
178
|
+
deployMetadata: deployMetadata,
|
179
|
+
implementationContract,
|
180
|
+
initializeParams,
|
181
|
+
account,
|
182
|
+
modules,
|
155
183
|
});
|
156
184
|
|
157
185
|
return deployViaAutoFactory({
|
@@ -160,6 +188,7 @@ export async function deployContractfromDeployMetadata(
|
|
160
188
|
account,
|
161
189
|
cloneFactoryContract,
|
162
190
|
initializeTransaction,
|
191
|
+
salt,
|
163
192
|
});
|
164
193
|
}
|
165
194
|
case "customFactory": {
|
@@ -181,20 +210,21 @@ export async function deployContractfromDeployMetadata(
|
|
181
210
|
chain,
|
182
211
|
address: factoryAddress,
|
183
212
|
});
|
213
|
+
const method = await resolveMethod(factoryFunction)(factory);
|
184
214
|
const deployTx = prepareContractCall({
|
185
215
|
contract: factory,
|
186
|
-
method
|
187
|
-
params:
|
216
|
+
method,
|
217
|
+
params: normalizeFunctionParams(method, initializeParams),
|
188
218
|
});
|
189
219
|
// asumption here is that the factory address returns the deployed proxy address
|
190
|
-
const address = simulateTransaction({
|
220
|
+
const address = await simulateTransaction({
|
191
221
|
transaction: deployTx,
|
192
222
|
});
|
193
223
|
await sendAndConfirmTransaction({
|
194
224
|
transaction: deployTx,
|
195
225
|
account,
|
196
226
|
});
|
197
|
-
return address;
|
227
|
+
return address as string;
|
198
228
|
}
|
199
229
|
case undefined: {
|
200
230
|
// Default to standard deployment if none was specified
|
@@ -203,7 +233,8 @@ export async function deployContractfromDeployMetadata(
|
|
203
233
|
client,
|
204
234
|
chain,
|
205
235
|
compilerMetadata: deployMetadata,
|
206
|
-
contractParams,
|
236
|
+
contractParams: initializeParams,
|
237
|
+
salt,
|
207
238
|
});
|
208
239
|
}
|
209
240
|
default:
|
@@ -217,9 +248,11 @@ async function directDeploy(options: {
|
|
217
248
|
client: ThirdwebClient;
|
218
249
|
chain: Chain;
|
219
250
|
compilerMetadata: CompilerMetadata;
|
220
|
-
contractParams
|
221
|
-
|
222
|
-
|
251
|
+
contractParams?: Record<string, unknown>;
|
252
|
+
salt?: string;
|
253
|
+
}): Promise<string> {
|
254
|
+
const { account, client, chain, compilerMetadata, contractParams, salt } =
|
255
|
+
options;
|
223
256
|
|
224
257
|
if (isZkSyncChain(chain)) {
|
225
258
|
return zkDeployContract({
|
@@ -229,6 +262,7 @@ async function directDeploy(options: {
|
|
229
262
|
bytecode: compilerMetadata.bytecode,
|
230
263
|
abi: compilerMetadata.abi,
|
231
264
|
params: contractParams,
|
265
|
+
salt,
|
232
266
|
});
|
233
267
|
}
|
234
268
|
|
@@ -240,10 +274,90 @@ async function directDeploy(options: {
|
|
240
274
|
client,
|
241
275
|
chain,
|
242
276
|
bytecode: compilerMetadata.bytecode,
|
243
|
-
|
244
|
-
(compilerMetadata.abi.find(
|
245
|
-
(i) => i.type === "constructor",
|
246
|
-
) as AbiConstructor) || [],
|
277
|
+
abi: compilerMetadata.abi,
|
247
278
|
constructorParams: contractParams,
|
279
|
+
salt,
|
280
|
+
});
|
281
|
+
}
|
282
|
+
|
283
|
+
async function getInitializeTransaction(options: {
|
284
|
+
client: ThirdwebClient;
|
285
|
+
chain: Chain;
|
286
|
+
account: Account;
|
287
|
+
implementationContract: ThirdwebContract;
|
288
|
+
deployMetadata: FetchDeployMetadataResult;
|
289
|
+
initializeParams?: Record<string, unknown>;
|
290
|
+
modules?: {
|
291
|
+
deployMetadata: FetchDeployMetadataResult;
|
292
|
+
initializeParams?: Record<string, unknown>;
|
293
|
+
}[];
|
294
|
+
}) {
|
295
|
+
const {
|
296
|
+
account,
|
297
|
+
client,
|
298
|
+
chain,
|
299
|
+
deployMetadata: metadata,
|
300
|
+
initializeParams = {},
|
301
|
+
implementationContract,
|
302
|
+
modules = [],
|
303
|
+
} = options;
|
304
|
+
|
305
|
+
const initializeFunction = metadata.abi.find(
|
306
|
+
(i) =>
|
307
|
+
i.type === "function" &&
|
308
|
+
i.name ===
|
309
|
+
(metadata.factoryDeploymentData?.implementationInitializerFunction ||
|
310
|
+
"initialize"),
|
311
|
+
) as AbiFunction;
|
312
|
+
if (!initializeFunction) {
|
313
|
+
throw new Error(`Could not find initialize function for ${metadata.name}`);
|
314
|
+
}
|
315
|
+
|
316
|
+
const hasModules =
|
317
|
+
initializeFunction.inputs.find(
|
318
|
+
(i) => i.name === "modules" || i.name === "_modules",
|
319
|
+
) &&
|
320
|
+
initializeFunction.inputs.find(
|
321
|
+
(i) => i.name === "moduleInstallData" || i.name === "_moduleInstallData",
|
322
|
+
);
|
323
|
+
if (hasModules) {
|
324
|
+
const moduleAddresses: Hex[] = [];
|
325
|
+
const moduleInstallData: Hex[] = [];
|
326
|
+
for (const module of modules) {
|
327
|
+
// deploy the module if not already deployed
|
328
|
+
const contract = await getOrDeployInfraContractFromMetadata({
|
329
|
+
client,
|
330
|
+
chain,
|
331
|
+
account,
|
332
|
+
contractMetadata: module.deployMetadata,
|
333
|
+
});
|
334
|
+
|
335
|
+
const installFunction = module.deployMetadata.abi.find(
|
336
|
+
(i) => i.type === "function" && i.name === "encodeBytesOnInstall",
|
337
|
+
) as AbiFunction | undefined;
|
338
|
+
|
339
|
+
moduleAddresses.push(getAddress(contract.address));
|
340
|
+
moduleInstallData.push(
|
341
|
+
installFunction
|
342
|
+
? encodeAbiParameters(
|
343
|
+
installFunction.inputs,
|
344
|
+
normalizeFunctionParams(installFunction, module.initializeParams),
|
345
|
+
)
|
346
|
+
: "0x",
|
347
|
+
);
|
348
|
+
}
|
349
|
+
initializeParams.modules = moduleAddresses;
|
350
|
+
initializeParams.moduleInstallData = moduleInstallData;
|
351
|
+
}
|
352
|
+
|
353
|
+
const initializeTransaction = prepareContractCall({
|
354
|
+
contract: getContract({
|
355
|
+
client,
|
356
|
+
chain,
|
357
|
+
address: implementationContract.address,
|
358
|
+
}),
|
359
|
+
method: initializeFunction,
|
360
|
+
params: normalizeFunctionParams(initializeFunction, initializeParams),
|
248
361
|
});
|
362
|
+
return initializeTransaction;
|
249
363
|
}
|
@@ -0,0 +1,61 @@
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
2
|
+
import { CLEAN_ANVIL_CHAIN } from "../../../test/src/chains.js";
|
3
|
+
import { TEST_CLIENT } from "../../../test/src/test-clients.js";
|
4
|
+
import { fetchPublishedContractMetadata } from "../../contract/deployment/publisher.js";
|
5
|
+
import { getRequiredTransactionCount } from "./get-required-transactions.js";
|
6
|
+
|
7
|
+
describe.runIf(process.env.TW_SECRET_KEY)(
|
8
|
+
"getRequiredTransactions",
|
9
|
+
{
|
10
|
+
timeout: 120000,
|
11
|
+
},
|
12
|
+
() => {
|
13
|
+
it("should count transactions for a published direct deploy contract", async () => {
|
14
|
+
const metadata = await fetchPublishedContractMetadata({
|
15
|
+
client: TEST_CLIENT,
|
16
|
+
contractId: "AccountFactory",
|
17
|
+
});
|
18
|
+
const results = await getRequiredTransactionCount({
|
19
|
+
client: TEST_CLIENT,
|
20
|
+
chain: CLEAN_ANVIL_CHAIN,
|
21
|
+
metadata,
|
22
|
+
});
|
23
|
+
expect(results.length).toBe(1);
|
24
|
+
});
|
25
|
+
|
26
|
+
it("should count transactions for a published autofactory contract", async () => {
|
27
|
+
const metadata = await fetchPublishedContractMetadata({
|
28
|
+
client: TEST_CLIENT,
|
29
|
+
contractId: "Airdrop",
|
30
|
+
});
|
31
|
+
const results = await getRequiredTransactionCount({
|
32
|
+
client: TEST_CLIENT,
|
33
|
+
chain: CLEAN_ANVIL_CHAIN,
|
34
|
+
metadata,
|
35
|
+
});
|
36
|
+
expect(results.length).toBe(4);
|
37
|
+
});
|
38
|
+
|
39
|
+
it("should count transactions for a modular contract with modules", async () => {
|
40
|
+
const metadata = await fetchPublishedContractMetadata({
|
41
|
+
client: TEST_CLIENT,
|
42
|
+
contractId: "ERC721CoreInitializable",
|
43
|
+
});
|
44
|
+
const results = await getRequiredTransactionCount({
|
45
|
+
client: TEST_CLIENT,
|
46
|
+
chain: CLEAN_ANVIL_CHAIN,
|
47
|
+
metadata,
|
48
|
+
modules: await Promise.all(
|
49
|
+
["ClaimableERC721", "BatchMetadataERC721", "RoyaltyERC721"].map(
|
50
|
+
(contractId) =>
|
51
|
+
fetchPublishedContractMetadata({
|
52
|
+
client: TEST_CLIENT,
|
53
|
+
contractId,
|
54
|
+
}),
|
55
|
+
),
|
56
|
+
),
|
57
|
+
});
|
58
|
+
expect(results.length).toBe(7);
|
59
|
+
});
|
60
|
+
},
|
61
|
+
);
|
@@ -0,0 +1,110 @@
|
|
1
|
+
import type { Chain } from "../../chains/types.js";
|
2
|
+
import type { ThirdwebClient } from "../../client/client.js";
|
3
|
+
import { getDeployedCreate2Factory } from "../../contract/deployment/utils/create-2-factory.js";
|
4
|
+
import { getDeployedInfraContract } from "../../contract/deployment/utils/infra.js";
|
5
|
+
import { getDeployedInfraContractFromMetadata } from "../../contract/deployment/utils/infra.js";
|
6
|
+
import { computePublishedContractAddress } from "../../utils/any-evm/compute-published-contract-address.js";
|
7
|
+
import type { FetchDeployMetadataResult } from "../../utils/any-evm/deploy-metadata.js";
|
8
|
+
|
9
|
+
/**
|
10
|
+
* @internal
|
11
|
+
*/
|
12
|
+
export type DeployTransactionType =
|
13
|
+
| "infra"
|
14
|
+
| "implementation"
|
15
|
+
| "module"
|
16
|
+
| "proxy";
|
17
|
+
|
18
|
+
/**
|
19
|
+
* @internal
|
20
|
+
*/
|
21
|
+
export type DeployTransactionResult = {
|
22
|
+
type: DeployTransactionType;
|
23
|
+
contractId: string;
|
24
|
+
};
|
25
|
+
|
26
|
+
/**
|
27
|
+
* @internal
|
28
|
+
*/
|
29
|
+
export async function getRequiredTransactionCount(options: {
|
30
|
+
chain: Chain;
|
31
|
+
client: ThirdwebClient;
|
32
|
+
metadata: FetchDeployMetadataResult;
|
33
|
+
constructorParams?: Record<string, unknown>;
|
34
|
+
implementationConstructorParams?: Record<string, unknown>;
|
35
|
+
modules?: FetchDeployMetadataResult[];
|
36
|
+
}): Promise<DeployTransactionResult[]> {
|
37
|
+
const {
|
38
|
+
chain,
|
39
|
+
client,
|
40
|
+
metadata,
|
41
|
+
implementationConstructorParams,
|
42
|
+
modules = [],
|
43
|
+
} = options;
|
44
|
+
|
45
|
+
if (metadata?.deployType === "autoFactory") {
|
46
|
+
const results: (DeployTransactionResult | null)[] = await Promise.all([
|
47
|
+
getDeployedCreate2Factory({
|
48
|
+
chain,
|
49
|
+
client,
|
50
|
+
}).then((c) =>
|
51
|
+
c ? null : ({ type: "infra", contractId: "Create2Factory" } as const),
|
52
|
+
),
|
53
|
+
getDeployedInfraContract({
|
54
|
+
chain,
|
55
|
+
client,
|
56
|
+
contractId: "Forwarder",
|
57
|
+
}).then((c) =>
|
58
|
+
c ? null : ({ type: "infra", contractId: "Forwarder" } as const),
|
59
|
+
),
|
60
|
+
getDeployedInfraContract({
|
61
|
+
chain,
|
62
|
+
client,
|
63
|
+
contractId: "TWCloneFactory",
|
64
|
+
constructorParams: {
|
65
|
+
_trustedForwarder: await computePublishedContractAddress({
|
66
|
+
chain,
|
67
|
+
client,
|
68
|
+
contractId: "Forwarder",
|
69
|
+
}),
|
70
|
+
},
|
71
|
+
}).then((c) =>
|
72
|
+
c ? null : ({ type: "infra", contractId: "TWCloneFactory" } as const),
|
73
|
+
),
|
74
|
+
// TODO (deploy): add WETH contract check for implementations that need it (check implementation constructor params)
|
75
|
+
getDeployedInfraContract({
|
76
|
+
chain,
|
77
|
+
client,
|
78
|
+
contractId: metadata.name,
|
79
|
+
constructorParams: implementationConstructorParams,
|
80
|
+
publisher: metadata.publisher,
|
81
|
+
version: metadata.version,
|
82
|
+
}).then((c) =>
|
83
|
+
c
|
84
|
+
? null
|
85
|
+
: ({
|
86
|
+
type: "implementation",
|
87
|
+
contractId: metadata.name,
|
88
|
+
} as const),
|
89
|
+
),
|
90
|
+
...modules.map((m) =>
|
91
|
+
getDeployedInfraContractFromMetadata({
|
92
|
+
chain,
|
93
|
+
client,
|
94
|
+
contractMetadata: m,
|
95
|
+
}).then((c) =>
|
96
|
+
c
|
97
|
+
? null
|
98
|
+
: ({
|
99
|
+
type: "module",
|
100
|
+
contractId: m.name,
|
101
|
+
} as const),
|
102
|
+
),
|
103
|
+
),
|
104
|
+
]);
|
105
|
+
results.push({ type: "proxy", contractId: metadata.name });
|
106
|
+
return results.filter((r) => r !== null);
|
107
|
+
}
|
108
|
+
|
109
|
+
return [{ type: "implementation", contractId: metadata.name }];
|
110
|
+
}
|
@@ -1,6 +1,5 @@
|
|
1
|
-
import Clipboard from "@react-native-clipboard/clipboard";
|
2
1
|
import { useState } from "react";
|
3
|
-
import { StyleSheet, TouchableOpacity } from "react-native";
|
2
|
+
import { Clipboard, StyleSheet, TouchableOpacity } from "react-native";
|
4
3
|
import type { Account } from "../../../../wallets/interfaces/wallet.js";
|
5
4
|
import type { Theme } from "../../../core/design-system/index.js";
|
6
5
|
import { spacing } from "../../design-system/index.js";
|
@@ -20,7 +19,6 @@ export const Address = ({ account, theme, addressOrENS }: AddressProps) => {
|
|
20
19
|
<TouchableOpacity
|
21
20
|
style={styles.addressContainer}
|
22
21
|
onPress={() => {
|
23
|
-
// @ts-ignore - missing native types
|
24
22
|
Clipboard.setString(account.address);
|
25
23
|
setCopySuccess(true);
|
26
24
|
setTimeout(() => {
|
@@ -10,6 +10,7 @@ import {
|
|
10
10
|
} from "@radix-ui/react-icons";
|
11
11
|
import { useQuery } from "@tanstack/react-query";
|
12
12
|
import { useContext, useEffect, useState } from "react";
|
13
|
+
import { trackPayEvent } from "../../../../analytics/track.js";
|
13
14
|
import type { Chain } from "../../../../chains/types.js";
|
14
15
|
import type { ThirdwebClient } from "../../../../client/client.js";
|
15
16
|
import { getContract } from "../../../../contract/contract.js";
|
@@ -568,6 +569,12 @@ function DetailsModal(props: {
|
|
568
569
|
flex: 1,
|
569
570
|
}}
|
570
571
|
onClick={() => {
|
572
|
+
trackPayEvent({
|
573
|
+
event: "details_modal_buy_click",
|
574
|
+
client: client,
|
575
|
+
walletAddress: activeAccount?.address,
|
576
|
+
walletType: activeWallet?.id,
|
577
|
+
});
|
571
578
|
setScreen("buy");
|
572
579
|
}}
|
573
580
|
>
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { IdCardIcon } from "@radix-ui/react-icons";
|
2
2
|
import { useCallback, useMemo, useState } from "react";
|
3
|
+
import { trackPayEvent } from "../../../../../../analytics/track.js";
|
3
4
|
import type { Chain } from "../../../../../../chains/types.js";
|
4
5
|
import type { ThirdwebClient } from "../../../../../../client/client.js";
|
5
6
|
import { NATIVE_TOKEN_ADDRESS } from "../../../../../../constants/addresses.js";
|
@@ -528,7 +529,13 @@ function BuyScreenContent(props: BuyScreenContentProps) {
|
|
528
529
|
}}
|
529
530
|
>
|
530
531
|
{screen.id === "select-payment-method" && (
|
531
|
-
<PaymentMethodSelection
|
532
|
+
<PaymentMethodSelection
|
533
|
+
mode={payOptions.mode}
|
534
|
+
client={client}
|
535
|
+
walletAddress={payer.account.address}
|
536
|
+
walletType={payer.wallet.id}
|
537
|
+
setScreen={(id) => setScreen({ id })}
|
538
|
+
/>
|
532
539
|
)}
|
533
540
|
|
534
541
|
{screen.id === "select-wallet" && (
|
@@ -891,7 +898,11 @@ function TokenSelectedLayout(props: {
|
|
891
898
|
}
|
892
899
|
|
893
900
|
function PaymentMethodSelection(props: {
|
901
|
+
client: ThirdwebClient;
|
902
|
+
walletAddress: string;
|
903
|
+
walletType: string;
|
894
904
|
setScreen: (screenId: "select-wallet" | "buy-with-fiat") => void;
|
905
|
+
mode?: "transaction" | "direct_payment" | "fund_wallet";
|
895
906
|
}) {
|
896
907
|
return (
|
897
908
|
<Container animate="fadein">
|
@@ -900,7 +911,15 @@ function PaymentMethodSelection(props: {
|
|
900
911
|
<Button
|
901
912
|
variant="outline"
|
902
913
|
bg="tertiaryBg"
|
903
|
-
onClick={() =>
|
914
|
+
onClick={() => {
|
915
|
+
trackPayEvent({
|
916
|
+
event: `pay_with_credit_card_${props.mode || "unknown"}_mode`,
|
917
|
+
client: props.client,
|
918
|
+
walletAddress: props.walletAddress,
|
919
|
+
walletType: props.walletType,
|
920
|
+
});
|
921
|
+
props.setScreen("buy-with-fiat");
|
922
|
+
}}
|
904
923
|
gap="sm"
|
905
924
|
style={{
|
906
925
|
justifyContent: "flex-start",
|
@@ -928,7 +947,16 @@ function PaymentMethodSelection(props: {
|
|
928
947
|
<Button
|
929
948
|
variant="outline"
|
930
949
|
bg="tertiaryBg"
|
931
|
-
onClick={() =>
|
950
|
+
onClick={() => {
|
951
|
+
trackPayEvent({
|
952
|
+
event: `pay_with_crypto_${props.mode || "unknown"}_mode`,
|
953
|
+
client: props.client,
|
954
|
+
walletAddress: props.walletAddress,
|
955
|
+
walletType: props.walletType,
|
956
|
+
});
|
957
|
+
|
958
|
+
props.setScreen("select-wallet");
|
959
|
+
}}
|
932
960
|
style={{
|
933
961
|
justifyContent: "flex-start",
|
934
962
|
}}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { useQuery } from "@tanstack/react-query";
|
2
|
+
import { trackPayEvent } from "../../../../../../analytics/track.js";
|
2
3
|
import type { Chain } from "../../../../../../chains/types.js";
|
3
4
|
import type { ThirdwebClient } from "../../../../../../client/client.js";
|
4
5
|
import { NATIVE_TOKEN_ADDRESS } from "../../../../../../constants/addresses.js";
|
@@ -242,6 +243,12 @@ export function DirectPaymentModeScreen(props: {
|
|
242
243
|
variant="accent"
|
243
244
|
fullWidth
|
244
245
|
onClick={() => {
|
246
|
+
trackPayEvent({
|
247
|
+
event: "choose_payment_method_direct_payment_mode",
|
248
|
+
client,
|
249
|
+
walletAddress: payerAccount.address,
|
250
|
+
walletType: activeWallet?.id,
|
251
|
+
});
|
245
252
|
onContinue(totalCost, paymentInfo.chain, token);
|
246
253
|
}}
|
247
254
|
>
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { trackPayEvent } from "../../../../../../analytics/track.js";
|
1
2
|
import type { Chain } from "../../../../../../chains/types.js";
|
2
3
|
import type { ThirdwebClient } from "../../../../../../client/client.js";
|
3
4
|
import { NATIVE_TOKEN_ADDRESS } from "../../../../../../constants/addresses.js";
|
@@ -225,6 +226,12 @@ export function TransactionModeScreen(props: {
|
|
225
226
|
) {
|
226
227
|
totalCostWei += transactionCostAndData.gasCostWei;
|
227
228
|
}
|
229
|
+
trackPayEvent({
|
230
|
+
event: "choose_payment_method_transaction_mode",
|
231
|
+
client,
|
232
|
+
walletAddress: payerAccount.address,
|
233
|
+
walletType: activeWallet?.id,
|
234
|
+
});
|
228
235
|
onContinue(
|
229
236
|
toTokens(totalCostWei, transactionCostAndData.decimals),
|
230
237
|
payUiOptions.transaction.chain,
|