thirdweb 5.83.2-nightly-332536bdee05b6fb3b36d33761381826279b48f6-20250113000321 → 5.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ai/chat.js +29 -0
- package/dist/cjs/ai/chat.js.map +1 -0
- package/dist/cjs/ai/common.js +69 -0
- package/dist/cjs/ai/common.js.map +1 -0
- package/dist/cjs/ai/execute.js +43 -0
- package/dist/cjs/ai/execute.js.map +1 -0
- package/dist/cjs/ai/index.js +8 -0
- package/dist/cjs/ai/index.js.map +1 -0
- package/dist/cjs/auth/is-erc6492-signature.js +2 -2
- package/dist/cjs/auth/is-erc6492-signature.js.map +1 -1
- package/dist/cjs/auth/parse-erc6492-signature.js +10 -4
- package/dist/cjs/auth/parse-erc6492-signature.js.map +1 -1
- package/dist/cjs/auth/verify-hash.js +12 -11
- package/dist/cjs/auth/verify-hash.js.map +1 -1
- package/dist/cjs/auth/verify-signature.js +13 -5
- package/dist/cjs/auth/verify-signature.js.map +1 -1
- package/dist/cjs/auth/verify-typed-data.js +2 -2
- package/dist/cjs/auth/verify-typed-data.js.map +1 -1
- package/dist/cjs/contract/deployment/utils/create-2-factory.js +4 -3
- package/dist/cjs/contract/deployment/utils/create-2-factory.js.map +1 -1
- package/dist/cjs/contract/verification/constructor-params.js +5 -12
- package/dist/cjs/contract/verification/constructor-params.js.map +1 -1
- package/dist/cjs/exports/ai.js +5 -0
- package/dist/cjs/exports/ai.js.map +1 -0
- package/dist/cjs/exports/utils.js +9 -6
- package/dist/cjs/exports/utils.js.map +1 -1
- package/dist/cjs/exports/wallets/engine.js +6 -0
- package/dist/cjs/exports/wallets/engine.js.map +1 -0
- package/dist/cjs/exports/wallets.js +3 -1
- package/dist/cjs/exports/wallets.js.map +1 -1
- package/dist/cjs/extensions/ens/resolve-l2-name.js +10 -3
- package/dist/cjs/extensions/ens/resolve-l2-name.js.map +1 -1
- package/dist/cjs/extensions/erc1155/read/getNFTs.js +2 -2
- package/dist/cjs/extensions/erc1155/read/getNFTs.js.map +1 -1
- package/dist/cjs/extensions/erc1155/write/mintTo.js +2 -2
- package/dist/cjs/extensions/erc1155/write/mintTo.js.map +1 -1
- package/dist/cjs/extensions/erc1155/write/mintToBatch.js +2 -2
- package/dist/cjs/extensions/erc1155/write/mintToBatch.js.map +1 -1
- package/dist/cjs/extensions/erc1155/write/sigMint.js +2 -2
- package/dist/cjs/extensions/erc1155/write/sigMint.js.map +1 -1
- package/dist/cjs/extensions/modules/ClaimableERC1155/setClaimConditions.js +3 -2
- package/dist/cjs/extensions/modules/ClaimableERC1155/setClaimConditions.js.map +1 -1
- package/dist/cjs/extensions/modules/MintableERC1155/mintWithRole.js +2 -2
- package/dist/cjs/extensions/modules/MintableERC1155/mintWithRole.js.map +1 -1
- package/dist/cjs/extensions/modules/MintableERC1155/mintWithSignature.js +2 -2
- package/dist/cjs/extensions/modules/MintableERC1155/mintWithSignature.js.map +1 -1
- package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js +10 -131
- package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
- package/dist/cjs/react/core/hooks/wallets/useSendToken.js +2 -1
- package/dist/cjs/react/core/hooks/wallets/useSendToken.js.map +1 -1
- package/dist/cjs/react/native/hooks/wallets/useAutoConnect.js.map +1 -1
- package/dist/cjs/react/web/hooks/wallets/useAutoConnect.js +1 -1
- package/dist/cjs/react/web/hooks/wallets/useAutoConnect.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +3 -1
- package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +2 -1
- package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/useConnectModal.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/useConnectModal.js.map +1 -1
- package/dist/cjs/react/web/wallets/in-app/WalletAuth.js +1 -1
- package/dist/cjs/react/web/wallets/in-app/WalletAuth.js.map +1 -1
- package/dist/cjs/utils/abi/encodeAbiParameters.js +10 -11
- package/dist/cjs/utils/abi/encodeAbiParameters.js.map +1 -1
- package/dist/cjs/utils/ens/isValidENSName.js +50 -0
- package/dist/cjs/utils/ens/isValidENSName.js.map +1 -0
- package/dist/cjs/utils/extensions/drops/convert-quantity.js +2 -2
- package/dist/cjs/utils/extensions/drops/convert-quantity.js.map +1 -1
- package/dist/cjs/utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.js +3 -3
- package/dist/cjs/utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.js.map +1 -1
- package/dist/cjs/utils/timeoutPromise.js.map +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/connection/autoConnect.js +54 -0
- package/dist/cjs/wallets/connection/autoConnect.js.map +1 -0
- package/dist/cjs/wallets/connection/autoConnectCore.js +135 -0
- package/dist/cjs/wallets/connection/autoConnectCore.js.map +1 -0
- package/dist/cjs/wallets/connection/types.js.map +1 -0
- package/dist/cjs/{react/web/wallets → wallets}/defaultWallets.js +2 -2
- package/dist/cjs/wallets/defaultWallets.js.map +1 -0
- package/dist/cjs/wallets/engine/index.js +143 -0
- package/dist/cjs/wallets/engine/index.js.map +1 -0
- package/dist/cjs/wallets/in-app/web/lib/get-url-token.js +1 -1
- package/dist/cjs/wallets/in-app/web/lib/get-url-token.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/signing.js +1 -1
- package/dist/esm/ai/chat.js +26 -0
- package/dist/esm/ai/chat.js.map +1 -0
- package/dist/esm/ai/common.js +66 -0
- package/dist/esm/ai/common.js.map +1 -0
- package/dist/esm/ai/execute.js +40 -0
- package/dist/esm/ai/execute.js.map +1 -0
- package/dist/esm/ai/index.js +3 -0
- package/dist/esm/ai/index.js.map +1 -0
- package/dist/esm/auth/is-erc6492-signature.js +2 -2
- package/dist/esm/auth/is-erc6492-signature.js.map +1 -1
- package/dist/esm/auth/parse-erc6492-signature.js +10 -4
- package/dist/esm/auth/parse-erc6492-signature.js.map +1 -1
- package/dist/esm/auth/verify-hash.js +12 -11
- package/dist/esm/auth/verify-hash.js.map +1 -1
- package/dist/esm/auth/verify-signature.js +13 -5
- package/dist/esm/auth/verify-signature.js.map +1 -1
- package/dist/esm/auth/verify-typed-data.js +2 -2
- package/dist/esm/auth/verify-typed-data.js.map +1 -1
- package/dist/esm/contract/deployment/utils/create-2-factory.js +4 -3
- package/dist/esm/contract/deployment/utils/create-2-factory.js.map +1 -1
- package/dist/esm/contract/verification/constructor-params.js +5 -12
- package/dist/esm/contract/verification/constructor-params.js.map +1 -1
- package/dist/esm/exports/ai.js +2 -0
- package/dist/esm/exports/ai.js.map +1 -0
- package/dist/esm/exports/utils.js +3 -1
- package/dist/esm/exports/utils.js.map +1 -1
- package/dist/esm/exports/wallets/engine.js +2 -0
- package/dist/esm/exports/wallets/engine.js.map +1 -0
- package/dist/esm/exports/wallets.js +1 -0
- package/dist/esm/exports/wallets.js.map +1 -1
- package/dist/esm/extensions/ens/resolve-l2-name.js +11 -4
- package/dist/esm/extensions/ens/resolve-l2-name.js.map +1 -1
- package/dist/esm/extensions/erc1155/read/getNFTs.js +1 -1
- package/dist/esm/extensions/erc1155/read/getNFTs.js.map +1 -1
- package/dist/esm/extensions/erc1155/write/mintTo.js +1 -1
- package/dist/esm/extensions/erc1155/write/mintTo.js.map +1 -1
- package/dist/esm/extensions/erc1155/write/mintToBatch.js +1 -1
- package/dist/esm/extensions/erc1155/write/mintToBatch.js.map +1 -1
- package/dist/esm/extensions/erc1155/write/sigMint.js +1 -1
- package/dist/esm/extensions/erc1155/write/sigMint.js.map +1 -1
- package/dist/esm/extensions/modules/ClaimableERC1155/setClaimConditions.js +2 -1
- package/dist/esm/extensions/modules/ClaimableERC1155/setClaimConditions.js.map +1 -1
- package/dist/esm/extensions/modules/MintableERC1155/mintWithRole.js +1 -1
- package/dist/esm/extensions/modules/MintableERC1155/mintWithRole.js.map +1 -1
- package/dist/esm/extensions/modules/MintableERC1155/mintWithSignature.js +1 -1
- package/dist/esm/extensions/modules/MintableERC1155/mintWithSignature.js.map +1 -1
- package/dist/esm/react/core/hooks/wallets/useAutoConnect.js +10 -130
- package/dist/esm/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
- package/dist/esm/react/core/hooks/wallets/useSendToken.js +2 -1
- package/dist/esm/react/core/hooks/wallets/useSendToken.js.map +1 -1
- package/dist/esm/react/native/hooks/wallets/useAutoConnect.js.map +1 -1
- package/dist/esm/react/web/hooks/wallets/useAutoConnect.js +1 -1
- package/dist/esm/react/web/hooks/wallets/useAutoConnect.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +3 -1
- package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +2 -1
- package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/useConnectModal.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/useConnectModal.js.map +1 -1
- package/dist/esm/react/web/wallets/in-app/WalletAuth.js +1 -1
- package/dist/esm/react/web/wallets/in-app/WalletAuth.js.map +1 -1
- package/dist/esm/utils/abi/encodeAbiParameters.js +10 -11
- package/dist/esm/utils/abi/encodeAbiParameters.js.map +1 -1
- package/dist/esm/utils/ens/isValidENSName.js +47 -0
- package/dist/esm/utils/ens/isValidENSName.js.map +1 -0
- package/dist/esm/utils/extensions/drops/convert-quantity.js +1 -1
- package/dist/esm/utils/extensions/drops/convert-quantity.js.map +1 -1
- package/dist/esm/utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.js +1 -1
- package/dist/esm/utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.js.map +1 -1
- package/dist/esm/utils/timeoutPromise.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/connection/autoConnect.js +50 -0
- package/dist/esm/wallets/connection/autoConnect.js.map +1 -0
- package/dist/esm/wallets/connection/autoConnectCore.js +130 -0
- package/dist/esm/wallets/connection/autoConnectCore.js.map +1 -0
- package/dist/esm/wallets/connection/types.js.map +1 -0
- package/dist/esm/{react/web/wallets → wallets}/defaultWallets.js +2 -2
- package/dist/esm/wallets/defaultWallets.js.map +1 -0
- package/dist/esm/wallets/engine/index.js +140 -0
- package/dist/esm/wallets/engine/index.js.map +1 -0
- package/dist/esm/wallets/in-app/web/lib/get-url-token.js +1 -1
- package/dist/esm/wallets/in-app/web/lib/get-url-token.js.map +1 -1
- package/dist/esm/wallets/smart/lib/signing.js +1 -1
- package/dist/types/ai/chat.d.ts +24 -0
- package/dist/types/ai/chat.d.ts.map +1 -0
- package/dist/types/ai/common.d.ts +22 -0
- package/dist/types/ai/common.d.ts.map +1 -0
- package/dist/types/ai/execute.d.ts +29 -0
- package/dist/types/ai/execute.d.ts.map +1 -0
- package/dist/types/ai/index.d.ts +4 -0
- package/dist/types/ai/index.d.ts.map +1 -0
- package/dist/types/auth/parse-erc6492-signature.d.ts.map +1 -1
- package/dist/types/auth/verify-hash.d.ts +2 -2
- package/dist/types/auth/verify-hash.d.ts.map +1 -1
- package/dist/types/auth/verify-signature.d.ts +6 -3
- package/dist/types/auth/verify-signature.d.ts.map +1 -1
- package/dist/types/auth/verify-typed-data.d.ts +5 -4
- package/dist/types/auth/verify-typed-data.d.ts.map +1 -1
- package/dist/types/contract/deployment/utils/create-2-factory.d.ts.map +1 -1
- package/dist/types/contract/verification/constructor-params.d.ts +2 -2
- package/dist/types/contract/verification/constructor-params.d.ts.map +1 -1
- package/dist/types/event/types.d.ts +3 -2
- package/dist/types/event/types.d.ts.map +1 -1
- package/dist/types/exports/ai.d.ts +2 -0
- package/dist/types/exports/ai.d.ts.map +1 -0
- package/dist/types/exports/react.d.ts +1 -1
- package/dist/types/exports/react.d.ts.map +1 -1
- package/dist/types/exports/react.native.d.ts +1 -1
- package/dist/types/exports/react.native.d.ts.map +1 -1
- package/dist/types/exports/utils.d.ts +2 -1
- package/dist/types/exports/utils.d.ts.map +1 -1
- package/dist/types/exports/wallets/engine.d.ts +2 -0
- package/dist/types/exports/wallets/engine.d.ts.map +1 -0
- package/dist/types/exports/wallets.d.ts +2 -0
- package/dist/types/exports/wallets.d.ts.map +1 -1
- package/dist/types/extensions/ens/resolve-l2-name.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/write/mintTo.d.ts +1 -1
- package/dist/types/extensions/erc1155/write/mintTo.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/write/mintToBatch.d.ts +1 -1
- package/dist/types/extensions/erc1155/write/mintToBatch.d.ts.map +1 -1
- package/dist/types/extensions/modules/ClaimableERC1155/setClaimConditions.d.ts.map +1 -1
- package/dist/types/extensions/modules/MintableERC1155/mintWithRole.d.ts +1 -1
- package/dist/types/extensions/modules/MintableERC1155/mintWithRole.d.ts.map +1 -1
- package/dist/types/extensions/modules/MintableERC1155/mintWithSignature.d.ts +1 -1
- package/dist/types/extensions/modules/MintableERC1155/mintWithSignature.d.ts.map +1 -1
- package/dist/types/react/core/hooks/wallets/useAutoConnect.d.ts +1 -13
- package/dist/types/react/core/hooks/wallets/useAutoConnect.d.ts.map +1 -1
- package/dist/types/react/core/hooks/wallets/useSendToken.d.ts.map +1 -1
- package/dist/types/react/native/hooks/wallets/useAutoConnect.d.ts +1 -1
- package/dist/types/react/native/hooks/wallets/useAutoConnect.d.ts.map +1 -1
- package/dist/types/react/native/ui/AutoConnect/AutoConnect.d.ts +1 -1
- package/dist/types/react/web/hooks/wallets/useAutoConnect.d.ts +1 -1
- package/dist/types/react/web/hooks/wallets/useAutoConnect.d.ts.map +1 -1
- package/dist/types/react/web/ui/AutoConnect/AutoConnect.d.ts +1 -1
- package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts +2 -0
- package/dist/types/react/web/ui/ConnectWallet/ConnectButton.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/ConnectWallet/screens/WalletSwitcherConnectionScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/useConnectModal.d.ts.map +1 -1
- package/dist/types/react/web/wallets/in-app/WalletAuth.d.ts.map +1 -1
- package/dist/types/utils/ens/isValidENSName.d.ts +14 -0
- package/dist/types/utils/ens/isValidENSName.d.ts.map +1 -0
- package/dist/types/utils/timeoutPromise.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/connection/autoConnect.d.ts +27 -0
- package/dist/types/wallets/connection/autoConnect.d.ts.map +1 -0
- package/dist/types/wallets/connection/autoConnectCore.d.ts +32 -0
- package/dist/types/wallets/connection/autoConnectCore.d.ts.map +1 -0
- package/dist/types/{react/core/hooks → wallets}/connection/types.d.ts +5 -5
- package/dist/types/wallets/connection/types.d.ts.map +1 -0
- package/dist/types/wallets/defaultWallets.d.ts +11 -0
- package/dist/types/wallets/defaultWallets.d.ts.map +1 -0
- package/dist/types/wallets/engine/index.d.ts +54 -0
- package/dist/types/wallets/engine/index.d.ts.map +1 -0
- package/dist/types/wallets/smart/lib/signing.d.ts +1 -1
- package/package.json +9 -1
- package/src/ai/chat.test.ts +31 -0
- package/src/ai/chat.ts +26 -0
- package/src/ai/common.ts +114 -0
- package/src/ai/execute.test.ts +43 -0
- package/src/ai/execute.ts +44 -0
- package/src/ai/index.ts +3 -0
- package/src/auth/is-erc6492-signature.ts +2 -2
- package/src/auth/parse-erc6492-signature.ts +10 -4
- package/src/auth/verify-hash.ts +16 -20
- package/src/auth/verify-signature.test.ts +48 -2
- package/src/auth/verify-signature.ts +24 -7
- package/src/auth/verify-typed-data.ts +9 -7
- package/src/contract/deployment/utils/create-2-factory.ts +4 -3
- package/src/contract/verification/constructor-params.ts +8 -15
- package/src/event/types.ts +6 -5
- package/src/exports/ai.ts +1 -0
- package/src/exports/react.native.ts +1 -1
- package/src/exports/react.ts +1 -1
- package/src/exports/utils.ts +4 -1
- package/src/exports/wallets/engine.ts +4 -0
- package/src/exports/wallets.ts +2 -0
- package/src/extensions/ens/resolve-l2-name.ts +21 -5
- package/src/extensions/erc1155/read/getNFTs.ts +1 -1
- package/src/extensions/erc1155/write/mintTo.ts +1 -1
- package/src/extensions/erc1155/write/mintToBatch.ts +1 -1
- package/src/extensions/erc1155/write/sigMint.ts +1 -1
- package/src/extensions/modules/ClaimableERC1155/setClaimConditions.ts +2 -1
- package/src/extensions/modules/MintableERC1155/mintWithRole.ts +1 -1
- package/src/extensions/modules/MintableERC1155/mintWithSignature.ts +1 -1
- package/src/react/core/hooks/wallets/useAutoConnect.ts +12 -158
- package/src/react/core/hooks/wallets/useAutoConnectCore.test.tsx +1 -31
- package/src/react/core/hooks/wallets/useSendToken.ts +2 -1
- package/src/react/native/hooks/wallets/useAutoConnect.ts +1 -1
- package/src/react/native/ui/AutoConnect/AutoConnect.tsx +1 -1
- package/src/react/web/hooks/wallets/useAutoConnect.ts +2 -2
- package/src/react/web/ui/AutoConnect/AutoConnect.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +3 -1
- package/src/react/web/ui/ConnectWallet/Modal/ConnectEmbed.tsx +2 -1
- package/src/react/web/ui/ConnectWallet/screens/WalletSwitcherConnectionScreen.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/useConnectModal.tsx +1 -1
- package/src/react/web/wallets/in-app/WalletAuth.tsx +1 -1
- package/src/utils/abi/encodeAbiParameters.ts +15 -11
- package/src/utils/ens/isValidENSName.test.ts +39 -0
- package/src/utils/ens/isValidENSName.ts +54 -0
- package/src/utils/extensions/drops/convert-quantity.ts +1 -1
- package/src/utils/extensions/drops/get-multicall-set-claim-claim-conditon-transactions.ts +1 -1
- package/src/version.ts +1 -1
- package/src/wallets/connection/autoConnect.test.ts +67 -0
- package/src/wallets/connection/autoConnect.ts +58 -0
- package/src/wallets/connection/autoConnectCore.test.ts +403 -0
- package/src/wallets/connection/autoConnectCore.ts +184 -0
- package/src/{react/core/hooks → wallets}/connection/types.ts +5 -5
- package/src/{react/web/wallets → wallets}/defaultWallets.ts +5 -10
- package/src/wallets/engine/engine-account.test.ts +69 -0
- package/src/wallets/engine/index.ts +198 -0
- package/src/wallets/in-app/web/lib/get-url-token.ts +1 -1
- package/src/wallets/smart/lib/signing.ts +1 -1
- package/src/wallets/smart/smart-wallet-integration.test.ts +1 -0
- package/dist/cjs/react/core/hooks/connection/types.js.map +0 -1
- package/dist/cjs/react/core/utils/timeoutPromise.js.map +0 -1
- package/dist/cjs/react/web/wallets/defaultWallets.js.map +0 -1
- package/dist/esm/react/core/hooks/connection/types.js.map +0 -1
- package/dist/esm/react/core/utils/timeoutPromise.js.map +0 -1
- package/dist/esm/react/web/wallets/defaultWallets.js.map +0 -1
- package/dist/types/react/core/hooks/connection/types.d.ts.map +0 -1
- package/dist/types/react/core/utils/timeoutPromise.d.ts.map +0 -1
- package/dist/types/react/web/wallets/defaultWallets.d.ts +0 -11
- package/dist/types/react/web/wallets/defaultWallets.d.ts.map +0 -1
- /package/dist/cjs/{react/core/utils → utils}/timeoutPromise.js +0 -0
- /package/dist/cjs/{react/core/hooks → wallets}/connection/types.js +0 -0
- /package/dist/esm/{react/core/utils → utils}/timeoutPromise.js +0 -0
- /package/dist/esm/{react/core/hooks → wallets}/connection/types.js +0 -0
- /package/dist/types/{react/core/utils → utils}/timeoutPromise.d.ts +0 -0
- /package/src/{react/core/utils → utils}/timeoutPromise.test.ts +0 -0
- /package/src/{react/core/utils → utils}/timeoutPromise.ts +0 -0
package/src/ai/common.ts
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
import type { Chain } from "../chains/types.js";
|
2
|
+
import { getCachedChain } from "../chains/utils.js";
|
3
|
+
import type { ThirdwebClient } from "../client/client.js";
|
4
|
+
import {
|
5
|
+
type PreparedTransaction,
|
6
|
+
prepareTransaction,
|
7
|
+
} from "../transaction/prepare-transaction.js";
|
8
|
+
import type { Address } from "../utils/address.js";
|
9
|
+
import { toBigInt } from "../utils/bigint.js";
|
10
|
+
import type { Hex } from "../utils/encoding/hex.js";
|
11
|
+
import { getClientFetch } from "../utils/fetch.js";
|
12
|
+
import type { Account } from "../wallets/interfaces/wallet.js";
|
13
|
+
|
14
|
+
const NEBULA_API_URL = "https://nebula-api.thirdweb.com";
|
15
|
+
|
16
|
+
export type Input = {
|
17
|
+
client: ThirdwebClient;
|
18
|
+
prompt: string | string[];
|
19
|
+
account?: Account;
|
20
|
+
context?: {
|
21
|
+
chains?: Chain[];
|
22
|
+
walletAddresses?: string[];
|
23
|
+
contractAddresses?: string[];
|
24
|
+
};
|
25
|
+
sessionId?: string;
|
26
|
+
};
|
27
|
+
|
28
|
+
export type Output = {
|
29
|
+
message: string;
|
30
|
+
sessionId: string;
|
31
|
+
transactions: PreparedTransaction[];
|
32
|
+
};
|
33
|
+
|
34
|
+
type ApiResponse = {
|
35
|
+
message: string;
|
36
|
+
session_id: string;
|
37
|
+
actions?: {
|
38
|
+
type: "init" | "presence" | "sign_transaction";
|
39
|
+
source: string;
|
40
|
+
data: string;
|
41
|
+
}[];
|
42
|
+
};
|
43
|
+
|
44
|
+
export async function nebulaFetch(
|
45
|
+
mode: "execute" | "chat",
|
46
|
+
input: Input,
|
47
|
+
): Promise<Output> {
|
48
|
+
const fetch = getClientFetch(input.client);
|
49
|
+
const response = await fetch(`${NEBULA_API_URL}/${mode}`, {
|
50
|
+
method: "POST",
|
51
|
+
headers: {
|
52
|
+
"Content-Type": "application/json",
|
53
|
+
},
|
54
|
+
body: JSON.stringify({
|
55
|
+
message: input.prompt, // TODO: support array of messages
|
56
|
+
session_id: input.sessionId,
|
57
|
+
...(input.account
|
58
|
+
? {
|
59
|
+
execute_config: {
|
60
|
+
mode: "client",
|
61
|
+
signer_wallet_address: input.account.address,
|
62
|
+
},
|
63
|
+
}
|
64
|
+
: {}),
|
65
|
+
...(input.context
|
66
|
+
? {
|
67
|
+
context_filter: {
|
68
|
+
chain_ids:
|
69
|
+
input.context.chains?.map((c) => c.id.toString()) || [],
|
70
|
+
signer_wallet_address: input.context.walletAddresses || [],
|
71
|
+
contract_addresses: input.context.contractAddresses || [],
|
72
|
+
},
|
73
|
+
}
|
74
|
+
: {}),
|
75
|
+
}),
|
76
|
+
});
|
77
|
+
if (!response.ok) {
|
78
|
+
const error = await response.text();
|
79
|
+
throw new Error(`Nebula API error: ${error}`);
|
80
|
+
}
|
81
|
+
const data = (await response.json()) as ApiResponse;
|
82
|
+
|
83
|
+
// parse transactions if present
|
84
|
+
let transactions: PreparedTransaction[] = [];
|
85
|
+
if (data.actions) {
|
86
|
+
transactions = data.actions
|
87
|
+
.map((action) => {
|
88
|
+
// only parse sign_transaction actions
|
89
|
+
if (action.type === "sign_transaction") {
|
90
|
+
const tx = JSON.parse(action.data) as {
|
91
|
+
chainId: number;
|
92
|
+
to: Address | undefined;
|
93
|
+
value: Hex;
|
94
|
+
data: Hex;
|
95
|
+
};
|
96
|
+
return prepareTransaction({
|
97
|
+
chain: getCachedChain(tx.chainId),
|
98
|
+
client: input.client,
|
99
|
+
to: tx.to,
|
100
|
+
value: tx.value ? toBigInt(tx.value) : undefined,
|
101
|
+
data: tx.data,
|
102
|
+
});
|
103
|
+
}
|
104
|
+
return undefined;
|
105
|
+
})
|
106
|
+
.filter((tx) => tx !== undefined);
|
107
|
+
}
|
108
|
+
|
109
|
+
return {
|
110
|
+
message: data.message,
|
111
|
+
sessionId: data.session_id,
|
112
|
+
transactions,
|
113
|
+
};
|
114
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
2
|
+
import { TEST_CLIENT } from "../../test/src/test-clients.js";
|
3
|
+
import { TEST_ACCOUNT_A, TEST_ACCOUNT_B } from "../../test/src/test-wallets.js";
|
4
|
+
import { sepolia } from "../chains/chain-definitions/sepolia.js";
|
5
|
+
import { getContract } from "../contract/contract.js";
|
6
|
+
import * as Nebula from "./index.js";
|
7
|
+
|
8
|
+
describe("execute", () => {
|
9
|
+
it("should execute a tx", async () => {
|
10
|
+
await expect(
|
11
|
+
Nebula.execute({
|
12
|
+
client: TEST_CLIENT,
|
13
|
+
prompt: `send 0.0001 ETH to ${TEST_ACCOUNT_B.address}`,
|
14
|
+
account: TEST_ACCOUNT_A,
|
15
|
+
context: {
|
16
|
+
chains: [sepolia],
|
17
|
+
walletAddresses: [TEST_ACCOUNT_A.address],
|
18
|
+
},
|
19
|
+
}),
|
20
|
+
).rejects.toThrow(/insufficient funds for gas/); // shows that the tx was sent
|
21
|
+
});
|
22
|
+
|
23
|
+
// TODO make this work reliably
|
24
|
+
it.skip("should execute a contract call", async () => {
|
25
|
+
const nftContract = getContract({
|
26
|
+
client: TEST_CLIENT,
|
27
|
+
chain: sepolia,
|
28
|
+
address: "0xe2cb0eb5147b42095c2FfA6F7ec953bb0bE347D8",
|
29
|
+
});
|
30
|
+
|
31
|
+
const response = await Nebula.execute({
|
32
|
+
client: TEST_CLIENT,
|
33
|
+
prompt: `approve 1 token of token id 0 to ${TEST_ACCOUNT_B.address} using the approve function`,
|
34
|
+
account: TEST_ACCOUNT_A,
|
35
|
+
context: {
|
36
|
+
chains: [nftContract.chain],
|
37
|
+
walletAddresses: [TEST_ACCOUNT_A.address],
|
38
|
+
contractAddresses: [nftContract.address],
|
39
|
+
},
|
40
|
+
});
|
41
|
+
expect(response.transactionHash).toBeDefined();
|
42
|
+
});
|
43
|
+
});
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import { sendTransaction } from "../transaction/actions/send-transaction.js";
|
2
|
+
import type { SendTransactionResult } from "../transaction/types.js";
|
3
|
+
import type { Account } from "../wallets/interfaces/wallet.js";
|
4
|
+
import { type Input, nebulaFetch } from "./common.js";
|
5
|
+
|
6
|
+
/**
|
7
|
+
* Execute a transaction based on a prompt.
|
8
|
+
*
|
9
|
+
* @param input - The input for the transaction.
|
10
|
+
* @returns The transaction hash.
|
11
|
+
* @beta
|
12
|
+
* @nebula
|
13
|
+
*
|
14
|
+
* @example
|
15
|
+
* ```ts
|
16
|
+
* import { Nebula } from "thirdweb/ai";
|
17
|
+
*
|
18
|
+
* const result = await Nebula.execute({
|
19
|
+
* client: TEST_CLIENT,
|
20
|
+
* prompt: "send 0.0001 ETH to vitalik.eth",
|
21
|
+
* account: TEST_ACCOUNT_A,
|
22
|
+
* context: {
|
23
|
+
* chains: [sepolia],
|
24
|
+
* },
|
25
|
+
* });
|
26
|
+
* ```
|
27
|
+
*/
|
28
|
+
export async function execute(
|
29
|
+
input: Input & { account: Account },
|
30
|
+
): Promise<SendTransactionResult> {
|
31
|
+
const result = await nebulaFetch("execute", input);
|
32
|
+
// TODO: optionally only return the transaction without executing it?
|
33
|
+
if (result.transactions.length === 0) {
|
34
|
+
throw new Error(result.message);
|
35
|
+
}
|
36
|
+
const tx = result.transactions[0];
|
37
|
+
if (!tx) {
|
38
|
+
throw new Error(result.message);
|
39
|
+
}
|
40
|
+
return sendTransaction({
|
41
|
+
transaction: tx,
|
42
|
+
account: input.account,
|
43
|
+
});
|
44
|
+
}
|
package/src/ai/index.ts
ADDED
@@ -1,4 +1,4 @@
|
|
1
|
-
import
|
1
|
+
import * as ox__Hex from "ox/Hex";
|
2
2
|
import type { Hex } from "../utils/encoding/hex.js";
|
3
3
|
import { ERC_6492_MAGIC_VALUE } from "./constants.js";
|
4
4
|
|
@@ -19,5 +19,5 @@ import { ERC_6492_MAGIC_VALUE } from "./constants.js";
|
|
19
19
|
* @auth
|
20
20
|
*/
|
21
21
|
export function isErc6492Signature(signature: Hex): boolean {
|
22
|
-
return
|
22
|
+
return ox__Hex.slice(signature, -32) === ERC_6492_MAGIC_VALUE;
|
23
23
|
}
|
@@ -1,4 +1,6 @@
|
|
1
|
-
import
|
1
|
+
import * as ox__AbiParameters from "ox/AbiParameters";
|
2
|
+
import * as ox__Address from "ox/Address";
|
3
|
+
import { WrappedSignature as ox__WrappedSignature } from "ox/erc6492";
|
2
4
|
import type { Hex } from "../utils/encoding/hex.js";
|
3
5
|
import type { OneOf } from "../utils/type-utils.js";
|
4
6
|
import type { Erc6492Signature } from "./types.js";
|
@@ -29,13 +31,17 @@ export type ParseErc6492SignatureReturnType = OneOf<
|
|
29
31
|
export function parseErc6492Signature(
|
30
32
|
signature: Hex,
|
31
33
|
): ParseErc6492SignatureReturnType {
|
32
|
-
if (!
|
34
|
+
if (!ox__WrappedSignature.validate(signature)) {
|
33
35
|
return { signature };
|
34
36
|
}
|
35
37
|
|
36
|
-
const [address, data, originalSignature] =
|
38
|
+
const [address, data, originalSignature] = ox__AbiParameters.decode(
|
37
39
|
[{ type: "address" }, { type: "bytes" }, { type: "bytes" }],
|
38
40
|
signature,
|
39
41
|
);
|
40
|
-
return {
|
42
|
+
return {
|
43
|
+
address: ox__Address.checksum(address),
|
44
|
+
data,
|
45
|
+
signature: originalSignature,
|
46
|
+
};
|
41
47
|
}
|
package/src/auth/verify-hash.ts
CHANGED
@@ -1,12 +1,8 @@
|
|
1
|
-
import
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
serializeSignature,
|
7
|
-
universalSignatureValidatorAbi,
|
8
|
-
universalSignatureValidatorByteCode,
|
9
|
-
} from "viem";
|
1
|
+
import * as ox__Abi from "ox/Abi";
|
2
|
+
import * as ox__AbiConstructor from "ox/AbiConstructor";
|
3
|
+
import * as ox__AbiFunction from "ox/AbiFunction";
|
4
|
+
import * as ox__Signature from "ox/Signature";
|
5
|
+
import { WrappedSignature as ox__WrappedSignature } from "ox/erc6492";
|
10
6
|
import type { Chain } from "../chains/types.js";
|
11
7
|
import type { ThirdwebClient } from "../client/client.js";
|
12
8
|
import { type ThirdwebContract, getContract } from "../contract/contract.js";
|
@@ -20,7 +16,7 @@ import { serializeErc6492Signature } from "./serialize-erc6492-signature.js";
|
|
20
16
|
|
21
17
|
export type VerifyHashParams = {
|
22
18
|
hash: Hex;
|
23
|
-
signature: string | Uint8Array | Signature;
|
19
|
+
signature: string | Uint8Array | ox__Signature.Signature;
|
24
20
|
address: string;
|
25
21
|
client: ThirdwebClient;
|
26
22
|
chain: Chain;
|
@@ -71,7 +67,7 @@ export async function verifyHash({
|
|
71
67
|
const signatureHex = (() => {
|
72
68
|
if (isHex(signature)) return signature;
|
73
69
|
if (typeof signature === "object" && "r" in signature && "s" in signature)
|
74
|
-
return
|
70
|
+
return ox__Signature.toHex(signature);
|
75
71
|
if (signature instanceof Uint8Array) return fromBytes(signature, "hex");
|
76
72
|
// We should never hit this but TS doesn't know that
|
77
73
|
throw new Error(
|
@@ -85,7 +81,7 @@ export async function verifyHash({
|
|
85
81
|
if (!accountFactory) return signatureHex;
|
86
82
|
|
87
83
|
// If this sigature was already wrapped for ERC-6492, carry on
|
88
|
-
if (
|
84
|
+
if (ox__WrappedSignature.validate(signatureHex)) return signatureHex;
|
89
85
|
|
90
86
|
// Otherwise, serialize the signature for ERC-6492 validation
|
91
87
|
return serializeErc6492Signature({
|
@@ -100,23 +96,23 @@ export async function verifyHash({
|
|
100
96
|
data: Hex;
|
101
97
|
};
|
102
98
|
const zkSyncChain = await isZkSyncChain(chain);
|
99
|
+
const abi = ox__Abi.from(ox__WrappedSignature.universalSignatureValidatorAbi);
|
103
100
|
if (zkSyncChain) {
|
104
101
|
// zksync chains dont support deploying code with eth_call
|
105
102
|
// need to call a deployed contract instead
|
106
103
|
verificationData = {
|
107
104
|
to: ZKSYNC_VALIDATOR_ADDRESS,
|
108
|
-
data:
|
109
|
-
abi
|
110
|
-
|
111
|
-
|
112
|
-
}),
|
105
|
+
data: ox__AbiFunction.encodeData(
|
106
|
+
ox__AbiFunction.fromAbi(abi, "isValidSig"),
|
107
|
+
[address, hash, wrappedSignature],
|
108
|
+
),
|
113
109
|
};
|
114
110
|
} else {
|
111
|
+
const validatorConstructor = ox__AbiConstructor.fromAbi(abi);
|
115
112
|
verificationData = {
|
116
|
-
data:
|
117
|
-
abi: universalSignatureValidatorAbi,
|
113
|
+
data: ox__AbiConstructor.encode(validatorConstructor, {
|
118
114
|
args: [address, hash, wrappedSignature],
|
119
|
-
bytecode:
|
115
|
+
bytecode: ox__WrappedSignature.universalSignatureValidatorBytecode,
|
120
116
|
}),
|
121
117
|
};
|
122
118
|
}
|
@@ -1,10 +1,16 @@
|
|
1
|
+
import * as ox__Bytes from "ox/Bytes";
|
1
2
|
import { describe, expect, it, test } from "vitest";
|
2
3
|
import { FORKED_ETHEREUM_CHAIN } from "../../test/src/chains.js";
|
3
4
|
import { TEST_CLIENT } from "../../test/src/test-clients.js";
|
4
5
|
import { TEST_ACCOUNT_A } from "../../test/src/test-wallets.js";
|
5
|
-
import { mainnet } from "../chains/chain-definitions/ethereum.js";
|
6
|
+
import { ethereum, mainnet } from "../chains/chain-definitions/ethereum.js";
|
6
7
|
import { sepolia } from "../chains/chain-definitions/sepolia.js";
|
7
|
-
import {
|
8
|
+
import { smartWallet } from "../wallets/smart/smart-wallet.js";
|
9
|
+
import {
|
10
|
+
verifyContractWalletSignature,
|
11
|
+
verifyEOASignature,
|
12
|
+
verifySignature,
|
13
|
+
} from "./verify-signature.js";
|
8
14
|
|
9
15
|
describe("verifyEOASignature", () => {
|
10
16
|
test("should return true for a valid signature", async () => {
|
@@ -98,3 +104,43 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
|
98
104
|
});
|
99
105
|
},
|
100
106
|
);
|
107
|
+
|
108
|
+
describe.runIf(process.env.TW_SECRET_KEY)(
|
109
|
+
"verifyContractWalletSignature",
|
110
|
+
async () => {
|
111
|
+
const message = "Hakuna matata";
|
112
|
+
const wallet = smartWallet({
|
113
|
+
chain: ethereum,
|
114
|
+
gasless: true,
|
115
|
+
});
|
116
|
+
const smartAccount = await wallet.connect({
|
117
|
+
client: TEST_CLIENT,
|
118
|
+
personalAccount: TEST_ACCOUNT_A,
|
119
|
+
});
|
120
|
+
|
121
|
+
test("should verify a smart account signature", async () => {
|
122
|
+
const rawSignature = await smartAccount.signMessage({ message });
|
123
|
+
const result = await verifyContractWalletSignature({
|
124
|
+
signature: rawSignature,
|
125
|
+
message,
|
126
|
+
address: smartAccount.address,
|
127
|
+
chain: ethereum,
|
128
|
+
client: TEST_CLIENT,
|
129
|
+
});
|
130
|
+
expect(result).toBe(true);
|
131
|
+
});
|
132
|
+
|
133
|
+
test("should verify a smart account signature as bytes", async () => {
|
134
|
+
const rawSignature = await smartAccount.signMessage({ message });
|
135
|
+
const bytesSignature = ox__Bytes.fromHex(rawSignature);
|
136
|
+
const result = await verifyContractWalletSignature({
|
137
|
+
signature: bytesSignature,
|
138
|
+
message,
|
139
|
+
address: smartAccount.address,
|
140
|
+
chain: ethereum,
|
141
|
+
client: TEST_CLIENT,
|
142
|
+
});
|
143
|
+
expect(result).toBe(true);
|
144
|
+
});
|
145
|
+
},
|
146
|
+
);
|
@@ -1,4 +1,6 @@
|
|
1
|
-
import
|
1
|
+
import * as ox__Bytes from "ox/Bytes";
|
2
|
+
import * as ox__Secp256k1 from "ox/Secp256k1";
|
3
|
+
import * as ox__Signature from "ox/Signature";
|
2
4
|
import type { Chain } from "../chains/types.js";
|
3
5
|
import type { ThirdwebClient } from "../client/client.js";
|
4
6
|
import { type Hex, isHex } from "../utils/encoding/hex.js";
|
@@ -6,12 +8,19 @@ import { hashMessage } from "../utils/hashing/hashMessage.js";
|
|
6
8
|
import type { Prettify } from "../utils/type-utils.js";
|
7
9
|
import { verifyHash } from "./verify-hash.js";
|
8
10
|
|
11
|
+
type Message = Prettify<
|
12
|
+
| string
|
13
|
+
| {
|
14
|
+
raw: Hex | Uint8Array;
|
15
|
+
}
|
16
|
+
>;
|
17
|
+
|
9
18
|
/**
|
10
19
|
* @auth
|
11
20
|
*/
|
12
21
|
export type VerifyEOASignatureParams = {
|
13
|
-
message: string |
|
14
|
-
signature: string | Uint8Array
|
22
|
+
message: string | Message;
|
23
|
+
signature: string | Uint8Array;
|
15
24
|
address: string;
|
16
25
|
};
|
17
26
|
|
@@ -39,9 +48,9 @@ export async function verifyEOASignature(options: VerifyEOASignatureParams) {
|
|
39
48
|
return false;
|
40
49
|
}
|
41
50
|
|
42
|
-
const recoveredAddress =
|
43
|
-
|
44
|
-
signature: options.signature,
|
51
|
+
const recoveredAddress = ox__Secp256k1.recoverAddress({
|
52
|
+
payload: messageHash,
|
53
|
+
signature: ox__Signature.fromHex(options.signature),
|
45
54
|
});
|
46
55
|
|
47
56
|
if (recoveredAddress.toLowerCase() === options.address.toLowerCase()) {
|
@@ -103,9 +112,17 @@ export async function verifyContractWalletSignature({
|
|
103
112
|
accountFactory,
|
104
113
|
}: VerifyContractWalletSignatureParams) {
|
105
114
|
const messageHash = hashMessage(message);
|
115
|
+
|
116
|
+
const parsedSignature = (() => {
|
117
|
+
if (ox__Bytes.validate(signature)) {
|
118
|
+
return ox__Bytes.toHex(signature);
|
119
|
+
}
|
120
|
+
return signature;
|
121
|
+
})();
|
122
|
+
|
106
123
|
return verifyHash({
|
107
124
|
hash: messageHash,
|
108
|
-
signature,
|
125
|
+
signature: parsedSignature,
|
109
126
|
address,
|
110
127
|
client,
|
111
128
|
chain,
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import type
|
2
|
-
import
|
1
|
+
import type * as ox__Signature from "ox/Signature";
|
2
|
+
import * as ox__TypedData from "ox/TypedData";
|
3
3
|
import type { Chain } from "../chains/types.js";
|
4
4
|
import type { ThirdwebClient } from "../client/client.js";
|
5
5
|
import type { Hex } from "../utils/encoding/hex.js";
|
@@ -7,12 +7,14 @@ import type { HashTypedDataParams } from "../utils/hashing/hashTypedData.js";
|
|
7
7
|
import { type VerifyHashParams, verifyHash } from "./verify-hash.js";
|
8
8
|
|
9
9
|
export type VerifyTypedDataParams<
|
10
|
-
typedData extends
|
10
|
+
typedData extends
|
11
|
+
| ox__TypedData.TypedData
|
12
|
+
| Record<string, unknown> = ox__TypedData.TypedData,
|
11
13
|
primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
|
12
14
|
> = Omit<VerifyHashParams, "hash"> &
|
13
|
-
|
15
|
+
ox__TypedData.Definition<typedData, primaryType> & {
|
14
16
|
address: string;
|
15
|
-
signature: string | Uint8Array | Signature;
|
17
|
+
signature: string | Uint8Array | ox__Signature.Signature;
|
16
18
|
client: ThirdwebClient;
|
17
19
|
chain: Chain;
|
18
20
|
accountFactory?: {
|
@@ -80,7 +82,7 @@ export type VerifyTypedDataParams<
|
|
80
82
|
* @auth
|
81
83
|
*/
|
82
84
|
export async function verifyTypedData<
|
83
|
-
typedData extends TypedData | Record<string, unknown>,
|
85
|
+
typedData extends ox__TypedData.TypedData | Record<string, unknown>,
|
84
86
|
primaryType extends keyof typedData | "EIP712Domain",
|
85
87
|
>({
|
86
88
|
address,
|
@@ -93,7 +95,7 @@ export async function verifyTypedData<
|
|
93
95
|
primaryType,
|
94
96
|
types,
|
95
97
|
}: VerifyTypedDataParams<typedData, primaryType>): Promise<boolean> {
|
96
|
-
const messageHash =
|
98
|
+
const messageHash = ox__TypedData.getSignPayload({
|
97
99
|
message,
|
98
100
|
domain,
|
99
101
|
primaryType,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import
|
1
|
+
import * as ox__ContractAddress from "ox/ContractAddress";
|
2
2
|
import { getGasPrice } from "../../../gas/get-gas-price.js";
|
3
3
|
import { eth_getBalance } from "../../../rpc/actions/eth_getBalance.js";
|
4
4
|
import { eth_sendRawTransaction } from "../../../rpc/actions/eth_sendRawTransaction.js";
|
@@ -6,6 +6,7 @@ import { getRpcClient } from "../../../rpc/rpc.js";
|
|
6
6
|
import { sendTransaction } from "../../../transaction/actions/send-transaction.js";
|
7
7
|
import { waitForReceipt } from "../../../transaction/actions/wait-for-tx-receipt.js";
|
8
8
|
import { prepareTransaction } from "../../../transaction/prepare-transaction.js";
|
9
|
+
import { getAddress } from "../../../utils/address.js";
|
9
10
|
import { isEIP155Enforced } from "../../../utils/any-evm/is-eip155-enforced.js";
|
10
11
|
import { getKeylessTransaction } from "../../../utils/any-evm/keyless-transaction.js";
|
11
12
|
import { isContractDeployed } from "../../../utils/bytecode/is-contract-deployed.js";
|
@@ -226,7 +227,7 @@ async function _getCreate2FactoryDeploymentInfo(
|
|
226
227
|
},
|
227
228
|
signature: SIGNATURE,
|
228
229
|
});
|
229
|
-
const create2FactoryAddress =
|
230
|
+
const create2FactoryAddress = ox__ContractAddress.from({
|
230
231
|
from: deploymentTransaction.signerAddress,
|
231
232
|
nonce: 0n,
|
232
233
|
});
|
@@ -234,7 +235,7 @@ async function _getCreate2FactoryDeploymentInfo(
|
|
234
235
|
return {
|
235
236
|
...deploymentTransaction,
|
236
237
|
valueToSend: gasPrice * gas,
|
237
|
-
predictedAddress: create2FactoryAddress,
|
238
|
+
predictedAddress: getAddress(create2FactoryAddress),
|
238
239
|
};
|
239
240
|
}
|
240
241
|
|
@@ -1,5 +1,6 @@
|
|
1
|
-
import type
|
2
|
-
import
|
1
|
+
import type * as ox__Abi from "ox/Abi";
|
2
|
+
import * as ox__AbiConstructor from "ox/AbiConstructor";
|
3
|
+
import * as ox__AbiParameters from "ox/AbiParameters";
|
3
4
|
import { eth_getTransactionByHash } from "../../rpc/actions/eth_getTransactionByHash.js";
|
4
5
|
import { getRpcClient } from "../../rpc/rpc.js";
|
5
6
|
import type { ThirdwebContract } from "../contract.js";
|
@@ -10,19 +11,9 @@ type FetchConstructorParamsOptions = {
|
|
10
11
|
contract: ThirdwebContract;
|
11
12
|
explorerApiUrl: string;
|
12
13
|
explorerApiKey: string;
|
13
|
-
abi: Abi;
|
14
|
+
abi: ox__Abi.Abi;
|
14
15
|
};
|
15
16
|
|
16
|
-
// TODO: move to abi helpers (?)
|
17
|
-
function extractConstructorParamsFromAbi(abi: Abi) {
|
18
|
-
for (const input of abi) {
|
19
|
-
if (input.type === "constructor") {
|
20
|
-
return input.inputs || [];
|
21
|
-
}
|
22
|
-
}
|
23
|
-
return [];
|
24
|
-
}
|
25
|
-
|
26
17
|
const RequestStatus = {
|
27
18
|
OK: "1",
|
28
19
|
NOTOK: "0",
|
@@ -37,7 +28,8 @@ const RequestStatus = {
|
|
37
28
|
export async function fetchConstructorParams(
|
38
29
|
options: FetchConstructorParamsOptions,
|
39
30
|
): Promise<string> {
|
40
|
-
const
|
31
|
+
const abiConstructor = ox__AbiConstructor.fromAbi(options.abi);
|
32
|
+
const constructorParamTypes = ox__AbiParameters.from(abiConstructor.inputs);
|
41
33
|
if (constructorParamTypes.length === 0) {
|
42
34
|
return "";
|
43
35
|
}
|
@@ -114,7 +106,8 @@ export async function fetchConstructorParams(
|
|
114
106
|
try {
|
115
107
|
// sanity check that the constructor params are valid
|
116
108
|
// TODO: should we sanity check after each attempt?
|
117
|
-
|
109
|
+
|
110
|
+
ox__AbiParameters.decode(constructorParamTypes, `0x${constructorArgs}`);
|
118
111
|
} catch {
|
119
112
|
throw new Error(
|
120
113
|
"Verifying this contract requires it to be published. Run `npx thirdweb publish` to publish this contract, then try again.",
|
package/src/event/types.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import type { AbiParameter, AbiParameterToPrimitiveType } from "abitype";
|
2
|
-
import type
|
2
|
+
import type * as ox__Hex from "ox/Hex";
|
3
|
+
import type { Log as ox__Log } from "ox/Log";
|
3
4
|
import type { Filter, MaybeRequired, Prettify } from "../utils/type-utils.js";
|
4
5
|
|
5
6
|
//////////////////////////////////////////////////////////////////////
|
@@ -83,11 +84,11 @@ type _HasUnnamedAbiParameter<TAbiParameters extends readonly AbiParameter[]> =
|
|
83
84
|
* @internal
|
84
85
|
*/
|
85
86
|
type LogTopicType<
|
86
|
-
TPrimitiveType = Hex,
|
87
|
-
TTopic extends
|
88
|
-
> = TTopic extends Hex
|
87
|
+
TPrimitiveType = ox__Hex.Hex,
|
88
|
+
TTopic extends ox__Log["topics"][0] = ox__Log["topics"][0],
|
89
|
+
> = TTopic extends ox__Hex.Hex
|
89
90
|
? TPrimitiveType
|
90
|
-
: TTopic extends Hex[]
|
91
|
+
: TTopic extends ox__Hex.Hex[]
|
91
92
|
? TPrimitiveType[]
|
92
93
|
: TTopic extends null
|
93
94
|
? null
|
@@ -0,0 +1 @@
|
|
1
|
+
export * as Nebula from "../ai/index.js";
|
@@ -86,7 +86,7 @@ export {
|
|
86
86
|
|
87
87
|
// Components
|
88
88
|
export { AutoConnect } from "../react/native/ui/AutoConnect/AutoConnect.js";
|
89
|
-
export type { AutoConnectProps } from "../
|
89
|
+
export type { AutoConnectProps } from "../wallets/connection/types.js";
|
90
90
|
|
91
91
|
export { TransactionButton } from "../react/native/ui/transaction/TransactionButton.js";
|
92
92
|
export type { TransactionButtonProps } from "../react/core/hooks/transaction/transaction-button-utils.js";
|
package/src/exports/react.ts
CHANGED
@@ -121,7 +121,7 @@ export {
|
|
121
121
|
} from "../react/core/hooks/pay/usePostOnrampQuote.js";
|
122
122
|
|
123
123
|
export { AutoConnect } from "../react/web/ui/AutoConnect/AutoConnect.js";
|
124
|
-
export type { AutoConnectProps } from "../
|
124
|
+
export type { AutoConnectProps } from "../wallets/connection/types.js";
|
125
125
|
|
126
126
|
// auth
|
127
127
|
export type { SiweAuthOptions } from "../react/core/hooks/auth/useSiweAuth.js";
|
package/src/exports/utils.ts
CHANGED
@@ -167,7 +167,7 @@ export { stringify } from "../utils/json.js";
|
|
167
167
|
// ------------------------------------------------
|
168
168
|
// values
|
169
169
|
// ------------------------------------------------
|
170
|
-
export { maxUint256 } from "
|
170
|
+
export { maxUint256 } from "ox/Solidity";
|
171
171
|
|
172
172
|
// ------------------------------------------------
|
173
173
|
// jwt
|
@@ -208,3 +208,6 @@ export type {
|
|
208
208
|
|
209
209
|
export { shortenLargeNumber } from "../utils/shortenLargeNumber.js";
|
210
210
|
export { formatNumber } from "../utils/formatNumber.js";
|
211
|
+
|
212
|
+
// ENS
|
213
|
+
export { isValidENSName } from "../utils/ens/isValidENSName.js";
|
package/src/exports/wallets.ts
CHANGED
@@ -161,4 +161,6 @@ export { injectedProvider } from "../wallets/injected/mipdStore.js";
|
|
161
161
|
|
162
162
|
export type { ConnectionManager } from "../wallets/manager/index.js";
|
163
163
|
|
164
|
+
export type { AutoConnectProps } from "../wallets/connection/types.js";
|
165
|
+
export { autoConnect } from "../wallets/connection/autoConnect.js";
|
164
166
|
export { deploySmartAccount } from "../wallets/smart/lib/signing.js";
|