thirdweb 5.74.0 → 5.75.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/adapters/ethers5.js +2 -2
- package/dist/cjs/adapters/ethers5.js.map +1 -1
- package/dist/cjs/adapters/ethers6.js.map +1 -1
- package/dist/cjs/auth/verify-hash.js +2 -1
- package/dist/cjs/auth/verify-hash.js.map +1 -1
- package/dist/cjs/auth/verify-signature.js.map +1 -1
- package/dist/cjs/contract/actions/resolve-abi.js +4 -0
- package/dist/cjs/contract/actions/resolve-abi.js.map +1 -1
- package/dist/cjs/exports/wallets/smart.js +3 -1
- package/dist/cjs/exports/wallets/smart.js.map +1 -1
- package/dist/cjs/extensions/erc1271/checkContractWalletSignedTypedData.js +6 -2
- package/dist/cjs/extensions/erc1271/checkContractWalletSignedTypedData.js.map +1 -1
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.js +27 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.js +27 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/accountId.js +71 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/accountId.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.js +132 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.js +121 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.js +114 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.js +114 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/execute.js +127 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/execute.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.js +132 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/installModule.js +139 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/installModule.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.js +139 -0
- package/dist/cjs/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.js +32 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.js +31 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.js +70 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.js +70 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.js +122 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.js +71 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.js +71 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.js +117 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.js +157 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.js +51 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.js +117 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.js +51 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.js +117 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.js +139 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.js.map +1 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.js +117 -0
- package/dist/cjs/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.js.map +1 -0
- package/dist/cjs/extensions/marketplace/direct-listings/write/buyFromListing.js +6 -0
- package/dist/cjs/extensions/marketplace/direct-listings/write/buyFromListing.js.map +1 -1
- package/dist/cjs/extensions/pack/createNewPack.js +1 -0
- package/dist/cjs/extensions/pack/createNewPack.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/balance.js +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/balance.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Account/name.js +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Account/name.js.map +1 -1
- package/dist/cjs/react/web/utils/usePreloadWalletProviders.js +1 -1
- package/dist/cjs/react/web/utils/usePreloadWalletProviders.js.map +1 -1
- package/dist/cjs/transaction/actions/estimate-gas.js.map +1 -1
- package/dist/cjs/transaction/actions/gasless/providers/biconomy.js.map +1 -1
- package/dist/cjs/transaction/actions/gasless/providers/engine.js.map +1 -1
- package/dist/cjs/transaction/actions/gasless/providers/openzeppelin.js.map +1 -1
- package/dist/cjs/transaction/actions/sign-transaction.js +4 -7
- package/dist/cjs/transaction/actions/sign-transaction.js.map +1 -1
- package/dist/cjs/transaction/actions/to-serializable-transaction.js.map +1 -1
- package/dist/cjs/transaction/actions/zksync/getEip721Domain.js.map +1 -1
- package/dist/cjs/transaction/serialize-transaction.js +76 -9
- package/dist/cjs/transaction/serialize-transaction.js.map +1 -1
- package/dist/cjs/utils/any-evm/keyless-transaction.js +25 -4
- package/dist/cjs/utils/any-evm/keyless-transaction.js.map +1 -1
- package/dist/cjs/utils/hashing/hashMessage.js +2 -2
- package/dist/cjs/utils/hashing/hashMessage.js.map +1 -1
- package/dist/cjs/utils/hashing/hashTypedData.js +8 -6
- package/dist/cjs/utils/hashing/hashTypedData.js.map +1 -1
- package/dist/cjs/utils/signatures/helpers/{parseTypedData.js → parse-typed-data.js} +4 -4
- package/dist/cjs/utils/signatures/helpers/parse-typed-data.js.map +1 -0
- package/dist/cjs/utils/signatures/sign-message.js +12 -6
- package/dist/cjs/utils/signatures/sign-message.js.map +1 -1
- package/dist/cjs/utils/signatures/sign-typed-data.js +11 -8
- package/dist/cjs/utils/signatures/sign-typed-data.js.map +1 -1
- package/dist/cjs/utils/signatures/sign.js +4 -4
- package/dist/cjs/utils/signatures/sign.js.map +1 -1
- package/dist/cjs/utils/signatures/signature-to-hex.js +17 -10
- package/dist/cjs/utils/signatures/signature-to-hex.js.map +1 -1
- package/dist/cjs/utils/types.js +5 -0
- package/dist/cjs/utils/types.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/coinbase/{coinbaseMobileSDK.js → coinbase-mobile.js} +1 -1
- package/dist/cjs/wallets/coinbase/coinbase-mobile.js.map +1 -0
- package/dist/cjs/wallets/coinbase/coinbase-wallet.js +2 -2
- package/dist/cjs/wallets/coinbase/coinbase-wallet.js.map +1 -1
- package/dist/cjs/wallets/coinbase/{coinbaseWebSDK.js → coinbase-web.js} +11 -11
- package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -0
- package/dist/cjs/wallets/create-wallet.js +2 -2
- package/dist/cjs/wallets/create-wallet.js.map +1 -1
- package/dist/cjs/wallets/eip5792/get-calls-status.js +3 -3
- package/dist/cjs/wallets/eip5792/get-calls-status.js.map +1 -1
- package/dist/cjs/wallets/eip5792/get-capabilities.js +3 -3
- package/dist/cjs/wallets/eip5792/get-capabilities.js.map +1 -1
- package/dist/cjs/wallets/eip5792/send-calls.js +3 -3
- package/dist/cjs/wallets/eip5792/send-calls.js.map +1 -1
- package/dist/cjs/wallets/eip5792/show-calls-status.js +3 -3
- package/dist/cjs/wallets/eip5792/show-calls-status.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/actions/sign-typed-data.enclave.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js +2 -2
- package/dist/cjs/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/lib/iframe-wallet.js +3 -3
- package/dist/cjs/wallets/in-app/web/lib/iframe-wallet.js.map +1 -1
- package/dist/cjs/wallets/injected/index.js +2 -2
- package/dist/cjs/wallets/injected/index.js.map +1 -1
- package/dist/cjs/wallets/native/create-wallet.js +2 -2
- package/dist/cjs/wallets/native/create-wallet.js.map +1 -1
- package/dist/cjs/wallets/private-key.js +2 -5
- package/dist/cjs/wallets/private-key.js.map +1 -1
- package/dist/cjs/wallets/smart/index.js +26 -160
- package/dist/cjs/wallets/smart/index.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/bundler.js +1 -1
- package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/calls.js +2 -2
- package/dist/cjs/wallets/smart/lib/calls.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/paymaster.js +7 -6
- package/dist/cjs/wallets/smart/lib/paymaster.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/signing.js +166 -0
- package/dist/cjs/wallets/smart/lib/signing.js.map +1 -0
- package/dist/cjs/wallets/smart/lib/userop.js +1 -1
- package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
- package/dist/cjs/wallets/smart/presets/7579.js +218 -0
- package/dist/cjs/wallets/smart/presets/7579.js.map +1 -0
- package/dist/cjs/wallets/smart/presets/index.js +6 -0
- package/dist/cjs/wallets/smart/presets/index.js.map +1 -0
- package/dist/cjs/wallets/smart/smart-wallet.js.map +1 -1
- package/dist/cjs/wallets/smart/types.js.map +1 -1
- package/dist/cjs/wallets/wallet-connect/controller.js +2 -2
- package/dist/cjs/wallets/wallet-connect/controller.js.map +1 -1
- package/dist/esm/adapters/ethers5.js +2 -2
- package/dist/esm/adapters/ethers5.js.map +1 -1
- package/dist/esm/adapters/ethers6.js.map +1 -1
- package/dist/esm/auth/verify-hash.js +2 -1
- package/dist/esm/auth/verify-hash.js.map +1 -1
- package/dist/esm/auth/verify-signature.js.map +1 -1
- package/dist/esm/contract/actions/resolve-abi.js +4 -0
- package/dist/esm/contract/actions/resolve-abi.js.map +1 -1
- package/dist/esm/exports/wallets/smart.js +2 -0
- package/dist/esm/exports/wallets/smart.js.map +1 -1
- package/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js +6 -2
- package/dist/esm/extensions/erc1271/checkContractWalletSignedTypedData.js.map +1 -1
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.js +24 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.js +24 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/accountId.js +65 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/accountId.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.js +124 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.js +113 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.js +106 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.js +106 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/execute.js +120 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/execute.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.js +125 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/installModule.js +132 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/installModule.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.js +132 -0
- package/dist/esm/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.js +29 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.js +28 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.js +64 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.js +64 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.js +114 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.js +65 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.js +65 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.js +110 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.js +150 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.js +46 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.js +110 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.js +46 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.js +110 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.js +132 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.js.map +1 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.js +110 -0
- package/dist/esm/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.js.map +1 -0
- package/dist/esm/extensions/marketplace/direct-listings/write/buyFromListing.js +6 -0
- package/dist/esm/extensions/marketplace/direct-listings/write/buyFromListing.js.map +1 -1
- package/dist/esm/extensions/pack/createNewPack.js +1 -0
- package/dist/esm/extensions/pack/createNewPack.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/avatar.js +1 -0
- package/dist/esm/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/balance.js +1 -0
- package/dist/esm/react/web/ui/prebuilt/Account/balance.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Account/name.js +1 -0
- package/dist/esm/react/web/ui/prebuilt/Account/name.js.map +1 -1
- package/dist/esm/react/web/utils/usePreloadWalletProviders.js +1 -1
- package/dist/esm/react/web/utils/usePreloadWalletProviders.js.map +1 -1
- package/dist/esm/transaction/actions/estimate-gas.js +3 -3
- package/dist/esm/transaction/actions/estimate-gas.js.map +1 -1
- package/dist/esm/transaction/actions/gasless/providers/biconomy.js.map +1 -1
- package/dist/esm/transaction/actions/gasless/providers/engine.js.map +1 -1
- package/dist/esm/transaction/actions/gasless/providers/openzeppelin.js.map +1 -1
- package/dist/esm/transaction/actions/sign-transaction.js +5 -8
- package/dist/esm/transaction/actions/sign-transaction.js.map +1 -1
- package/dist/esm/transaction/actions/to-serializable-transaction.js.map +1 -1
- package/dist/esm/transaction/actions/zksync/getEip721Domain.js.map +1 -1
- package/dist/esm/transaction/serialize-transaction.js +76 -9
- package/dist/esm/transaction/serialize-transaction.js.map +1 -1
- package/dist/esm/utils/any-evm/keyless-transaction.js +26 -5
- package/dist/esm/utils/any-evm/keyless-transaction.js.map +1 -1
- package/dist/esm/utils/hashing/hashMessage.js +2 -2
- package/dist/esm/utils/hashing/hashMessage.js.map +1 -1
- package/dist/esm/utils/hashing/hashTypedData.js +8 -6
- package/dist/esm/utils/hashing/hashTypedData.js.map +1 -1
- package/dist/esm/utils/signatures/helpers/parse-typed-data.js +15 -0
- package/dist/esm/utils/signatures/helpers/parse-typed-data.js.map +1 -0
- package/dist/esm/utils/signatures/sign-message.js +12 -6
- package/dist/esm/utils/signatures/sign-message.js.map +1 -1
- package/dist/esm/utils/signatures/sign-typed-data.js +11 -8
- package/dist/esm/utils/signatures/sign-typed-data.js.map +1 -1
- package/dist/esm/utils/signatures/sign.js +4 -4
- package/dist/esm/utils/signatures/sign.js.map +1 -1
- package/dist/esm/utils/signatures/signature-to-hex.js +17 -10
- package/dist/esm/utils/signatures/signature-to-hex.js.map +1 -1
- package/dist/esm/utils/types.js +4 -1
- package/dist/esm/utils/types.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/coinbase/{coinbaseMobileSDK.js → coinbase-mobile.js} +1 -1
- package/dist/esm/wallets/coinbase/coinbase-mobile.js.map +1 -0
- package/dist/esm/wallets/coinbase/coinbase-wallet.js +2 -2
- package/dist/esm/wallets/coinbase/coinbase-wallet.js.map +1 -1
- package/dist/esm/wallets/coinbase/{coinbaseWebSDK.js → coinbase-web.js} +11 -11
- package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -0
- package/dist/esm/wallets/create-wallet.js +1 -1
- package/dist/esm/wallets/create-wallet.js.map +1 -1
- package/dist/esm/wallets/eip5792/get-calls-status.js +2 -2
- package/dist/esm/wallets/eip5792/get-calls-status.js.map +1 -1
- package/dist/esm/wallets/eip5792/get-capabilities.js +2 -2
- package/dist/esm/wallets/eip5792/get-capabilities.js.map +1 -1
- package/dist/esm/wallets/eip5792/send-calls.js +2 -2
- package/dist/esm/wallets/eip5792/send-calls.js.map +1 -1
- package/dist/esm/wallets/eip5792/show-calls-status.js +2 -2
- package/dist/esm/wallets/eip5792/show-calls-status.js.map +1 -1
- package/dist/esm/wallets/in-app/core/actions/sign-typed-data.enclave.js.map +1 -1
- package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js +1 -1
- package/dist/esm/wallets/in-app/core/wallet/enclave-wallet.js.map +1 -1
- package/dist/esm/wallets/in-app/web/lib/iframe-wallet.js +2 -2
- package/dist/esm/wallets/in-app/web/lib/iframe-wallet.js.map +1 -1
- package/dist/esm/wallets/injected/index.js +1 -1
- package/dist/esm/wallets/injected/index.js.map +1 -1
- package/dist/esm/wallets/native/create-wallet.js +1 -1
- package/dist/esm/wallets/native/create-wallet.js.map +1 -1
- package/dist/esm/wallets/private-key.js +2 -5
- package/dist/esm/wallets/private-key.js.map +1 -1
- package/dist/esm/wallets/smart/index.js +24 -158
- package/dist/esm/wallets/smart/index.js.map +1 -1
- package/dist/esm/wallets/smart/lib/bundler.js +1 -1
- package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
- package/dist/esm/wallets/smart/lib/calls.js +2 -2
- package/dist/esm/wallets/smart/lib/calls.js.map +1 -1
- package/dist/esm/wallets/smart/lib/paymaster.js +7 -6
- package/dist/esm/wallets/smart/lib/paymaster.js.map +1 -1
- package/dist/esm/wallets/smart/lib/signing.js +161 -0
- package/dist/esm/wallets/smart/lib/signing.js.map +1 -0
- package/dist/esm/wallets/smart/lib/userop.js +1 -1
- package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
- package/dist/esm/wallets/smart/presets/7579.js +215 -0
- package/dist/esm/wallets/smart/presets/7579.js.map +1 -0
- package/dist/esm/wallets/smart/presets/index.js +2 -0
- package/dist/esm/wallets/smart/presets/index.js.map +1 -0
- package/dist/esm/wallets/smart/smart-wallet.js.map +1 -1
- package/dist/esm/wallets/smart/types.js.map +1 -1
- package/dist/esm/wallets/wallet-connect/controller.js +1 -1
- package/dist/esm/wallets/wallet-connect/controller.js.map +1 -1
- package/dist/types/adapters/ethers5.d.ts.map +1 -1
- package/dist/types/adapters/ethers6.d.ts.map +1 -1
- package/dist/types/auth/verify-hash.d.ts.map +1 -1
- package/dist/types/auth/verify-signature.d.ts +2 -2
- package/dist/types/auth/verify-signature.d.ts.map +1 -1
- package/dist/types/contract/actions/resolve-abi.d.ts.map +1 -1
- package/dist/types/exports/wallets/smart.d.ts +1 -0
- package/dist/types/exports/wallets/smart.d.ts.map +1 -1
- package/dist/types/exports/wallets.d.ts +1 -1
- package/dist/types/exports/wallets.d.ts.map +1 -1
- package/dist/types/exports/wallets.native.d.ts +1 -1
- package/dist/types/exports/wallets.native.d.ts.map +1 -1
- package/dist/types/extensions/erc1271/checkContractWalletSignedTypedData.d.ts +4 -4
- package/dist/types/extensions/erc1271/checkContractWalletSignedTypedData.d.ts.map +1 -1
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.d.ts +29 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.d.ts +29 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/accountId.d.ts +44 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/accountId.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.d.ts +97 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.d.ts +90 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.d.ts +83 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.d.ts +83 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/execute.d.ts +86 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/execute.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.d.ts +86 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/installModule.d.ts +93 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/installModule.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.d.ts +93 -0
- package/dist/types/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.d.ts +51 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.d.ts +41 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.d.ts +44 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.d.ts +44 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.d.ts +90 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.d.ts +44 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.d.ts +44 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.d.ts +79 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.d.ts +107 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.d.ts +33 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.d.ts +79 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.d.ts +33 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.d.ts +79 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.d.ts +93 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.d.ts.map +1 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.d.ts +79 -0
- package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.d.ts.map +1 -0
- package/dist/types/extensions/marketplace/direct-listings/write/buyFromListing.d.ts.map +1 -1
- package/dist/types/extensions/pack/createNewPack.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Account/avatar.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Account/name.d.ts.map +1 -1
- package/dist/types/transaction/actions/gasless/providers/biconomy.d.ts +2 -2
- package/dist/types/transaction/actions/gasless/providers/biconomy.d.ts.map +1 -1
- package/dist/types/transaction/actions/gasless/providers/engine.d.ts +2 -2
- package/dist/types/transaction/actions/gasless/providers/engine.d.ts.map +1 -1
- package/dist/types/transaction/actions/gasless/providers/openzeppelin.d.ts +2 -2
- package/dist/types/transaction/actions/gasless/providers/openzeppelin.d.ts.map +1 -1
- package/dist/types/transaction/actions/gasless/send-gasless-transaction.d.ts +2 -2
- package/dist/types/transaction/actions/gasless/send-gasless-transaction.d.ts.map +1 -1
- package/dist/types/transaction/actions/sign-transaction.d.ts +2 -2
- package/dist/types/transaction/actions/sign-transaction.d.ts.map +1 -1
- package/dist/types/transaction/actions/to-serializable-transaction.d.ts.map +1 -1
- package/dist/types/transaction/actions/zksync/getEip721Domain.d.ts +2 -2
- package/dist/types/transaction/actions/zksync/getEip721Domain.d.ts.map +1 -1
- package/dist/types/transaction/serialize-transaction.d.ts +24 -4
- package/dist/types/transaction/serialize-transaction.d.ts.map +1 -1
- package/dist/types/utils/any-evm/keyless-transaction.d.ts +6 -4
- package/dist/types/utils/any-evm/keyless-transaction.d.ts.map +1 -1
- package/dist/types/utils/hashing/hashMessage.d.ts +3 -2
- package/dist/types/utils/hashing/hashMessage.d.ts.map +1 -1
- package/dist/types/utils/hashing/hashTypedData.d.ts +3 -3
- package/dist/types/utils/hashing/hashTypedData.d.ts.map +1 -1
- package/dist/types/utils/signatures/helpers/parse-typed-data.d.ts +6 -0
- package/dist/types/utils/signatures/helpers/parse-typed-data.d.ts.map +1 -0
- package/dist/types/utils/signatures/sign-message.d.ts.map +1 -1
- package/dist/types/utils/signatures/sign-typed-data.d.ts +3 -4
- package/dist/types/utils/signatures/sign-typed-data.d.ts.map +1 -1
- package/dist/types/utils/signatures/sign.d.ts +6 -2
- package/dist/types/utils/signatures/sign.d.ts.map +1 -1
- package/dist/types/utils/signatures/signature-to-hex.d.ts +7 -3
- package/dist/types/utils/signatures/signature-to-hex.d.ts.map +1 -1
- package/dist/types/utils/types.d.ts +13 -0
- package/dist/types/utils/types.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wallets/coinbase/{coinbaseMobileSDK.d.ts → coinbase-mobile.d.ts} +2 -2
- package/dist/types/wallets/coinbase/coinbase-mobile.d.ts.map +1 -0
- package/dist/types/wallets/coinbase/{coinbaseWebSDK.d.ts → coinbase-web.d.ts} +1 -1
- package/dist/types/wallets/coinbase/coinbase-web.d.ts.map +1 -0
- package/dist/types/wallets/in-app/core/actions/sign-typed-data.enclave.d.ts +3 -4
- package/dist/types/wallets/in-app/core/actions/sign-typed-data.enclave.d.ts.map +1 -1
- package/dist/types/wallets/interfaces/wallet.d.ts +6 -4
- package/dist/types/wallets/interfaces/wallet.d.ts.map +1 -1
- package/dist/types/wallets/private-key.d.ts.map +1 -1
- package/dist/types/wallets/smart/index.d.ts +3 -2
- package/dist/types/wallets/smart/index.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/bundler.d.ts +3 -3
- package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/calls.d.ts +2 -2
- package/dist/types/wallets/smart/lib/calls.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/paymaster.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/signing.d.ts +20 -0
- package/dist/types/wallets/smart/lib/signing.d.ts.map +1 -0
- package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
- package/dist/types/wallets/smart/presets/7579.d.ts +34 -0
- package/dist/types/wallets/smart/presets/7579.d.ts.map +1 -0
- package/dist/types/wallets/smart/presets/index.d.ts +2 -0
- package/dist/types/wallets/smart/presets/index.d.ts.map +1 -0
- package/dist/types/wallets/smart/smart-wallet.d.ts +2 -2
- package/dist/types/wallets/smart/smart-wallet.d.ts.map +1 -1
- package/dist/types/wallets/smart/types.d.ts +23 -9
- package/dist/types/wallets/smart/types.d.ts.map +1 -1
- package/dist/types/wallets/wallet-types.d.ts +1 -1
- package/dist/types/wallets/wallet-types.d.ts.map +1 -1
- package/package.json +23 -23
- package/src/adapters/ethers5.test.ts +92 -0
- package/src/adapters/ethers5.ts +6 -5
- package/src/adapters/ethers6.ts +3 -2
- package/src/adapters/viem.test.ts +5 -4
- package/src/auth/verify-hash.ts +2 -1
- package/src/auth/verify-signature.ts +2 -2
- package/src/contract/actions/resolve-abi.ts +6 -0
- package/src/exports/wallets/smart.ts +3 -0
- package/src/exports/wallets.native.ts +1 -1
- package/src/exports/wallets.ts +1 -1
- package/src/extensions/erc1271/checkContractWalletSignedTypedData.ts +9 -5
- package/src/extensions/erc7579/__generated__/IERC7579Account/events/ModuleInstalled.ts +24 -0
- package/src/extensions/erc7579/__generated__/IERC7579Account/events/ModuleUninstalled.ts +24 -0
- package/src/extensions/erc7579/__generated__/IERC7579Account/read/accountId.ts +71 -0
- package/src/extensions/erc7579/__generated__/IERC7579Account/read/isModuleInstalled.ts +153 -0
- package/src/extensions/erc7579/__generated__/IERC7579Account/read/isValidSignature.ts +133 -0
- package/src/extensions/erc7579/__generated__/IERC7579Account/read/supportsExecutionMode.ts +132 -0
- package/src/extensions/erc7579/__generated__/IERC7579Account/read/supportsModule.ts +128 -0
- package/src/extensions/erc7579/__generated__/IERC7579Account/write/execute.ts +149 -0
- package/src/extensions/erc7579/__generated__/IERC7579Account/write/executeFromExecutor.ts +158 -0
- package/src/extensions/erc7579/__generated__/IERC7579Account/write/installModule.ts +164 -0
- package/src/extensions/erc7579/__generated__/IERC7579Account/write/uninstallModule.ts +167 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/events/OwnershipTransferred.ts +49 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/events/Upgraded.ts +40 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.ts +70 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.ts +70 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.ts +134 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.ts +71 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.ts +71 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/addStake.ts +138 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/createAccountWithModules.ts +193 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/renounceOwnership.ts +50 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/transferOwnership.ts +139 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/unlockStake.ts +50 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/upgradeTo.ts +140 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/withdraw.ts +159 -0
- package/src/extensions/erc7579/__generated__/ModularAccountFactory/write/withdrawStake.ts +137 -0
- package/src/extensions/marketplace/direct-listings/direct-listings.test.ts +74 -14
- package/src/extensions/marketplace/direct-listings/write/buyFromListing.ts +6 -0
- package/src/extensions/pack/createNewPack.ts +1 -0
- package/src/react/web/ui/prebuilt/Account/avatar.tsx +1 -0
- package/src/react/web/ui/prebuilt/Account/balance.tsx +1 -0
- package/src/react/web/ui/prebuilt/Account/name.tsx +1 -0
- package/src/react/web/utils/usePreloadWalletProviders.ts +1 -1
- package/src/transaction/actions/estimate-gas.ts +3 -3
- package/src/transaction/actions/gasless/providers/biconomy.ts +3 -2
- package/src/transaction/actions/gasless/providers/engine.ts +2 -2
- package/src/transaction/actions/gasless/providers/openzeppelin.ts +2 -2
- package/src/transaction/actions/gasless/send-gasless-transaction.ts +2 -2
- package/src/transaction/actions/sign-transaction.test.ts +8 -15
- package/src/transaction/actions/sign-transaction.ts +9 -11
- package/src/transaction/actions/to-serializable-transaction.ts +2 -2
- package/src/transaction/actions/zksync/getEip721Domain.ts +2 -2
- package/src/transaction/serialize-transaction.test.ts +135 -229
- package/src/transaction/serialize-transaction.ts +131 -22
- package/src/utils/any-evm/keyless-transaction.test.ts +91 -0
- package/src/utils/any-evm/keyless-transaction.ts +43 -14
- package/src/utils/hashing/hashMessage.ts +4 -3
- package/src/utils/hashing/hashTypedData.ts +24 -27
- package/src/utils/signatures/helpers/parse-typed-data.test.ts +56 -0
- package/src/utils/signatures/helpers/parse-typed-data.ts +29 -0
- package/src/utils/signatures/sign-message.ts +15 -6
- package/src/utils/signatures/sign-typed-data.ts +18 -12
- package/src/utils/signatures/sign.ts +5 -6
- package/src/utils/signatures/signature-to-hex.ts +29 -13
- package/src/utils/types.ts +17 -0
- package/src/version.ts +1 -1
- package/src/wallets/coinbase/coinbase-mobile.test.ts +69 -0
- package/src/wallets/coinbase/{coinbaseMobileSDK.ts → coinbase-mobile.ts} +1 -1
- package/src/wallets/coinbase/coinbase-wallet.ts +2 -2
- package/src/wallets/coinbase/coinbase-web.test.ts +176 -0
- package/src/wallets/coinbase/{coinbaseWebSDK.ts → coinbase-web.ts} +13 -17
- package/src/wallets/create-wallet.ts +1 -1
- package/src/wallets/eip5792/get-calls-status.ts +2 -2
- package/src/wallets/eip5792/get-capabilities.ts +2 -2
- package/src/wallets/eip5792/send-calls.ts +2 -2
- package/src/wallets/eip5792/show-calls-status.ts +2 -2
- package/src/wallets/in-app/core/actions/sign-typed-data.enclave.ts +3 -4
- package/src/wallets/in-app/core/wallet/enclave-wallet.ts +1 -1
- package/src/wallets/in-app/web/lib/iframe-wallet.ts +2 -2
- package/src/wallets/injected/index.ts +1 -1
- package/src/wallets/interfaces/wallet.ts +7 -11
- package/src/wallets/native/create-wallet.ts +1 -1
- package/src/wallets/private-key.ts +16 -14
- package/src/wallets/smart/index.ts +31 -218
- package/src/wallets/smart/lib/bundler.ts +5 -4
- package/src/wallets/smart/lib/calls.ts +4 -2
- package/src/wallets/smart/lib/paymaster.ts +8 -6
- package/src/wallets/smart/lib/signing.ts +231 -0
- package/src/wallets/smart/lib/userop.ts +3 -2
- package/src/wallets/smart/presets/7579.ts +269 -0
- package/src/wallets/smart/presets/index.ts +1 -0
- package/src/wallets/smart/smart-wallet-dev.test.ts +5 -4
- package/src/wallets/smart/smart-wallet-integration-v07.test.ts +299 -0
- package/src/wallets/smart/smart-wallet-integration.test.ts +399 -0
- package/src/wallets/smart/smart-wallet-modular.test.ts +134 -0
- package/src/wallets/smart/smart-wallet.ts +3 -5
- package/src/wallets/smart/smart.test.ts +87 -0
- package/src/wallets/smart/types.ts +31 -8
- package/src/wallets/wallet-connect/controller.ts +1 -1
- package/src/wallets/wallet-connect/receiver/session-request.test.ts +5 -5
- package/src/wallets/wallet-types.ts +1 -1
- package/dist/cjs/utils/signatures/helpers/parseTypedData.js.map +0 -1
- package/dist/cjs/wallets/coinbase/coinbaseMobileSDK.js.map +0 -1
- package/dist/cjs/wallets/coinbase/coinbaseWebSDK.js.map +0 -1
- package/dist/esm/utils/signatures/helpers/parseTypedData.js +0 -15
- package/dist/esm/utils/signatures/helpers/parseTypedData.js.map +0 -1
- package/dist/esm/wallets/coinbase/coinbaseMobileSDK.js.map +0 -1
- package/dist/esm/wallets/coinbase/coinbaseWebSDK.js.map +0 -1
- package/dist/types/utils/signatures/helpers/parseTypedData.d.ts +0 -7
- package/dist/types/utils/signatures/helpers/parseTypedData.d.ts.map +0 -1
- package/dist/types/wallets/coinbase/coinbaseMobileSDK.d.ts.map +0 -1
- package/dist/types/wallets/coinbase/coinbaseWebSDK.d.ts.map +0 -1
- package/src/utils/signatures/helpers/parseTypedData.ts +0 -25
@@ -1,15 +1,37 @@
|
|
1
|
-
import
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
import * as ox__Hex from "ox/Hex";
|
2
|
+
import * as ox__Signature from "ox/Signature";
|
3
|
+
import * as ox__TransactionEnvelopeEip1559 from "ox/TransactionEnvelopeEip1559";
|
4
|
+
import * as ox__TransactionEnvelopeEip2930 from "ox/TransactionEnvelopeEip2930";
|
5
|
+
import * as ox__TransactionEnvelopeLegacy from "ox/TransactionEnvelopeLegacy";
|
6
|
+
import type { Hex } from "../utils/encoding/hex.js";
|
7
|
+
|
8
|
+
export type SerializableTransaction = {
|
9
|
+
type?: string | undefined;
|
10
|
+
r?: Hex | bigint;
|
11
|
+
s?: Hex | bigint;
|
12
|
+
v?: bigint | number;
|
13
|
+
yParity?: bigint | number;
|
14
|
+
accessList?:
|
15
|
+
| ox__TransactionEnvelopeEip2930.TransactionEnvelopeEip2930["accessList"]
|
16
|
+
| undefined;
|
17
|
+
chainId?: number | undefined;
|
18
|
+
gasPrice?: bigint | undefined;
|
19
|
+
maxFeePerGas?: bigint | undefined;
|
20
|
+
maxPriorityFeePerGas?: bigint | undefined;
|
21
|
+
data?: Hex | undefined;
|
22
|
+
to?: string | null | undefined; // Must allow null for backwards compatibility
|
23
|
+
nonce?: number | bigint | undefined;
|
24
|
+
value?: bigint | undefined;
|
25
|
+
gas?: bigint | undefined;
|
26
|
+
gasLimit?: bigint | undefined;
|
27
|
+
};
|
9
28
|
|
10
29
|
export type SerializeTransactionOptions = {
|
11
|
-
transaction:
|
12
|
-
signature?:
|
30
|
+
transaction: SerializableTransaction;
|
31
|
+
signature?:
|
32
|
+
| ox__Signature.Signature<true, Hex>
|
33
|
+
| ox__Signature.Legacy<Hex, bigint>
|
34
|
+
| undefined;
|
13
35
|
};
|
14
36
|
|
15
37
|
/**
|
@@ -32,18 +54,39 @@ export type SerializeTransactionOptions = {
|
|
32
54
|
* });
|
33
55
|
* ```
|
34
56
|
*/
|
35
|
-
export function serializeTransaction
|
36
|
-
const transaction extends TransactionSerializable,
|
37
|
-
_transactionType extends TransactionType = GetTransactionType<transaction>,
|
38
|
-
>(
|
57
|
+
export function serializeTransaction(
|
39
58
|
options: SerializeTransactionOptions,
|
40
|
-
):
|
59
|
+
): Hex {
|
41
60
|
const { transaction } = options;
|
42
61
|
|
62
|
+
const type = getTransactionEnvelopeType(transaction);
|
63
|
+
|
43
64
|
// This is to maintain compatibility with our old interface (including the signature in the transaction object)
|
44
65
|
const signature = (() => {
|
45
|
-
if (options.signature)
|
46
|
-
|
66
|
+
if (options.signature) {
|
67
|
+
if (
|
68
|
+
"v" in options.signature &&
|
69
|
+
typeof options.signature.v !== "undefined"
|
70
|
+
) {
|
71
|
+
return ox__Signature.fromLegacy({
|
72
|
+
r: ox__Hex.toBigInt(options.signature.r),
|
73
|
+
s: ox__Hex.toBigInt(options.signature.s),
|
74
|
+
v: Number(options.signature.v),
|
75
|
+
});
|
76
|
+
}
|
77
|
+
|
78
|
+
return {
|
79
|
+
r: ox__Hex.toBigInt(options.signature.r),
|
80
|
+
s: ox__Hex.toBigInt(options.signature.s),
|
81
|
+
// We force the Signature type here because we filter for legacy type above
|
82
|
+
yParity: (options.signature as unknown as ox__Signature.Signature)
|
83
|
+
.yParity,
|
84
|
+
};
|
85
|
+
}
|
86
|
+
if (
|
87
|
+
typeof transaction.v === "undefined" &&
|
88
|
+
typeof transaction.yParity === "undefined"
|
89
|
+
) {
|
47
90
|
return undefined;
|
48
91
|
}
|
49
92
|
|
@@ -52,12 +95,78 @@ export function serializeTransaction<
|
|
52
95
|
}
|
53
96
|
|
54
97
|
return {
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
98
|
+
r:
|
99
|
+
typeof transaction.r === "bigint"
|
100
|
+
? transaction.r
|
101
|
+
: ox__Hex.toBigInt(transaction.r),
|
102
|
+
s:
|
103
|
+
typeof transaction.s === "bigint"
|
104
|
+
? transaction.s
|
105
|
+
: ox__Hex.toBigInt(transaction.s),
|
106
|
+
yParity:
|
107
|
+
typeof transaction.v !== "undefined" &&
|
108
|
+
typeof transaction.yParity === "undefined"
|
109
|
+
? ox__Signature.vToYParity(Number(transaction.v))
|
110
|
+
: Number(transaction.yParity),
|
59
111
|
};
|
60
112
|
})();
|
61
113
|
|
62
|
-
|
114
|
+
if (type === "eip1559") {
|
115
|
+
const typedTransaction =
|
116
|
+
transaction as ox__TransactionEnvelopeEip1559.TransactionEnvelopeEip1559;
|
117
|
+
ox__TransactionEnvelopeEip1559.assert(typedTransaction);
|
118
|
+
|
119
|
+
return ox__TransactionEnvelopeEip1559.serialize(typedTransaction, {
|
120
|
+
signature,
|
121
|
+
});
|
122
|
+
}
|
123
|
+
|
124
|
+
if (type === "legacy") {
|
125
|
+
const typedTransaction =
|
126
|
+
transaction as ox__TransactionEnvelopeLegacy.TransactionEnvelopeLegacy;
|
127
|
+
ox__TransactionEnvelopeLegacy.assert(typedTransaction);
|
128
|
+
|
129
|
+
return ox__TransactionEnvelopeLegacy.serialize(typedTransaction, {
|
130
|
+
signature,
|
131
|
+
});
|
132
|
+
}
|
133
|
+
|
134
|
+
if (type === "eip2930") {
|
135
|
+
const typedTransaction =
|
136
|
+
transaction as ox__TransactionEnvelopeEip2930.TransactionEnvelopeEip2930;
|
137
|
+
ox__TransactionEnvelopeEip2930.assert(typedTransaction);
|
138
|
+
|
139
|
+
return ox__TransactionEnvelopeEip2930.serialize(typedTransaction, {
|
140
|
+
signature,
|
141
|
+
});
|
142
|
+
}
|
143
|
+
|
144
|
+
throw new Error("Invalid transaction type");
|
145
|
+
}
|
146
|
+
|
147
|
+
/**
|
148
|
+
* @internal
|
149
|
+
*/
|
150
|
+
function getTransactionEnvelopeType(
|
151
|
+
transactionEnvelope: SerializableTransaction,
|
152
|
+
) {
|
153
|
+
if (typeof transactionEnvelope.type !== "undefined") {
|
154
|
+
return transactionEnvelope.type;
|
155
|
+
}
|
156
|
+
|
157
|
+
if (
|
158
|
+
typeof transactionEnvelope.maxFeePerGas !== "undefined" ||
|
159
|
+
typeof transactionEnvelope.maxPriorityFeePerGas !== "undefined"
|
160
|
+
) {
|
161
|
+
return "eip1559";
|
162
|
+
}
|
163
|
+
|
164
|
+
if (typeof transactionEnvelope.gasPrice !== "undefined") {
|
165
|
+
if (typeof transactionEnvelope.accessList !== "undefined") {
|
166
|
+
return "eip2930";
|
167
|
+
}
|
168
|
+
return "legacy";
|
169
|
+
}
|
170
|
+
|
171
|
+
throw new Error("Invalid transaction type");
|
63
172
|
}
|
@@ -0,0 +1,91 @@
|
|
1
|
+
import * as ox__Hash from "ox/Hash";
|
2
|
+
import * as ox__Hex from "ox/Hex";
|
3
|
+
import * as ox__Signature from "ox/Signature";
|
4
|
+
import { recoverAddress } from "viem";
|
5
|
+
import { describe, expect, it } from "vitest";
|
6
|
+
import { serializeTransaction } from "../../transaction/serialize-transaction.js";
|
7
|
+
import { getKeylessTransaction } from "./keyless-transaction.js";
|
8
|
+
|
9
|
+
describe("getKeylessTransaction", () => {
|
10
|
+
const mockTransaction = {
|
11
|
+
to: "0x1234567890123456789012345678901234567890",
|
12
|
+
value: 1000n,
|
13
|
+
chainId: 1,
|
14
|
+
gasPrice: 10n,
|
15
|
+
};
|
16
|
+
|
17
|
+
const mockSignature = {
|
18
|
+
r: "0x60fdd29ff912ce880cd3edaf9f932dc61d3dae823ea77e0323f94adb9f6a72fe",
|
19
|
+
s: "0x60fdd29ff912ce880cd3edaf9f932dc61d3dae823ea77e0323f94adb9f6a72fe",
|
20
|
+
v: 27n,
|
21
|
+
} as const;
|
22
|
+
|
23
|
+
it("should return the correct signer address and serialized transaction", async () => {
|
24
|
+
const serializedTransaction = serializeTransaction({
|
25
|
+
transaction: mockTransaction,
|
26
|
+
});
|
27
|
+
|
28
|
+
const hash = ox__Hash.keccak256(serializedTransaction);
|
29
|
+
const expectedAddress = await recoverAddress({
|
30
|
+
hash,
|
31
|
+
signature: ox__Signature.toHex({
|
32
|
+
r: ox__Hex.toBigInt(mockSignature.r),
|
33
|
+
s: ox__Hex.toBigInt(mockSignature.s),
|
34
|
+
yParity: ox__Signature.vToYParity(Number(mockSignature.v)),
|
35
|
+
}),
|
36
|
+
});
|
37
|
+
|
38
|
+
const result = await getKeylessTransaction({
|
39
|
+
transaction: mockTransaction,
|
40
|
+
signature: mockSignature,
|
41
|
+
});
|
42
|
+
|
43
|
+
expect(result.signerAddress).toBe(expectedAddress);
|
44
|
+
expect(result.transaction).toBe(
|
45
|
+
serializeTransaction({
|
46
|
+
transaction: mockTransaction,
|
47
|
+
signature: mockSignature,
|
48
|
+
}),
|
49
|
+
);
|
50
|
+
});
|
51
|
+
|
52
|
+
it("should throw if yParity is explicitly undefined", async () => {
|
53
|
+
const invalidSignature = {
|
54
|
+
r: mockSignature.r,
|
55
|
+
s: mockSignature.s,
|
56
|
+
yParity: undefined,
|
57
|
+
};
|
58
|
+
|
59
|
+
await expect(
|
60
|
+
getKeylessTransaction({
|
61
|
+
transaction: mockTransaction,
|
62
|
+
// biome-ignore lint/suspicious/noExplicitAny: Testing invalid data
|
63
|
+
signature: invalidSignature as any,
|
64
|
+
}),
|
65
|
+
).rejects.toThrow();
|
66
|
+
});
|
67
|
+
|
68
|
+
it("should throw if a signature is not recoverable", async () => {
|
69
|
+
const invalidSignature = { ...mockSignature, v: undefined };
|
70
|
+
|
71
|
+
await expect(
|
72
|
+
getKeylessTransaction({
|
73
|
+
transaction: mockTransaction,
|
74
|
+
// biome-ignore lint/suspicious/noExplicitAny: Testing invalid data
|
75
|
+
signature: invalidSignature as any,
|
76
|
+
}),
|
77
|
+
).rejects.toThrow();
|
78
|
+
});
|
79
|
+
|
80
|
+
it("should throw an error if the transaction is invalid", async () => {
|
81
|
+
const invalidTransaction = { ...mockTransaction, value: "invalid" };
|
82
|
+
|
83
|
+
await expect(
|
84
|
+
getKeylessTransaction({
|
85
|
+
// biome-ignore lint/suspicious/noExplicitAny: Testing invalid data
|
86
|
+
transaction: invalidTransaction as any,
|
87
|
+
signature: mockSignature,
|
88
|
+
}),
|
89
|
+
).rejects.toThrow();
|
90
|
+
});
|
91
|
+
});
|
@@ -1,15 +1,18 @@
|
|
1
|
+
import * as ox__Hash from "ox/Hash";
|
2
|
+
import * as ox__Hex from "ox/Hex";
|
3
|
+
import * as ox__Signature from "ox/Signature";
|
4
|
+
import { recoverAddress } from "viem";
|
1
5
|
import {
|
2
|
-
type
|
3
|
-
type TransactionSerializable,
|
4
|
-
recoverAddress,
|
6
|
+
type SerializableTransaction,
|
5
7
|
serializeTransaction,
|
6
|
-
|
7
|
-
} from "
|
8
|
-
import { keccak256 } from "../hashing/keccak256.js";
|
8
|
+
} from "../../transaction/serialize-transaction.js";
|
9
|
+
import type { Hex } from "../encoding/hex.js";
|
9
10
|
|
10
11
|
type GetKeylessTransactionOptions = {
|
11
|
-
transaction:
|
12
|
-
signature:
|
12
|
+
transaction: SerializableTransaction;
|
13
|
+
signature:
|
14
|
+
| ox__Signature.Signature<true, Hex>
|
15
|
+
| ox__Signature.Legacy<Hex, bigint>;
|
13
16
|
};
|
14
17
|
|
15
18
|
/**
|
@@ -23,20 +26,46 @@ export async function getKeylessTransaction(
|
|
23
26
|
options: GetKeylessTransactionOptions,
|
24
27
|
) {
|
25
28
|
// 1. Create serialized txn string
|
26
|
-
const hash = keccak256(
|
29
|
+
const hash = ox__Hash.keccak256(
|
30
|
+
serializeTransaction({ transaction: options.transaction }),
|
31
|
+
);
|
32
|
+
|
33
|
+
const yParity = (() => {
|
34
|
+
if (
|
35
|
+
"yParity" in options.signature &&
|
36
|
+
typeof options.signature.yParity !== "undefined"
|
37
|
+
) {
|
38
|
+
return options.signature.yParity;
|
39
|
+
}
|
40
|
+
|
41
|
+
if (
|
42
|
+
"v" in options.signature &&
|
43
|
+
typeof options.signature.v !== "undefined"
|
44
|
+
) {
|
45
|
+
return ox__Signature.vToYParity(Number(options.signature.v));
|
46
|
+
}
|
47
|
+
|
48
|
+
throw new Error(
|
49
|
+
"Invalid recovered signature provided with transaction, missing v or yParity",
|
50
|
+
);
|
51
|
+
})();
|
27
52
|
|
28
53
|
// 2. Determine signer address from custom signature + txn
|
29
54
|
const address = await recoverAddress({
|
30
55
|
hash,
|
31
|
-
signature:
|
56
|
+
signature: ox__Signature.toHex({
|
57
|
+
r: ox__Hex.toBigInt(options.signature.r),
|
58
|
+
s: ox__Hex.toBigInt(options.signature.s),
|
59
|
+
yParity,
|
60
|
+
}),
|
32
61
|
});
|
33
62
|
|
34
63
|
// 3. Create the signed serialized txn string.
|
35
64
|
// To be sent directly to the chain using a provider.
|
36
|
-
const transaction = serializeTransaction(
|
37
|
-
options.transaction,
|
38
|
-
options.signature,
|
39
|
-
);
|
65
|
+
const transaction = serializeTransaction({
|
66
|
+
transaction: options.transaction,
|
67
|
+
signature: options.signature,
|
68
|
+
});
|
40
69
|
|
41
70
|
return {
|
42
71
|
signerAddress: address,
|
@@ -1,13 +1,14 @@
|
|
1
|
-
import {
|
1
|
+
import { Bytes as ox__Bytes } from "ox";
|
2
2
|
import type { Hex } from "../encoding/hex.js";
|
3
3
|
import { stringToBytes, toBytes } from "../encoding/to-bytes.js";
|
4
|
+
import type { SignableMessage } from "../types.js";
|
4
5
|
import { keccak256 } from "./keccak256.js";
|
5
6
|
|
6
7
|
const presignMessagePrefix = "\x19Ethereum Signed Message:\n";
|
7
8
|
type To = "hex" | "bytes";
|
8
9
|
|
9
10
|
type HashMessage<TTo extends To> =
|
10
|
-
| (TTo extends "bytes" ?
|
11
|
+
| (TTo extends "bytes" ? ox__Bytes.Bytes : never)
|
11
12
|
| (TTo extends "hex" ? Hex : never);
|
12
13
|
|
13
14
|
/**
|
@@ -38,5 +39,5 @@ export function hashMessage<TTo extends To = "hex">(
|
|
38
39
|
const prefixBytes = stringToBytes(
|
39
40
|
`${presignMessagePrefix}${messageBytes.length}`,
|
40
41
|
);
|
41
|
-
return keccak256(concat(
|
42
|
+
return keccak256(ox__Bytes.concat(prefixBytes, messageBytes), to_);
|
42
43
|
}
|
@@ -1,12 +1,6 @@
|
|
1
|
-
import
|
2
|
-
|
3
|
-
|
4
|
-
type TypedDataDefinition,
|
5
|
-
concat,
|
6
|
-
getTypesForEIP712Domain,
|
7
|
-
hashDomain,
|
8
|
-
validateTypedData,
|
9
|
-
} from "viem";
|
1
|
+
import type * as ox__AbiParameters from "ox/AbiParameters";
|
2
|
+
import * as ox__Bytes from "ox/Bytes";
|
3
|
+
import * as ox__TypedData from "ox/TypedData";
|
10
4
|
import { encodeAbiParameters } from "../abi/encodeAbiParameters.js";
|
11
5
|
import { type Hex, toHex } from "../encoding/hex.js";
|
12
6
|
import { keccak256 } from "./keccak256.js";
|
@@ -17,15 +11,17 @@ type MessageTypeProperty = {
|
|
17
11
|
};
|
18
12
|
|
19
13
|
export type HashTypedDataParams<
|
20
|
-
typedData extends
|
14
|
+
typedData extends
|
15
|
+
| ox__TypedData.TypedData
|
16
|
+
| Record<string, unknown> = ox__TypedData.TypedData,
|
21
17
|
primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
|
22
|
-
> =
|
18
|
+
> = ox__TypedData.Definition<typedData, primaryType>;
|
23
19
|
|
24
20
|
/**
|
25
21
|
* @internal
|
26
22
|
*/
|
27
23
|
export function hashTypedData<
|
28
|
-
const typedData extends TypedData | Record<string, unknown>,
|
24
|
+
const typedData extends ox__TypedData.TypedData | Record<string, unknown>,
|
29
25
|
primaryType extends keyof typedData | "EIP712Domain",
|
30
26
|
>(parameters: HashTypedDataParams<typedData, primaryType>): Hex {
|
31
27
|
const {
|
@@ -34,13 +30,13 @@ export function hashTypedData<
|
|
34
30
|
primaryType,
|
35
31
|
} = parameters as HashTypedDataParams;
|
36
32
|
const types = {
|
37
|
-
EIP712Domain:
|
33
|
+
EIP712Domain: ox__TypedData.extractEip712DomainTypes(domain),
|
38
34
|
...parameters.types,
|
39
35
|
};
|
40
36
|
|
41
37
|
// Need to do a runtime validation check on addresses, byte ranges, integer ranges, etc
|
42
38
|
// as we can't statically check this with TypeScript.
|
43
|
-
|
39
|
+
ox__TypedData.validate({
|
44
40
|
domain,
|
45
41
|
message,
|
46
42
|
primaryType,
|
@@ -50,7 +46,7 @@ export function hashTypedData<
|
|
50
46
|
const parts: Hex[] = ["0x1901"];
|
51
47
|
if (domain)
|
52
48
|
parts.push(
|
53
|
-
hashDomain({
|
49
|
+
ox__TypedData.hashDomain({
|
54
50
|
domain,
|
55
51
|
types: types as Record<string, MessageTypeProperty[]>,
|
56
52
|
}),
|
@@ -69,7 +65,7 @@ export function hashTypedData<
|
|
69
65
|
parts.push(hashedStruct);
|
70
66
|
}
|
71
67
|
|
72
|
-
return keccak256(concat(parts));
|
68
|
+
return keccak256(ox__Bytes.concat(...parts.map((p) => ox__Bytes.fromHex(p))));
|
73
69
|
}
|
74
70
|
|
75
71
|
function encodeData({
|
@@ -81,7 +77,7 @@ function encodeData({
|
|
81
77
|
primaryType: string;
|
82
78
|
types: Record<string, MessageTypeProperty[]>;
|
83
79
|
}) {
|
84
|
-
const encodedTypes:
|
80
|
+
const encodedTypes: ox__AbiParameters.Parameter[] = [{ type: "bytes32" }];
|
85
81
|
const encodedValues: unknown[] = [hashType({ primaryType, types })];
|
86
82
|
|
87
83
|
if (!types[primaryType]) throw new Error("Invalid types");
|
@@ -168,7 +164,7 @@ function encodeField({
|
|
168
164
|
// biome-ignore lint/suspicious/noExplicitAny: Can't anticipate types of nested values
|
169
165
|
value: any;
|
170
166
|
// biome-ignore lint/suspicious/noExplicitAny: Can't anticipate types of nested values
|
171
|
-
}): [type:
|
167
|
+
}): [type: ox__AbiParameters.Parameter, value: any] {
|
172
168
|
if (types[type] !== undefined) {
|
173
169
|
return [
|
174
170
|
{ type: "bytes32" },
|
@@ -186,15 +182,16 @@ function encodeField({
|
|
186
182
|
|
187
183
|
if (type.lastIndexOf("]") === type.length - 1) {
|
188
184
|
const parsedType = type.slice(0, type.lastIndexOf("["));
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
185
|
+
const typeValuePairs =
|
186
|
+
// biome-ignore lint/suspicious/noExplicitAny: Can't anticipate types of nested values
|
187
|
+
(value as [ox__AbiParameters.Parameter, any][]).map((item) =>
|
188
|
+
encodeField({
|
189
|
+
name,
|
190
|
+
type: parsedType,
|
191
|
+
types,
|
192
|
+
value: item,
|
193
|
+
}),
|
194
|
+
);
|
198
195
|
return [
|
199
196
|
{ type: "bytes32" },
|
200
197
|
keccak256(
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
2
|
+
import { parseTypedData } from "./parse-typed-data.js";
|
3
|
+
|
4
|
+
describe("parseTypedData", () => {
|
5
|
+
test("parses typed data with hex chainId", () => {
|
6
|
+
const typedData = {
|
7
|
+
domain: {
|
8
|
+
chainId: "0x1" as unknown as number,
|
9
|
+
},
|
10
|
+
types: {},
|
11
|
+
primaryType: "EIP712Domain" as const,
|
12
|
+
};
|
13
|
+
|
14
|
+
const result = parseTypedData(typedData);
|
15
|
+
expect(result.domain.chainId).toBe(1);
|
16
|
+
});
|
17
|
+
|
18
|
+
test("returns typed data unchanged if chainId is not hex", () => {
|
19
|
+
const typedData = {
|
20
|
+
domain: {
|
21
|
+
chainId: 1,
|
22
|
+
},
|
23
|
+
types: {},
|
24
|
+
primaryType: "EIP712Domain" as const,
|
25
|
+
};
|
26
|
+
|
27
|
+
const result = parseTypedData(typedData);
|
28
|
+
expect(result.domain.chainId).toBe(1);
|
29
|
+
});
|
30
|
+
|
31
|
+
test("returns typed data unchanged if chainId is undefined", () => {
|
32
|
+
const typedData = {
|
33
|
+
domain: {},
|
34
|
+
types: {},
|
35
|
+
primaryType: "EIP712Domain" as const,
|
36
|
+
};
|
37
|
+
|
38
|
+
const result = parseTypedData(typedData);
|
39
|
+
expect(result.domain.chainId).toBeUndefined();
|
40
|
+
});
|
41
|
+
|
42
|
+
test("handles unknown domain properties", () => {
|
43
|
+
const typedData = {
|
44
|
+
domain: {
|
45
|
+
chainId: "0x1" as unknown as number,
|
46
|
+
name: "Test",
|
47
|
+
},
|
48
|
+
types: {},
|
49
|
+
primaryType: "EIP712Domain" as const,
|
50
|
+
};
|
51
|
+
|
52
|
+
const result = parseTypedData(typedData);
|
53
|
+
expect(result.domain.chainId).toBe(1);
|
54
|
+
expect(result.domain.name).toBe("Test");
|
55
|
+
});
|
56
|
+
});
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import * as ox__Hex from "ox/Hex";
|
2
|
+
import type * as ox__TypedData from "ox/TypedData";
|
3
|
+
import type { Hex } from "../../encoding/hex.js";
|
4
|
+
|
5
|
+
type UnknownDomain = unknown & { chainId?: unknown };
|
6
|
+
type HexDomain = unknown & { chainId: Hex };
|
7
|
+
|
8
|
+
/**
|
9
|
+
* @internal
|
10
|
+
*/
|
11
|
+
export function parseTypedData<
|
12
|
+
typedData extends
|
13
|
+
| ox__TypedData.TypedData
|
14
|
+
| Record<string, unknown> = ox__TypedData.TypedData,
|
15
|
+
primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
|
16
|
+
>(
|
17
|
+
typedData: ox__TypedData.Definition<typedData, primaryType>,
|
18
|
+
): ox__TypedData.Definition<typedData, primaryType> {
|
19
|
+
const domain = typedData.domain as UnknownDomain;
|
20
|
+
if (domain?.chainId !== undefined && ox__Hex.validate(domain.chainId)) {
|
21
|
+
typedData.domain = {
|
22
|
+
...(typedData.domain as HexDomain),
|
23
|
+
chainId: ox__Hex.toNumber(
|
24
|
+
(typedData.domain as unknown as HexDomain).chainId,
|
25
|
+
),
|
26
|
+
} as unknown as ox__TypedData.Definition<typedData, primaryType>["domain"];
|
27
|
+
}
|
28
|
+
return typedData;
|
29
|
+
}
|
@@ -1,9 +1,10 @@
|
|
1
|
+
import * as ox__Hex from "ox/Hex";
|
2
|
+
import * as ox__PersonalMessage from "ox/PersonalMessage";
|
3
|
+
import * as ox__Secp256k1 from "ox/Secp256k1";
|
4
|
+
import * as ox__Signature from "ox/Signature";
|
1
5
|
import type { Account } from "../../wallets/interfaces/wallet.js";
|
2
6
|
import type { Hex } from "../encoding/hex.js";
|
3
|
-
import { hashMessage } from "../hashing/hashMessage.js";
|
4
7
|
import type { Prettify } from "../type-utils.js";
|
5
|
-
import { sign } from "./sign.js";
|
6
|
-
import { signatureToHex } from "./signature-to-hex.js";
|
7
8
|
|
8
9
|
type Message = Prettify<
|
9
10
|
| string
|
@@ -59,9 +60,17 @@ export function signMessage(
|
|
59
60
|
options: SignMessageOptions | { message: Message; account: Account },
|
60
61
|
): Hex | Promise<Hex> {
|
61
62
|
if ("privateKey" in options) {
|
62
|
-
const
|
63
|
-
|
64
|
-
|
63
|
+
const payload = ox__PersonalMessage.getSignPayload(
|
64
|
+
typeof options.message === "object"
|
65
|
+
? options.message.raw
|
66
|
+
: ox__Hex.fromString(options.message),
|
67
|
+
);
|
68
|
+
|
69
|
+
const signature = ox__Secp256k1.sign({
|
70
|
+
payload,
|
71
|
+
privateKey: options.privateKey,
|
72
|
+
});
|
73
|
+
return ox__Signature.toHex(signature);
|
65
74
|
}
|
66
75
|
if ("account" in options) {
|
67
76
|
const { message, account } = options;
|
@@ -1,14 +1,15 @@
|
|
1
|
-
import
|
2
|
-
import
|
1
|
+
import * as ox__Hex from "ox/Hex";
|
2
|
+
import * as ox__Secp256k1 from "ox/Secp256k1";
|
3
|
+
import * as ox__Signature from "ox/Signature";
|
4
|
+
import * as ox__TypedData from "ox/TypedData";
|
3
5
|
import type { Hex } from "../encoding/hex.js";
|
4
|
-
import { parseTypedData } from "./helpers/parseTypedData.js";
|
5
|
-
import { sign } from "./sign.js";
|
6
|
-
import { signatureToHex } from "./signature-to-hex.js";
|
7
6
|
|
8
7
|
export type SignTypedDataOptions<
|
9
|
-
typedData extends
|
8
|
+
typedData extends
|
9
|
+
| ox__TypedData.TypedData
|
10
|
+
| Record<string, unknown> = ox__TypedData.TypedData,
|
10
11
|
primaryType extends keyof typedData | "EIP712Domain" = keyof typedData,
|
11
|
-
> =
|
12
|
+
> = ox__TypedData.Definition<typedData, primaryType> & {
|
12
13
|
privateKey: Hex;
|
13
14
|
};
|
14
15
|
|
@@ -28,17 +29,22 @@ export type SignTypedDataOptions<
|
|
28
29
|
* @utils
|
29
30
|
*/
|
30
31
|
export function signTypedData<
|
31
|
-
const typedData extends TypedData | Record<string, unknown>,
|
32
|
+
const typedData extends ox__TypedData.TypedData | Record<string, unknown>,
|
32
33
|
primaryType extends keyof typedData | "EIP712Domain",
|
33
34
|
>(options: SignTypedDataOptions<typedData, primaryType>): Hex {
|
34
35
|
const { privateKey, ...typedData } =
|
35
36
|
options as unknown as SignTypedDataOptions;
|
36
37
|
|
37
|
-
|
38
|
+
if (typeof typedData.domain?.chainId === "string") {
|
39
|
+
typedData.domain.chainId = ox__Hex.toNumber(typedData.domain.chainId);
|
40
|
+
}
|
38
41
|
|
39
|
-
const
|
40
|
-
|
42
|
+
const payload = ox__TypedData.getSignPayload(typedData);
|
43
|
+
|
44
|
+
const signature = ox__Secp256k1.sign({
|
45
|
+
payload,
|
41
46
|
privateKey,
|
42
47
|
});
|
43
|
-
|
48
|
+
|
49
|
+
return ox__Signature.toHex(signature);
|
44
50
|
}
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import
|
2
|
-
import type { Signature } from "viem";
|
1
|
+
import * as ox__Secp256k1 from "ox/Secp256k1";
|
3
2
|
|
4
3
|
import { type Hex, toHex } from "../encoding/hex.js";
|
5
4
|
|
@@ -28,12 +27,12 @@ export type SignOptions = {
|
|
28
27
|
* ```
|
29
28
|
* @utils
|
30
29
|
*/
|
31
|
-
export function sign({ hash, privateKey }: SignOptions)
|
32
|
-
const { r, s,
|
30
|
+
export function sign({ hash, privateKey }: SignOptions) {
|
31
|
+
const { r, s, yParity } = ox__Secp256k1.sign({ payload: hash, privateKey });
|
33
32
|
return {
|
34
33
|
r: toHex(r, { size: 32 }),
|
35
34
|
s: toHex(s, { size: 32 }),
|
36
|
-
v:
|
37
|
-
yParity
|
35
|
+
v: yParity === 1 ? 28n : 27n,
|
36
|
+
yParity,
|
38
37
|
};
|
39
38
|
}
|