viem 2.17.11 → 2.18.1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +20 -2
- package/_cjs/account-abstraction/accounts/createWebAuthnCredential.js +6 -0
- package/_cjs/account-abstraction/accounts/createWebAuthnCredential.js.map +1 -0
- package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +688 -0
- package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -0
- package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js +704 -0
- package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -0
- package/_cjs/account-abstraction/accounts/toSmartAccount.js +93 -0
- package/_cjs/account-abstraction/accounts/toSmartAccount.js.map +1 -0
- package/_cjs/account-abstraction/accounts/toWebAuthnAccount.js +24 -0
- package/_cjs/account-abstraction/accounts/toWebAuthnAccount.js.map +1 -0
- package/_cjs/account-abstraction/accounts/types.js +3 -0
- package/_cjs/account-abstraction/accounts/types.js.map +1 -0
- package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js +37 -0
- package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -0
- package/_cjs/account-abstraction/actions/bundler/getSupportedEntryPoints.js +7 -0
- package/_cjs/account-abstraction/actions/bundler/getSupportedEntryPoints.js.map +1 -0
- package/_cjs/account-abstraction/actions/bundler/getUserOperation.js +22 -0
- package/_cjs/account-abstraction/actions/bundler/getUserOperation.js.map +1 -0
- package/_cjs/account-abstraction/actions/bundler/getUserOperationReceipt.js +15 -0
- package/_cjs/account-abstraction/actions/bundler/getUserOperationReceipt.js.map +1 -0
- package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js +239 -0
- package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -0
- package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js +36 -0
- package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -0
- package/_cjs/account-abstraction/actions/bundler/waitForUserOperationReceipt.js +48 -0
- package/_cjs/account-abstraction/actions/bundler/waitForUserOperationReceipt.js.map +1 -0
- package/_cjs/account-abstraction/actions/paymaster/getPaymasterData.js +34 -0
- package/_cjs/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -0
- package/_cjs/account-abstraction/actions/paymaster/getPaymasterStubData.js +34 -0
- package/_cjs/account-abstraction/actions/paymaster/getPaymasterStubData.js.map +1 -0
- package/_cjs/account-abstraction/clients/createBundlerClient.js +18 -0
- package/_cjs/account-abstraction/clients/createBundlerClient.js.map +1 -0
- package/_cjs/account-abstraction/clients/createPaymasterClient.js +17 -0
- package/_cjs/account-abstraction/clients/createPaymasterClient.js.map +1 -0
- package/_cjs/account-abstraction/clients/decorators/bundler.js +24 -0
- package/_cjs/account-abstraction/clients/decorators/bundler.js.map +1 -0
- package/_cjs/account-abstraction/clients/decorators/paymaster.js +12 -0
- package/_cjs/account-abstraction/clients/decorators/paymaster.js.map +1 -0
- package/_cjs/account-abstraction/constants/abis.js +1318 -0
- package/_cjs/account-abstraction/constants/abis.js.map +1 -0
- package/_cjs/account-abstraction/constants/address.js +6 -0
- package/_cjs/account-abstraction/constants/address.js.map +1 -0
- package/_cjs/account-abstraction/errors/bundler.js +813 -0
- package/_cjs/account-abstraction/errors/bundler.js.map +1 -0
- package/_cjs/account-abstraction/errors/userOperation.js +91 -0
- package/_cjs/account-abstraction/errors/userOperation.js.map +1 -0
- package/_cjs/account-abstraction/index.js +90 -0
- package/_cjs/account-abstraction/index.js.map +1 -0
- package/_cjs/account-abstraction/types/account.js +3 -0
- package/_cjs/account-abstraction/types/account.js.map +1 -0
- package/_cjs/account-abstraction/types/entryPointVersion.js +3 -0
- package/_cjs/account-abstraction/types/entryPointVersion.js.map +1 -0
- package/_cjs/account-abstraction/types/rpc.js +3 -0
- package/_cjs/account-abstraction/types/rpc.js.map +1 -0
- package/_cjs/account-abstraction/types/userOperation.js +3 -0
- package/_cjs/account-abstraction/types/userOperation.js.map +1 -0
- package/_cjs/account-abstraction/utils/errors/getBundlerError.js +186 -0
- package/_cjs/account-abstraction/utils/errors/getBundlerError.js.map +1 -0
- package/_cjs/account-abstraction/utils/errors/getUserOperationError.js +87 -0
- package/_cjs/account-abstraction/utils/errors/getUserOperationError.js.map +1 -0
- package/_cjs/account-abstraction/utils/formatters/userOperation.js +24 -0
- package/_cjs/account-abstraction/utils/formatters/userOperation.js.map +1 -0
- package/_cjs/account-abstraction/utils/formatters/userOperationGas.js +18 -0
- package/_cjs/account-abstraction/utils/formatters/userOperationGas.js.map +1 -0
- package/_cjs/account-abstraction/utils/formatters/userOperationReceipt.js +18 -0
- package/_cjs/account-abstraction/utils/formatters/userOperationReceipt.js.map +1 -0
- package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js +43 -0
- package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -0
- package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js +88 -0
- package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -0
- package/_cjs/account-abstraction/utils/userOperation/toPackedUserOperation.js +44 -0
- package/_cjs/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -0
- package/_cjs/accounts/index.js.map +1 -1
- package/_cjs/accounts/privateKeyToAccount.js +4 -0
- package/_cjs/accounts/privateKeyToAccount.js.map +1 -1
- package/_cjs/accounts/toAccount.js +1 -0
- package/_cjs/accounts/toAccount.js.map +1 -1
- package/_cjs/accounts/utils/parseAccount.js.map +1 -1
- package/_cjs/accounts/utils/sign.js +8 -2
- package/_cjs/accounts/utils/sign.js.map +1 -1
- package/_cjs/accounts/utils/signMessage.js +1 -3
- package/_cjs/accounts/utils/signMessage.js.map +1 -1
- package/_cjs/accounts/utils/signTypedData.js +2 -3
- package/_cjs/accounts/utils/signTypedData.js.map +1 -1
- package/_cjs/actions/public/getLogs.js +2 -1
- package/_cjs/actions/public/getLogs.js.map +1 -1
- package/_cjs/actions/wallet/sendTransaction.js +35 -22
- package/_cjs/actions/wallet/sendTransaction.js.map +1 -1
- package/_cjs/actions/wallet/signMessage.js +1 -1
- package/_cjs/actions/wallet/signMessage.js.map +1 -1
- package/_cjs/actions/wallet/signTransaction.js +1 -2
- package/_cjs/actions/wallet/signTransaction.js.map +1 -1
- package/_cjs/actions/wallet/signTypedData.js +1 -1
- package/_cjs/actions/wallet/signTypedData.js.map +1 -1
- package/_cjs/chains/definitions/bobaSepolia.js +1 -0
- package/_cjs/chains/definitions/bobaSepolia.js.map +1 -1
- package/_cjs/chains/definitions/cronoszkEVMTestnet.js +24 -0
- package/_cjs/chains/definitions/cronoszkEVMTestnet.js.map +1 -0
- package/_cjs/chains/index.js +8 -6
- package/_cjs/chains/index.js.map +1 -1
- package/_cjs/constants/abis.js +0 -3
- package/_cjs/constants/abis.js.map +1 -1
- package/_cjs/constants/address.js +3 -1
- package/_cjs/constants/address.js.map +1 -1
- package/_cjs/errors/account.js +17 -2
- package/_cjs/errors/account.js.map +1 -1
- package/_cjs/errors/contract.js +1 -1
- package/_cjs/errors/contract.js.map +1 -1
- package/_cjs/errors/rpc.js +6 -6
- package/_cjs/errors/rpc.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/errors/version.js.map +1 -1
- package/_cjs/index.js +5 -3
- package/_cjs/index.js.map +1 -1
- package/_cjs/types/eip1193.js.map +1 -1
- package/_cjs/utils/abi/parseEventLogs.js +70 -2
- package/_cjs/utils/abi/parseEventLogs.js.map +1 -1
- package/_cjs/utils/buildRequest.js +4 -2
- package/_cjs/utils/buildRequest.js.map +1 -1
- package/_cjs/utils/errors/getNodeError.js +1 -2
- package/_cjs/utils/errors/getNodeError.js.map +1 -1
- package/_cjs/utils/index.js +3 -1
- package/_cjs/utils/index.js.map +1 -1
- package/_cjs/utils/signature/serializeErc6492Signature.js +6 -2
- package/_cjs/utils/signature/serializeErc6492Signature.js.map +1 -1
- package/_cjs/utils/signature/serializeSignature.js +6 -2
- package/_cjs/utils/signature/serializeSignature.js.map +1 -1
- package/_cjs/utils/signature/verifyHash.js +10 -0
- package/_cjs/utils/signature/verifyHash.js.map +1 -0
- package/_esm/account-abstraction/accounts/createWebAuthnCredential.js +3 -0
- package/_esm/account-abstraction/accounts/createWebAuthnCredential.js.map +1 -0
- package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +709 -0
- package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -0
- package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js +718 -0
- package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -0
- package/_esm/account-abstraction/accounts/toSmartAccount.js +96 -0
- package/_esm/account-abstraction/accounts/toSmartAccount.js.map +1 -0
- package/_esm/account-abstraction/accounts/toWebAuthnAccount.js +26 -0
- package/_esm/account-abstraction/accounts/toWebAuthnAccount.js.map +1 -0
- package/_esm/account-abstraction/accounts/types.js +2 -0
- package/_esm/account-abstraction/accounts/types.js.map +1 -0
- package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js +61 -0
- package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -0
- package/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js +25 -0
- package/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js.map +1 -0
- package/_esm/account-abstraction/actions/bundler/getUserOperation.js +42 -0
- package/_esm/account-abstraction/actions/bundler/getUserOperation.js.map +1 -0
- package/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js +35 -0
- package/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js.map +1 -0
- package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js +323 -0
- package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -0
- package/_esm/account-abstraction/actions/bundler/sendUserOperation.js +60 -0
- package/_esm/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -0
- package/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js +68 -0
- package/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js.map +1 -0
- package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js +56 -0
- package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -0
- package/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js +56 -0
- package/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js.map +1 -0
- package/_esm/account-abstraction/clients/createBundlerClient.js +15 -0
- package/_esm/account-abstraction/clients/createBundlerClient.js.map +1 -0
- package/_esm/account-abstraction/clients/createPaymasterClient.js +14 -0
- package/_esm/account-abstraction/clients/createPaymasterClient.js.map +1 -0
- package/_esm/account-abstraction/clients/decorators/bundler.js +21 -0
- package/_esm/account-abstraction/clients/decorators/bundler.js.map +1 -0
- package/_esm/account-abstraction/clients/decorators/paymaster.js +9 -0
- package/_esm/account-abstraction/clients/decorators/paymaster.js.map +1 -0
- package/_esm/account-abstraction/constants/abis.js +1315 -0
- package/_esm/account-abstraction/constants/abis.js.map +1 -0
- package/_esm/account-abstraction/constants/address.js +3 -0
- package/_esm/account-abstraction/constants/address.js.map +1 -0
- package/_esm/account-abstraction/errors/bundler.js +774 -0
- package/_esm/account-abstraction/errors/bundler.js.map +1 -0
- package/_esm/account-abstraction/errors/userOperation.js +84 -0
- package/_esm/account-abstraction/errors/userOperation.js.map +1 -0
- package/_esm/account-abstraction/index.js +31 -0
- package/_esm/account-abstraction/index.js.map +1 -0
- package/_esm/account-abstraction/types/account.js +2 -0
- package/_esm/account-abstraction/types/account.js.map +1 -0
- package/_esm/account-abstraction/types/entryPointVersion.js +2 -0
- package/_esm/account-abstraction/types/entryPointVersion.js.map +1 -0
- package/_esm/account-abstraction/types/rpc.js +2 -0
- package/_esm/account-abstraction/types/rpc.js.map +1 -0
- package/_esm/account-abstraction/types/userOperation.js +2 -0
- package/_esm/account-abstraction/types/userOperation.js.map +1 -0
- package/_esm/account-abstraction/utils/errors/getBundlerError.js +183 -0
- package/_esm/account-abstraction/utils/errors/getBundlerError.js.map +1 -0
- package/_esm/account-abstraction/utils/errors/getUserOperationError.js +85 -0
- package/_esm/account-abstraction/utils/errors/getUserOperationError.js.map +1 -0
- package/_esm/account-abstraction/utils/formatters/userOperation.js +21 -0
- package/_esm/account-abstraction/utils/formatters/userOperation.js.map +1 -0
- package/_esm/account-abstraction/utils/formatters/userOperationGas.js +15 -0
- package/_esm/account-abstraction/utils/formatters/userOperationGas.js.map +1 -0
- package/_esm/account-abstraction/utils/formatters/userOperationReceipt.js +15 -0
- package/_esm/account-abstraction/utils/formatters/userOperationReceipt.js.map +1 -0
- package/_esm/account-abstraction/utils/formatters/userOperationRequest.js +40 -0
- package/_esm/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -0
- package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js +85 -0
- package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -0
- package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js +41 -0
- package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -0
- package/_esm/accounts/index.js.map +1 -1
- package/_esm/accounts/privateKeyToAccount.js +4 -0
- package/_esm/accounts/privateKeyToAccount.js.map +1 -1
- package/_esm/accounts/toAccount.js +2 -0
- package/_esm/accounts/toAccount.js.map +1 -1
- package/_esm/accounts/utils/parseAccount.js.map +1 -1
- package/_esm/accounts/utils/sign.js +9 -3
- package/_esm/accounts/utils/sign.js.map +1 -1
- package/_esm/accounts/utils/signMessage.js +1 -3
- package/_esm/accounts/utils/signMessage.js.map +1 -1
- package/_esm/accounts/utils/signTypedData.js +2 -3
- package/_esm/accounts/utils/signTypedData.js.map +1 -1
- package/_esm/actions/public/getLogs.js +2 -1
- package/_esm/actions/public/getLogs.js.map +1 -1
- package/_esm/actions/wallet/sendTransaction.js +37 -24
- package/_esm/actions/wallet/sendTransaction.js.map +1 -1
- package/_esm/actions/wallet/signMessage.js +1 -1
- package/_esm/actions/wallet/signMessage.js.map +1 -1
- package/_esm/actions/wallet/signTransaction.js +1 -2
- package/_esm/actions/wallet/signTransaction.js.map +1 -1
- package/_esm/actions/wallet/signTypedData.js +1 -1
- package/_esm/actions/wallet/signTypedData.js.map +1 -1
- package/_esm/chains/definitions/bobaSepolia.js +1 -0
- package/_esm/chains/definitions/bobaSepolia.js.map +1 -1
- package/_esm/chains/definitions/cronoszkEVMTestnet.js +21 -0
- package/_esm/chains/definitions/cronoszkEVMTestnet.js.map +1 -0
- package/_esm/chains/index.js +1 -0
- package/_esm/chains/index.js.map +1 -1
- package/_esm/constants/abis.js +0 -3
- package/_esm/constants/abis.js.map +1 -1
- package/_esm/constants/address.js +2 -0
- package/_esm/constants/address.js.map +1 -1
- package/_esm/errors/account.js +15 -1
- package/_esm/errors/account.js.map +1 -1
- package/_esm/errors/contract.js +1 -1
- package/_esm/errors/contract.js.map +1 -1
- package/_esm/errors/rpc.js +6 -6
- package/_esm/errors/rpc.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/errors/version.js.map +1 -1
- package/_esm/index.js +1 -0
- package/_esm/index.js.map +1 -1
- package/_esm/types/eip1193.js.map +1 -1
- package/_esm/utils/abi/parseEventLogs.js +72 -2
- package/_esm/utils/abi/parseEventLogs.js.map +1 -1
- package/_esm/utils/buildRequest.js +4 -2
- package/_esm/utils/buildRequest.js.map +1 -1
- package/_esm/utils/errors/getNodeError.js +1 -2
- package/_esm/utils/errors/getNodeError.js.map +1 -1
- package/_esm/utils/index.js +1 -0
- package/_esm/utils/index.js.map +1 -1
- package/_esm/utils/signature/serializeErc6492Signature.js +6 -2
- package/_esm/utils/signature/serializeErc6492Signature.js.map +1 -1
- package/_esm/utils/signature/serializeSignature.js +6 -2
- package/_esm/utils/signature/serializeSignature.js.map +1 -1
- package/_esm/utils/signature/verifyHash.js +19 -0
- package/_esm/utils/signature/verifyHash.js.map +1 -0
- package/_types/account-abstraction/accounts/createWebAuthnCredential.d.ts +2 -0
- package/_types/account-abstraction/accounts/createWebAuthnCredential.d.ts.map +1 -0
- package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts +648 -0
- package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts.map +1 -0
- package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts +464 -0
- package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts.map +1 -0
- package/_types/account-abstraction/accounts/toSmartAccount.d.ts +14 -0
- package/_types/account-abstraction/accounts/toSmartAccount.d.ts.map +1 -0
- package/_types/account-abstraction/accounts/toWebAuthnAccount.d.ts +32 -0
- package/_types/account-abstraction/accounts/toWebAuthnAccount.d.ts.map +1 -0
- package/_types/account-abstraction/accounts/types.d.ts +174 -0
- package/_types/account-abstraction/accounts/types.d.ts.map +1 -0
- package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts +62 -0
- package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts.map +1 -0
- package/_types/account-abstraction/actions/bundler/getSupportedEntryPoints.d.ts +30 -0
- package/_types/account-abstraction/actions/bundler/getSupportedEntryPoints.d.ts.map +1 -0
- package/_types/account-abstraction/actions/bundler/getUserOperation.d.ts +57 -0
- package/_types/account-abstraction/actions/bundler/getUserOperation.d.ts.map +1 -0
- package/_types/account-abstraction/actions/bundler/getUserOperationReceipt.d.ts +39 -0
- package/_types/account-abstraction/actions/bundler/getUserOperationReceipt.d.ts.map +1 -0
- package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts +106 -0
- package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts.map +1 -0
- package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts +60 -0
- package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts.map +1 -0
- package/_types/account-abstraction/actions/bundler/waitForUserOperationReceipt.d.ts +52 -0
- package/_types/account-abstraction/actions/bundler/waitForUserOperationReceipt.d.ts.map +1 -0
- package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts +49 -0
- package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts.map +1 -0
- package/_types/account-abstraction/actions/paymaster/getPaymasterStubData.d.ts +55 -0
- package/_types/account-abstraction/actions/paymaster/getPaymasterStubData.d.ts.map +1 -0
- package/_types/account-abstraction/clients/createBundlerClient.d.ts +66 -0
- package/_types/account-abstraction/clients/createBundlerClient.d.ts.map +1 -0
- package/_types/account-abstraction/clients/createPaymasterClient.d.ts +27 -0
- package/_types/account-abstraction/clients/createPaymasterClient.d.ts.map +1 -0
- package/_types/account-abstraction/clients/decorators/bundler.d.ts +206 -0
- package/_types/account-abstraction/clients/decorators/bundler.d.ts.map +1 -0
- package/_types/account-abstraction/clients/decorators/paymaster.d.ts +60 -0
- package/_types/account-abstraction/clients/decorators/paymaster.d.ts.map +1 -0
- package/_types/account-abstraction/constants/abis.d.ts +1468 -0
- package/_types/account-abstraction/constants/abis.d.ts.map +1 -0
- package/_types/account-abstraction/constants/address.d.ts +3 -0
- package/_types/account-abstraction/constants/address.d.ts.map +1 -0
- package/_types/account-abstraction/errors/bundler.d.ts +391 -0
- package/_types/account-abstraction/errors/bundler.d.ts.map +1 -0
- package/_types/account-abstraction/errors/userOperation.d.ts +41 -0
- package/_types/account-abstraction/errors/userOperation.d.ts.map +1 -0
- package/_types/account-abstraction/index.d.ts +34 -0
- package/_types/account-abstraction/index.d.ts.map +1 -0
- package/_types/account-abstraction/types/account.d.ts +11 -0
- package/_types/account-abstraction/types/account.d.ts.map +1 -0
- package/_types/account-abstraction/types/entryPointVersion.d.ts +9 -0
- package/_types/account-abstraction/types/entryPointVersion.d.ts.map +1 -0
- package/_types/account-abstraction/types/rpc.d.ts +9 -0
- package/_types/account-abstraction/types/rpc.d.ts.map +1 -0
- package/_types/account-abstraction/types/userOperation.d.ts +157 -0
- package/_types/account-abstraction/types/userOperation.d.ts.map +1 -0
- package/_types/account-abstraction/utils/errors/getBundlerError.d.ts +8 -0
- package/_types/account-abstraction/utils/errors/getBundlerError.d.ts.map +1 -0
- package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts +15 -0
- package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts.map +1 -0
- package/_types/account-abstraction/utils/formatters/userOperation.d.ts +6 -0
- package/_types/account-abstraction/utils/formatters/userOperation.d.ts.map +1 -0
- package/_types/account-abstraction/utils/formatters/userOperationGas.d.ts +6 -0
- package/_types/account-abstraction/utils/formatters/userOperationGas.d.ts.map +1 -0
- package/_types/account-abstraction/utils/formatters/userOperationReceipt.d.ts +6 -0
- package/_types/account-abstraction/utils/formatters/userOperationReceipt.d.ts.map +1 -0
- package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts +7 -0
- package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts.map +1 -0
- package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts +13 -0
- package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts.map +1 -0
- package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts +3 -0
- package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts.map +1 -0
- package/_types/accounts/index.d.ts.map +1 -1
- package/_types/accounts/privateKeyToAccount.d.ts +2 -1
- package/_types/accounts/privateKeyToAccount.d.ts.map +1 -1
- package/_types/accounts/toAccount.d.ts.map +1 -1
- package/_types/accounts/types.d.ts +14 -7
- package/_types/accounts/types.d.ts.map +1 -1
- package/_types/accounts/utils/parseAccount.d.ts +1 -1
- package/_types/accounts/utils/parseAccount.d.ts.map +1 -1
- package/_types/accounts/utils/sign.d.ts +9 -6
- package/_types/accounts/utils/sign.d.ts.map +1 -1
- package/_types/accounts/utils/signMessage.d.ts +1 -2
- package/_types/accounts/utils/signMessage.d.ts.map +1 -1
- package/_types/accounts/utils/signTypedData.d.ts +1 -2
- package/_types/accounts/utils/signTypedData.d.ts.map +1 -1
- package/_types/actions/public/getLogs.d.ts.map +1 -1
- package/_types/actions/wallet/sendTransaction.d.ts +2 -1
- package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
- package/_types/actions/wallet/signMessage.d.ts.map +1 -1
- package/_types/actions/wallet/signTransaction.d.ts.map +1 -1
- package/_types/chains/definitions/bobaSepolia.d.ts +1 -1
- package/_types/chains/definitions/bobaSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/cronoszkEVMTestnet.d.ts +35 -0
- package/_types/chains/definitions/cronoszkEVMTestnet.d.ts.map +1 -0
- package/_types/chains/definitions/lisk.d.ts +2 -2
- package/_types/chains/definitions/playfiAlbireo.d.ts +2 -2
- package/_types/chains/definitions/zkSync.d.ts +2 -2
- package/_types/chains/definitions/zkSyncInMemoryNode.d.ts +2 -2
- package/_types/chains/definitions/zkSyncLocalNode.d.ts +2 -2
- package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +2 -2
- package/_types/chains/definitions/zkSyncTestnet.d.ts +2 -2
- package/_types/chains/index.d.ts +1 -0
- package/_types/chains/index.d.ts.map +1 -1
- package/_types/clients/decorators/public.d.ts +1 -1
- package/_types/clients/decorators/public.d.ts.map +1 -1
- package/_types/constants/abis.d.ts +0 -3
- package/_types/constants/abis.d.ts.map +1 -1
- package/_types/constants/address.d.ts +2 -0
- package/_types/constants/address.d.ts.map +1 -1
- package/_types/errors/account.d.ts +11 -0
- package/_types/errors/account.d.ts.map +1 -1
- package/_types/errors/rpc.d.ts +9 -3
- package/_types/errors/rpc.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/errors/version.d.ts.map +1 -1
- package/_types/index.d.ts +5 -3
- package/_types/index.d.ts.map +1 -1
- package/_types/types/eip1193.d.ts +239 -2
- package/_types/types/eip1193.d.ts.map +1 -1
- package/_types/types/multicall.d.ts +1 -1
- package/_types/types/multicall.d.ts.map +1 -1
- package/_types/utils/abi/parseEventLogs.d.ts +9 -3
- package/_types/utils/abi/parseEventLogs.d.ts.map +1 -1
- package/_types/utils/buildRequest.d.ts.map +1 -1
- package/_types/utils/errors/getNodeError.d.ts.map +1 -1
- package/_types/utils/formatters/transaction.d.ts +1 -1
- package/_types/utils/index.d.ts +1 -0
- package/_types/utils/index.d.ts.map +1 -1
- package/_types/utils/signature/hashTypedData.d.ts +2 -2
- package/_types/utils/signature/hashTypedData.d.ts.map +1 -1
- package/_types/utils/signature/serializeErc6492Signature.d.ts +7 -4
- package/_types/utils/signature/serializeErc6492Signature.d.ts.map +1 -1
- package/_types/utils/signature/serializeSignature.d.ts +8 -2
- package/_types/utils/signature/serializeSignature.d.ts.map +1 -1
- package/_types/utils/signature/verifyHash.d.ts +30 -0
- package/_types/utils/signature/verifyHash.d.ts.map +1 -0
- package/_types/zksync/chainConfig.d.ts +2 -2
- package/_types/zksync/formatters.d.ts +2 -2
- package/account-abstraction/accounts/createWebAuthnCredential.ts +7 -0
- package/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.ts +817 -0
- package/account-abstraction/accounts/implementations/toSoladySmartAccount.ts +794 -0
- package/account-abstraction/accounts/toSmartAccount.ts +126 -0
- package/account-abstraction/accounts/toWebAuthnAccount.ts +56 -0
- package/account-abstraction/accounts/types.ts +208 -0
- package/account-abstraction/actions/bundler/estimateUserOperationGas.ts +170 -0
- package/account-abstraction/actions/bundler/getSupportedEntryPoints.ts +33 -0
- package/account-abstraction/actions/bundler/getUserOperation.ts +85 -0
- package/account-abstraction/actions/bundler/getUserOperationReceipt.ts +64 -0
- package/account-abstraction/actions/bundler/prepareUserOperation.ts +637 -0
- package/account-abstraction/actions/bundler/sendUserOperation.ts +149 -0
- package/account-abstraction/actions/bundler/waitForUserOperationReceipt.ts +139 -0
- package/account-abstraction/actions/paymaster/getPaymasterData.ts +135 -0
- package/account-abstraction/actions/paymaster/getPaymasterStubData.ts +138 -0
- package/account-abstraction/clients/createBundlerClient.ts +155 -0
- package/account-abstraction/clients/createPaymasterClient.ts +78 -0
- package/account-abstraction/clients/decorators/bundler.ts +296 -0
- package/account-abstraction/clients/decorators/paymaster.ts +81 -0
- package/account-abstraction/constants/abis.ts +1404 -0
- package/account-abstraction/constants/address.ts +4 -0
- package/account-abstraction/errors/bundler.ts +781 -0
- package/account-abstraction/errors/userOperation.ts +111 -0
- package/account-abstraction/index.ts +228 -0
- package/account-abstraction/package.json +6 -0
- package/account-abstraction/types/account.ts +21 -0
- package/account-abstraction/types/entryPointVersion.ts +24 -0
- package/account-abstraction/types/rpc.ts +29 -0
- package/account-abstraction/types/userOperation.ts +262 -0
- package/account-abstraction/utils/errors/getBundlerError.ts +309 -0
- package/account-abstraction/utils/errors/getUserOperationError.ts +153 -0
- package/account-abstraction/utils/formatters/userOperation.ts +31 -0
- package/account-abstraction/utils/formatters/userOperationGas.ts +26 -0
- package/account-abstraction/utils/formatters/userOperationReceipt.ts +24 -0
- package/account-abstraction/utils/formatters/userOperationRequest.ts +53 -0
- package/account-abstraction/utils/userOperation/getUserOperationHash.ts +138 -0
- package/account-abstraction/utils/userOperation/toPackedUserOperation.ts +64 -0
- package/accounts/index.ts +1 -0
- package/accounts/privateKeyToAccount.ts +5 -0
- package/accounts/toAccount.ts +3 -0
- package/accounts/types.ts +34 -12
- package/accounts/utils/parseAccount.ts +6 -3
- package/accounts/utils/sign.ts +24 -8
- package/accounts/utils/signMessage.ts +1 -7
- package/accounts/utils/signTypedData.ts +2 -7
- package/actions/public/getLogs.ts +2 -1
- package/actions/wallet/sendTransaction.ts +48 -27
- package/actions/wallet/signMessage.ts +2 -1
- package/actions/wallet/signTransaction.ts +1 -2
- package/actions/wallet/signTypedData.ts +1 -1
- package/chains/definitions/bobaSepolia.ts +1 -0
- package/chains/definitions/cronoszkEVMTestnet.ts +21 -0
- package/chains/index.ts +1 -0
- package/clients/decorators/public.ts +1 -1
- package/constants/abis.ts +0 -3
- package/constants/address.ts +4 -0
- package/errors/account.ts +22 -1
- package/errors/contract.ts +1 -1
- package/errors/rpc.ts +6 -6
- package/errors/version.ts +1 -1
- package/index.ts +20 -3
- package/package.json +7 -1
- package/types/eip1193.ts +314 -2
- package/types/multicall.ts +1 -1
- package/utils/abi/parseEventLogs.ts +103 -14
- package/utils/buildRequest.ts +4 -2
- package/utils/errors/getNodeError.ts +1 -2
- package/utils/index.ts +6 -0
- package/utils/signature/hashTypedData.ts +6 -6
- package/utils/signature/serializeErc6492Signature.ts +17 -8
- package/utils/signature/serializeSignature.ts +24 -4
- package/utils/signature/verifyHash.ts +54 -0
@@ -1,19 +1,23 @@
|
|
1
1
|
// TODO(v3): checksum address.
|
2
2
|
|
3
|
-
import type { Abi } from 'abitype'
|
3
|
+
import type { Abi, AbiEvent, AbiEventParameter, Address } from 'abitype'
|
4
4
|
import {
|
5
5
|
AbiEventSignatureNotFoundError,
|
6
6
|
DecodeLogDataMismatch,
|
7
7
|
DecodeLogTopicsMismatch,
|
8
8
|
} from '../../errors/abi.js'
|
9
9
|
import type { ErrorType } from '../../errors/utils.js'
|
10
|
-
import type { ContractEventName } from '../../types/contract.js'
|
10
|
+
import type { ContractEventName, GetEventArgs } from '../../types/contract.js'
|
11
11
|
import type { Log } from '../../types/log.js'
|
12
12
|
import type { RpcLog } from '../../types/rpc.js'
|
13
|
+
import { isAddressEqual } from '../address/isAddressEqual.js'
|
14
|
+
import { toBytes } from '../encoding/toBytes.js'
|
15
|
+
import { keccak256 } from '../hash/keccak256.js'
|
13
16
|
import {
|
14
17
|
type DecodeEventLogErrorType,
|
15
18
|
decodeEventLog,
|
16
19
|
} from './decodeEventLog.js'
|
20
|
+
import { getAbiItem } from './getAbiItem.js'
|
17
21
|
|
18
22
|
export type ParseEventLogsParameters<
|
19
23
|
abi extends Abi | readonly unknown[] = Abi,
|
@@ -22,9 +26,23 @@ export type ParseEventLogsParameters<
|
|
22
26
|
| ContractEventName<abi>[]
|
23
27
|
| undefined = ContractEventName<abi>,
|
24
28
|
strict extends boolean | undefined = boolean | undefined,
|
29
|
+
///
|
30
|
+
allArgs = GetEventArgs<
|
31
|
+
abi,
|
32
|
+
eventName extends ContractEventName<abi>
|
33
|
+
? eventName
|
34
|
+
: ContractEventName<abi>,
|
35
|
+
{
|
36
|
+
EnableUnion: true
|
37
|
+
IndexedOnly: false
|
38
|
+
Required: false
|
39
|
+
}
|
40
|
+
>,
|
25
41
|
> = {
|
26
42
|
/** Contract ABI. */
|
27
43
|
abi: abi
|
44
|
+
/** Arguments for the event. */
|
45
|
+
args?: allArgs | undefined
|
28
46
|
/** Contract event. */
|
29
47
|
eventName?:
|
30
48
|
| eventName
|
@@ -84,25 +102,45 @@ export function parseEventLogs<
|
|
84
102
|
| ContractEventName<abi>
|
85
103
|
| ContractEventName<abi>[]
|
86
104
|
| undefined = undefined,
|
87
|
-
>(
|
88
|
-
abi,
|
89
|
-
|
90
|
-
logs,
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
105
|
+
>(
|
106
|
+
parameters: ParseEventLogsParameters<abi, eventName, strict>,
|
107
|
+
): ParseEventLogsReturnType<abi, eventName, strict> {
|
108
|
+
const { abi, args, logs, strict = true } = parameters
|
109
|
+
|
110
|
+
const eventName = (() => {
|
111
|
+
if (!parameters.eventName) return undefined
|
112
|
+
if (Array.isArray(parameters.eventName)) return parameters.eventName
|
113
|
+
return [parameters.eventName as string]
|
114
|
+
})()
|
115
|
+
|
97
116
|
return logs
|
98
117
|
.map((log) => {
|
99
118
|
try {
|
119
|
+
const abiItem = getAbiItem({
|
120
|
+
abi: abi as Abi,
|
121
|
+
name: log.topics[0] as string,
|
122
|
+
}) as AbiEvent
|
123
|
+
if (!abiItem) return null
|
124
|
+
|
100
125
|
const event = decodeEventLog({
|
101
126
|
...log,
|
102
|
-
abi,
|
127
|
+
abi: [abiItem],
|
103
128
|
strict,
|
104
129
|
})
|
105
|
-
|
130
|
+
|
131
|
+
// Check that the decoded event name matches the provided event name.
|
132
|
+
if (eventName && !eventName.includes(event.eventName)) return null
|
133
|
+
|
134
|
+
// Check that the decoded event args match the provided args.
|
135
|
+
if (
|
136
|
+
!includesArgs({
|
137
|
+
args: event.args,
|
138
|
+
inputs: abiItem.inputs,
|
139
|
+
matchArgs: args,
|
140
|
+
})
|
141
|
+
)
|
142
|
+
return null
|
143
|
+
|
106
144
|
return { ...event, ...log }
|
107
145
|
} catch (err) {
|
108
146
|
let eventName: string | undefined
|
@@ -129,3 +167,54 @@ export function parseEventLogs<
|
|
129
167
|
strict
|
130
168
|
>
|
131
169
|
}
|
170
|
+
|
171
|
+
function includesArgs(parameters: {
|
172
|
+
args: unknown
|
173
|
+
inputs: AbiEvent['inputs']
|
174
|
+
matchArgs: unknown
|
175
|
+
}) {
|
176
|
+
const { args, inputs, matchArgs } = parameters
|
177
|
+
|
178
|
+
if (!matchArgs) return true
|
179
|
+
if (!args) return false
|
180
|
+
|
181
|
+
function isEqual(input: AbiEventParameter, value: unknown, arg: unknown) {
|
182
|
+
try {
|
183
|
+
if (input.type === 'address')
|
184
|
+
return isAddressEqual(value as Address, arg as Address)
|
185
|
+
if (input.type === 'string' || input.type === 'bytes')
|
186
|
+
return keccak256(toBytes(value as string)) === arg
|
187
|
+
return value === arg
|
188
|
+
} catch {
|
189
|
+
return false
|
190
|
+
}
|
191
|
+
}
|
192
|
+
|
193
|
+
if (Array.isArray(args) && Array.isArray(matchArgs)) {
|
194
|
+
return matchArgs.every((value, index) => {
|
195
|
+
if (!value) return true
|
196
|
+
const input = inputs[index]
|
197
|
+
if (!input) return false
|
198
|
+
const value_ = Array.isArray(value) ? value : [value]
|
199
|
+
return value_.some((value) => isEqual(input, value, args[index]))
|
200
|
+
})
|
201
|
+
}
|
202
|
+
|
203
|
+
if (
|
204
|
+
typeof args === 'object' &&
|
205
|
+
!Array.isArray(args) &&
|
206
|
+
typeof matchArgs === 'object' &&
|
207
|
+
!Array.isArray(matchArgs)
|
208
|
+
)
|
209
|
+
return Object.entries(matchArgs).every(([key, value]) => {
|
210
|
+
if (!value) return true
|
211
|
+
const input = inputs.find((input) => input.name === key)
|
212
|
+
if (!input) return false
|
213
|
+
const value_ = Array.isArray(value) ? value : [value]
|
214
|
+
return value_.some((value) =>
|
215
|
+
isEqual(input, value, (args as Record<string, unknown>)[key]),
|
216
|
+
)
|
217
|
+
})
|
218
|
+
|
219
|
+
return false
|
220
|
+
}
|
package/utils/buildRequest.ts
CHANGED
@@ -129,7 +129,7 @@ export function buildRequest<request extends (args: any) => Promise<any>>(
|
|
129
129
|
throw new InvalidRequestRpcError(err)
|
130
130
|
// -32601
|
131
131
|
case MethodNotFoundRpcError.code:
|
132
|
-
throw new MethodNotFoundRpcError(err)
|
132
|
+
throw new MethodNotFoundRpcError(err, { method: args.method })
|
133
133
|
// -32602
|
134
134
|
case InvalidParamsRpcError.code:
|
135
135
|
throw new InvalidParamsRpcError(err)
|
@@ -150,7 +150,9 @@ export function buildRequest<request extends (args: any) => Promise<any>>(
|
|
150
150
|
throw new TransactionRejectedRpcError(err)
|
151
151
|
// -32004
|
152
152
|
case MethodNotSupportedRpcError.code:
|
153
|
-
throw new MethodNotSupportedRpcError(err
|
153
|
+
throw new MethodNotSupportedRpcError(err, {
|
154
|
+
method: args.method,
|
155
|
+
})
|
154
156
|
// -32005
|
155
157
|
case LimitExceededRpcError.code:
|
156
158
|
throw new LimitExceededRpcError(err)
|
@@ -71,12 +71,11 @@ export function getNodeError(
|
|
71
71
|
(e) => (e as { code: number }).code === ExecutionRevertedError.code,
|
72
72
|
)
|
73
73
|
: err
|
74
|
-
if (executionRevertedError instanceof BaseError)
|
74
|
+
if (executionRevertedError instanceof BaseError)
|
75
75
|
return new ExecutionRevertedError({
|
76
76
|
cause: err,
|
77
77
|
message: executionRevertedError.details,
|
78
78
|
}) as any
|
79
|
-
}
|
80
79
|
if (ExecutionRevertedError.nodeMessage.test(message))
|
81
80
|
return new ExecutionRevertedError({
|
82
81
|
cause: err,
|
package/utils/index.ts
CHANGED
@@ -434,6 +434,12 @@ export {
|
|
434
434
|
type RecoverTypedDataAddressReturnType,
|
435
435
|
recoverTypedDataAddress,
|
436
436
|
} from './signature/recoverTypedDataAddress.js'
|
437
|
+
export {
|
438
|
+
type VerifyHashErrorType,
|
439
|
+
type VerifyHashParameters,
|
440
|
+
type VerifyHashReturnType,
|
441
|
+
verifyHash,
|
442
|
+
} from './signature/verifyHash.js'
|
437
443
|
export {
|
438
444
|
type VerifyMessageErrorType,
|
439
445
|
type VerifyMessageParameters,
|
@@ -109,7 +109,7 @@ export function hashStruct({
|
|
109
109
|
}: {
|
110
110
|
data: Record<string, unknown>
|
111
111
|
primaryType: string
|
112
|
-
types: Record<string, MessageTypeProperty[]>
|
112
|
+
types: Record<string, readonly MessageTypeProperty[]>
|
113
113
|
}) {
|
114
114
|
const encoded = encodeData({
|
115
115
|
data,
|
@@ -132,7 +132,7 @@ function encodeData({
|
|
132
132
|
}: {
|
133
133
|
data: Record<string, unknown>
|
134
134
|
primaryType: string
|
135
|
-
types: Record<string, MessageTypeProperty[]>
|
135
|
+
types: Record<string, readonly MessageTypeProperty[]>
|
136
136
|
}) {
|
137
137
|
const encodedTypes: AbiParameter[] = [{ type: 'bytes32' }]
|
138
138
|
const encodedValues: unknown[] = [hashType({ primaryType, types })]
|
@@ -162,7 +162,7 @@ function hashType({
|
|
162
162
|
types,
|
163
163
|
}: {
|
164
164
|
primaryType: string
|
165
|
-
types: Record<string, MessageTypeProperty[]>
|
165
|
+
types: Record<string, readonly MessageTypeProperty[]>
|
166
166
|
}) {
|
167
167
|
const encodedHashType = toHex(encodeType({ primaryType, types }))
|
168
168
|
return keccak256(encodedHashType)
|
@@ -175,7 +175,7 @@ export function encodeType({
|
|
175
175
|
types,
|
176
176
|
}: {
|
177
177
|
primaryType: string
|
178
|
-
types: Record<string, MessageTypeProperty[]>
|
178
|
+
types: Record<string, readonly MessageTypeProperty[]>
|
179
179
|
}) {
|
180
180
|
let result = ''
|
181
181
|
const unsortedDeps = findTypeDependencies({ primaryType, types })
|
@@ -199,7 +199,7 @@ function findTypeDependencies(
|
|
199
199
|
types,
|
200
200
|
}: {
|
201
201
|
primaryType: string
|
202
|
-
types: Record<string, MessageTypeProperty[]>
|
202
|
+
types: Record<string, readonly MessageTypeProperty[]>
|
203
203
|
},
|
204
204
|
results: Set<string> = new Set(),
|
205
205
|
): Set<string> {
|
@@ -229,7 +229,7 @@ function encodeField({
|
|
229
229
|
type,
|
230
230
|
value,
|
231
231
|
}: {
|
232
|
-
types: Record<string, MessageTypeProperty[]>
|
232
|
+
types: Record<string, readonly MessageTypeProperty[]>
|
233
233
|
name: string
|
234
234
|
type: string
|
235
235
|
value: any
|
@@ -1,20 +1,26 @@
|
|
1
1
|
import type { Address } from 'abitype'
|
2
2
|
import { erc6492MagicBytes } from '../../constants/bytes.js'
|
3
3
|
import type { ErrorType } from '../../errors/utils.js'
|
4
|
-
import type { Hex } from '../../types/misc.js'
|
4
|
+
import type { ByteArray, Hex } from '../../types/misc.js'
|
5
5
|
import { encodeAbiParameters } from '../abi/encodeAbiParameters.js'
|
6
6
|
import { concatHex } from '../data/concat.js'
|
7
|
+
import { hexToBytes } from '../encoding/toBytes.js'
|
7
8
|
|
8
|
-
|
9
|
+
type To = 'bytes' | 'hex'
|
10
|
+
|
11
|
+
export type SerializeErc6492SignatureParameters<to extends To = 'hex'> = {
|
9
12
|
/** The ERC-4337 Account Factory address to use for counterfactual verification. */
|
10
13
|
address: Address
|
11
14
|
/** Calldata to pass to deploy account (if not deployed) for counterfactual verification. */
|
12
15
|
data: Hex
|
13
16
|
/** The original signature. */
|
14
17
|
signature: Hex
|
18
|
+
to?: to | To | undefined
|
15
19
|
}
|
16
20
|
|
17
|
-
export type SerializeErc6492SignatureReturnType =
|
21
|
+
export type SerializeErc6492SignatureReturnType<to extends To = 'hex'> =
|
22
|
+
| (to extends 'hex' ? Hex : never)
|
23
|
+
| (to extends 'bytes' ? ByteArray : never)
|
18
24
|
|
19
25
|
export type SerializeErc6492SignatureErrorType = ErrorType
|
20
26
|
|
@@ -28,15 +34,18 @@ export type SerializeErc6492SignatureErrorType = ErrorType
|
|
28
34
|
* serializeSignature({ address: '0x...', data: '0x...', signature: '0x...' })
|
29
35
|
* // '0x000000000000000000000000cafebabecafebabecafebabecafebabecafebabe000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004deadbeef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041a461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b000000000000000000000000000000000000000000000000000000000000006492649264926492649264926492649264926492649264926492649264926492'
|
30
36
|
*/
|
31
|
-
export function serializeErc6492Signature(
|
32
|
-
parameters: SerializeErc6492SignatureParameters
|
33
|
-
): SerializeErc6492SignatureReturnType {
|
34
|
-
const { address, data, signature } = parameters
|
35
|
-
|
37
|
+
export function serializeErc6492Signature<to extends To = 'hex'>(
|
38
|
+
parameters: SerializeErc6492SignatureParameters<to>,
|
39
|
+
): SerializeErc6492SignatureReturnType<to> {
|
40
|
+
const { address, data, signature, to = 'hex' } = parameters
|
41
|
+
const signature_ = concatHex([
|
36
42
|
encodeAbiParameters(
|
37
43
|
[{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }],
|
38
44
|
[address, data, signature],
|
39
45
|
),
|
40
46
|
erc6492MagicBytes,
|
41
47
|
])
|
48
|
+
|
49
|
+
if (to === 'hex') return signature_ as SerializeErc6492SignatureReturnType<to>
|
50
|
+
return hexToBytes(signature_) as SerializeErc6492SignatureReturnType<to>
|
42
51
|
}
|
@@ -1,10 +1,21 @@
|
|
1
1
|
import { secp256k1 } from '@noble/curves/secp256k1'
|
2
2
|
|
3
3
|
import type { ErrorType } from '../../errors/utils.js'
|
4
|
-
import type { Hex, Signature } from '../../types/misc.js'
|
4
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js'
|
5
5
|
import { type HexToBigIntErrorType, hexToBigInt } from '../encoding/fromHex.js'
|
6
|
+
import { hexToBytes } from '../encoding/toBytes.js'
|
6
7
|
import type { ToHexErrorType } from '../encoding/toHex.js'
|
7
8
|
|
9
|
+
type To = 'bytes' | 'hex'
|
10
|
+
|
11
|
+
export type SerializeSignatureParameters<to extends To = 'hex'> = Signature & {
|
12
|
+
to?: to | To | undefined
|
13
|
+
}
|
14
|
+
|
15
|
+
export type SerializeSignatureReturnType<to extends To = 'hex'> =
|
16
|
+
| (to extends 'hex' ? Hex : never)
|
17
|
+
| (to extends 'bytes' ? ByteArray : never)
|
18
|
+
|
8
19
|
export type SerializeSignatureErrorType =
|
9
20
|
| HexToBigIntErrorType
|
10
21
|
| ToHexErrorType
|
@@ -24,14 +35,23 @@ export type SerializeSignatureErrorType =
|
|
24
35
|
* })
|
25
36
|
* // "0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c"
|
26
37
|
*/
|
27
|
-
export function serializeSignature
|
38
|
+
export function serializeSignature<to extends To = 'hex'>({
|
39
|
+
r,
|
40
|
+
s,
|
41
|
+
to = 'hex',
|
42
|
+
v,
|
43
|
+
yParity,
|
44
|
+
}: SerializeSignatureParameters<to>): SerializeSignatureReturnType<to> {
|
28
45
|
const yParity_ = (() => {
|
29
46
|
if (yParity === 0 || yParity === 1) return yParity
|
30
47
|
if (v && (v === 27n || v === 28n || v >= 35n)) return v % 2n === 0n ? 1 : 0
|
31
48
|
throw new Error('Invalid `v` or `yParity` value')
|
32
49
|
})()
|
33
|
-
|
50
|
+
const signature = `0x${new secp256k1.Signature(
|
34
51
|
hexToBigInt(r),
|
35
52
|
hexToBigInt(s),
|
36
|
-
).toCompactHex()}${yParity_ === 0 ? '1b' : '1c'}`
|
53
|
+
).toCompactHex()}${yParity_ === 0 ? '1b' : '1c'}` as const
|
54
|
+
|
55
|
+
if (to === 'hex') return signature as SerializeSignatureReturnType<to>
|
56
|
+
return hexToBytes(signature) as SerializeSignatureReturnType<to>
|
37
57
|
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import type { Address } from 'abitype'
|
2
|
+
|
3
|
+
import type { ByteArray, Hash, Hex, Signature } from '../../types/misc.js'
|
4
|
+
import { type GetAddressErrorType, getAddress } from '../address/getAddress.js'
|
5
|
+
import {
|
6
|
+
type IsAddressEqualErrorType,
|
7
|
+
isAddressEqual,
|
8
|
+
} from '../address/isAddressEqual.js'
|
9
|
+
|
10
|
+
import type { ErrorType } from '../../errors/utils.js'
|
11
|
+
import {
|
12
|
+
type RecoverAddressErrorType,
|
13
|
+
recoverAddress,
|
14
|
+
} from './recoverAddress.js'
|
15
|
+
|
16
|
+
export type VerifyHashParameters = {
|
17
|
+
/** The address that signed the original message. */
|
18
|
+
address: Address
|
19
|
+
/** The hash to be verified. */
|
20
|
+
hash: Hash
|
21
|
+
/** The signature that was generated by signing the message with the address's private key. */
|
22
|
+
signature: Hex | ByteArray | Signature
|
23
|
+
}
|
24
|
+
|
25
|
+
export type VerifyHashReturnType = boolean
|
26
|
+
|
27
|
+
export type VerifyHashErrorType =
|
28
|
+
| IsAddressEqualErrorType
|
29
|
+
| GetAddressErrorType
|
30
|
+
| RecoverAddressErrorType
|
31
|
+
| ErrorType
|
32
|
+
|
33
|
+
/**
|
34
|
+
* Verify that a message was signed by the provided address.
|
35
|
+
*
|
36
|
+
* Note: Only supports Externally Owned Accounts. Does not support Contract Accounts.
|
37
|
+
* It is highly recommended to use `publicClient.verifyHash` instead to ensure
|
38
|
+
* wallet interoperability.
|
39
|
+
*
|
40
|
+
* - Docs {@link https://viem.sh/docs/utilities/verifyHash}
|
41
|
+
*
|
42
|
+
* @param parameters - {@link VerifyHashParameters}
|
43
|
+
* @returns Whether or not the signature is valid. {@link VerifyHashReturnType}
|
44
|
+
*/
|
45
|
+
export async function verifyHash({
|
46
|
+
address,
|
47
|
+
hash,
|
48
|
+
signature,
|
49
|
+
}: VerifyHashParameters): Promise<VerifyHashReturnType> {
|
50
|
+
return isAddressEqual(
|
51
|
+
getAddress(address),
|
52
|
+
await recoverAddress({ hash, signature }),
|
53
|
+
)
|
54
|
+
}
|