viem 2.17.11 → 2.18.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +8 -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 +1 -3
- 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/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/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/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 +0 -1
- 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/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/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/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 +0 -1
- 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/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/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/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/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 -1
- 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/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/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/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
@@ -0,0 +1,138 @@
|
|
1
|
+
import type { Address } from 'abitype'
|
2
|
+
import type { Hash } from '../../../types/misc.js'
|
3
|
+
import { encodeAbiParameters } from '../../../utils/abi/encodeAbiParameters.js'
|
4
|
+
import { concat } from '../../../utils/data/concat.js'
|
5
|
+
import { pad } from '../../../utils/data/pad.js'
|
6
|
+
import { numberToHex } from '../../../utils/encoding/toHex.js'
|
7
|
+
import { keccak256 } from '../../../utils/hash/keccak256.js'
|
8
|
+
import type { EntryPointVersion } from '../../types/entryPointVersion.js'
|
9
|
+
import type { UserOperation } from '../../types/userOperation.js'
|
10
|
+
|
11
|
+
export type GetUserOperationHashParameters<
|
12
|
+
entryPointVersion extends EntryPointVersion = EntryPointVersion,
|
13
|
+
> = {
|
14
|
+
chainId: number
|
15
|
+
entryPointAddress: Address
|
16
|
+
entryPointVersion: entryPointVersion | EntryPointVersion
|
17
|
+
userOperation: UserOperation<entryPointVersion>
|
18
|
+
}
|
19
|
+
|
20
|
+
export type GetUserOperationHashReturnType = Hash
|
21
|
+
|
22
|
+
export function getUserOperationHash<
|
23
|
+
entryPointVersion extends EntryPointVersion,
|
24
|
+
>(
|
25
|
+
parameters: GetUserOperationHashParameters<entryPointVersion>,
|
26
|
+
): GetUserOperationHashReturnType {
|
27
|
+
const { chainId, entryPointAddress, entryPointVersion } = parameters
|
28
|
+
const userOperation = parameters.userOperation as UserOperation
|
29
|
+
const {
|
30
|
+
callData,
|
31
|
+
callGasLimit,
|
32
|
+
initCode,
|
33
|
+
maxFeePerGas,
|
34
|
+
maxPriorityFeePerGas,
|
35
|
+
nonce,
|
36
|
+
paymasterAndData,
|
37
|
+
preVerificationGas,
|
38
|
+
sender,
|
39
|
+
verificationGasLimit,
|
40
|
+
} = userOperation
|
41
|
+
|
42
|
+
const packedUserOp = (() => {
|
43
|
+
if (entryPointVersion === '0.6') {
|
44
|
+
return encodeAbiParameters(
|
45
|
+
[
|
46
|
+
{ type: 'address' },
|
47
|
+
{ type: 'uint256' },
|
48
|
+
{ type: 'bytes32' },
|
49
|
+
{ type: 'bytes32' },
|
50
|
+
{ type: 'uint256' },
|
51
|
+
{ type: 'uint256' },
|
52
|
+
{ type: 'uint256' },
|
53
|
+
{ type: 'uint256' },
|
54
|
+
{ type: 'uint256' },
|
55
|
+
{ type: 'bytes32' },
|
56
|
+
],
|
57
|
+
[
|
58
|
+
sender,
|
59
|
+
nonce,
|
60
|
+
keccak256(initCode ?? '0x'),
|
61
|
+
keccak256(callData ?? '0x'),
|
62
|
+
callGasLimit,
|
63
|
+
verificationGasLimit,
|
64
|
+
preVerificationGas,
|
65
|
+
maxFeePerGas,
|
66
|
+
maxPriorityFeePerGas,
|
67
|
+
keccak256(paymasterAndData ?? '0x'),
|
68
|
+
],
|
69
|
+
)
|
70
|
+
}
|
71
|
+
|
72
|
+
if (entryPointVersion === '0.7') {
|
73
|
+
const accountGasLimits = concat([
|
74
|
+
pad(numberToHex(userOperation.verificationGasLimit), { size: 16 }),
|
75
|
+
pad(numberToHex(userOperation.callGasLimit), { size: 16 }),
|
76
|
+
])
|
77
|
+
const callData_hashed = keccak256(callData)
|
78
|
+
const gasFees = concat([
|
79
|
+
pad(numberToHex(userOperation.maxPriorityFeePerGas), { size: 16 }),
|
80
|
+
pad(numberToHex(userOperation.maxFeePerGas), { size: 16 }),
|
81
|
+
])
|
82
|
+
const initCode_hashed = keccak256(
|
83
|
+
userOperation.factory && userOperation.factoryData
|
84
|
+
? concat([userOperation.factory, userOperation.factoryData])
|
85
|
+
: '0x',
|
86
|
+
)
|
87
|
+
const paymasterAndData_hashed = keccak256(
|
88
|
+
userOperation.paymaster
|
89
|
+
? concat([
|
90
|
+
userOperation.paymaster,
|
91
|
+
pad(
|
92
|
+
numberToHex(userOperation.paymasterVerificationGasLimit || 0),
|
93
|
+
{
|
94
|
+
size: 16,
|
95
|
+
},
|
96
|
+
),
|
97
|
+
pad(numberToHex(userOperation.paymasterPostOpGasLimit || 0), {
|
98
|
+
size: 16,
|
99
|
+
}),
|
100
|
+
userOperation.paymasterData || '0x',
|
101
|
+
])
|
102
|
+
: '0x',
|
103
|
+
)
|
104
|
+
|
105
|
+
return encodeAbiParameters(
|
106
|
+
[
|
107
|
+
{ type: 'address' },
|
108
|
+
{ type: 'uint256' },
|
109
|
+
{ type: 'bytes32' },
|
110
|
+
{ type: 'bytes32' },
|
111
|
+
{ type: 'bytes32' },
|
112
|
+
{ type: 'uint256' },
|
113
|
+
{ type: 'bytes32' },
|
114
|
+
{ type: 'bytes32' },
|
115
|
+
],
|
116
|
+
[
|
117
|
+
sender,
|
118
|
+
nonce,
|
119
|
+
initCode_hashed,
|
120
|
+
callData_hashed,
|
121
|
+
accountGasLimits,
|
122
|
+
preVerificationGas,
|
123
|
+
gasFees,
|
124
|
+
paymasterAndData_hashed,
|
125
|
+
],
|
126
|
+
)
|
127
|
+
}
|
128
|
+
|
129
|
+
throw new Error(`entryPointVersion "${entryPointVersion}" not supported.`)
|
130
|
+
})()
|
131
|
+
|
132
|
+
return keccak256(
|
133
|
+
encodeAbiParameters(
|
134
|
+
[{ type: 'bytes32' }, { type: 'address' }, { type: 'uint256' }],
|
135
|
+
[keccak256(packedUserOp), entryPointAddress, BigInt(chainId)],
|
136
|
+
),
|
137
|
+
)
|
138
|
+
}
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import { concat } from '../../../utils/data/concat.js'
|
2
|
+
import { pad } from '../../../utils/data/pad.js'
|
3
|
+
import { numberToHex } from '../../../utils/index.js'
|
4
|
+
import type {
|
5
|
+
PackedUserOperation,
|
6
|
+
UserOperation,
|
7
|
+
} from '../../types/userOperation.js'
|
8
|
+
|
9
|
+
export function toPackedUserOperation(
|
10
|
+
userOperation: UserOperation,
|
11
|
+
): PackedUserOperation {
|
12
|
+
const {
|
13
|
+
callGasLimit,
|
14
|
+
callData,
|
15
|
+
factory,
|
16
|
+
factoryData,
|
17
|
+
maxPriorityFeePerGas,
|
18
|
+
maxFeePerGas,
|
19
|
+
paymaster,
|
20
|
+
paymasterData,
|
21
|
+
paymasterPostOpGasLimit,
|
22
|
+
paymasterVerificationGasLimit,
|
23
|
+
sender,
|
24
|
+
signature = '0x',
|
25
|
+
verificationGasLimit,
|
26
|
+
} = userOperation
|
27
|
+
|
28
|
+
const accountGasLimits = concat([
|
29
|
+
pad(numberToHex(verificationGasLimit || 0n), { size: 16 }),
|
30
|
+
pad(numberToHex(callGasLimit || 0n), { size: 16 }),
|
31
|
+
])
|
32
|
+
const initCode =
|
33
|
+
factory && factoryData ? concat([factory, factoryData]) : '0x'
|
34
|
+
const gasFees = concat([
|
35
|
+
pad(numberToHex(maxPriorityFeePerGas || 0n), { size: 16 }),
|
36
|
+
pad(numberToHex(maxFeePerGas || 0n), { size: 16 }),
|
37
|
+
])
|
38
|
+
const nonce = userOperation.nonce ?? 0n
|
39
|
+
const paymasterAndData = paymaster
|
40
|
+
? concat([
|
41
|
+
paymaster,
|
42
|
+
pad(numberToHex(paymasterVerificationGasLimit || 0n), {
|
43
|
+
size: 16,
|
44
|
+
}),
|
45
|
+
pad(numberToHex(paymasterPostOpGasLimit || 0n), {
|
46
|
+
size: 16,
|
47
|
+
}),
|
48
|
+
paymasterData || '0x',
|
49
|
+
])
|
50
|
+
: '0x'
|
51
|
+
const preVerificationGas = userOperation.preVerificationGas ?? 0n
|
52
|
+
|
53
|
+
return {
|
54
|
+
accountGasLimits,
|
55
|
+
callData,
|
56
|
+
initCode,
|
57
|
+
gasFees,
|
58
|
+
nonce,
|
59
|
+
paymasterAndData,
|
60
|
+
preVerificationGas,
|
61
|
+
sender,
|
62
|
+
signature,
|
63
|
+
}
|
64
|
+
}
|
package/accounts/index.ts
CHANGED
@@ -11,6 +11,7 @@ import {
|
|
11
11
|
type PublicKeyToAddressErrorType,
|
12
12
|
publicKeyToAddress,
|
13
13
|
} from './utils/publicKeyToAddress.js'
|
14
|
+
import { type SignErrorType, sign } from './utils/sign.js'
|
14
15
|
import { type SignMessageErrorType, signMessage } from './utils/signMessage.js'
|
15
16
|
import {
|
16
17
|
type SignTransactionErrorType,
|
@@ -29,6 +30,7 @@ export type PrivateKeyToAccountErrorType =
|
|
29
30
|
| ToAccountErrorType
|
30
31
|
| ToHexErrorType
|
31
32
|
| PublicKeyToAddressErrorType
|
33
|
+
| SignErrorType
|
32
34
|
| SignMessageErrorType
|
33
35
|
| SignTransactionErrorType
|
34
36
|
| SignTypedDataErrorType
|
@@ -50,6 +52,9 @@ export function privateKeyToAccount(
|
|
50
52
|
const account = toAccount({
|
51
53
|
address,
|
52
54
|
nonceManager,
|
55
|
+
async sign({ hash }) {
|
56
|
+
return sign({ hash, privateKey, to: 'hex' })
|
57
|
+
},
|
53
58
|
async signMessage({ message }) {
|
54
59
|
return signMessage({ message, privateKey })
|
55
60
|
},
|
package/accounts/toAccount.ts
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
// TODO(v3): Rename to `toLocalAccount` + add `source` property to define source (privateKey, mnemonic, hdKey, etc).
|
2
|
+
|
1
3
|
import type { Address } from 'abitype'
|
2
4
|
|
3
5
|
import {
|
@@ -48,6 +50,7 @@ export function toAccount<accountSource extends AccountSource>(
|
|
48
50
|
return {
|
49
51
|
address: source.address,
|
50
52
|
nonceManager: source.nonceManager,
|
53
|
+
sign: source.sign,
|
51
54
|
signMessage: source.signMessage,
|
52
55
|
signTransaction: source.signTransaction,
|
53
56
|
signTypedData: source.signTypedData,
|
package/accounts/types.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import type { Address, TypedData } from 'abitype'
|
2
2
|
|
3
|
+
import type { SmartAccount } from '../account-abstraction/accounts/types.js'
|
3
4
|
import type { HDKey } from '../types/account.js'
|
4
5
|
import type { Hash, Hex, SignableMessage } from '../types/misc.js'
|
5
6
|
import type {
|
@@ -7,19 +8,25 @@ import type {
|
|
7
8
|
TransactionSerialized,
|
8
9
|
} from '../types/transaction.js'
|
9
10
|
import type { TypedDataDefinition } from '../types/typedData.js'
|
10
|
-
import type { IsNarrowable, OneOf } from '../types/utils.js'
|
11
|
+
import type { IsNarrowable, OneOf, Prettify } from '../types/utils.js'
|
11
12
|
import type { NonceManager } from '../utils/nonceManager.js'
|
12
13
|
import type { GetTransactionType } from '../utils/transaction/getTransactionType.js'
|
13
14
|
import type { SerializeTransactionFn } from '../utils/transaction/serializeTransaction.js'
|
14
15
|
|
15
16
|
export type Account<address extends Address = Address> = OneOf<
|
16
|
-
JsonRpcAccount<address> | LocalAccount<string, address>
|
17
|
+
JsonRpcAccount<address> | LocalAccount<string, address> | SmartAccount
|
17
18
|
>
|
18
19
|
|
20
|
+
///////////////////////////////////////////////////////////////////////////////////////////////////
|
21
|
+
// Sources
|
22
|
+
///////////////////////////////////////////////////////////////////////////////////////////////////
|
23
|
+
|
19
24
|
export type AccountSource = Address | CustomSource
|
20
25
|
export type CustomSource = {
|
21
26
|
address: Address
|
22
27
|
nonceManager?: NonceManager | undefined
|
28
|
+
// TODO(v3): Make `sign` required.
|
29
|
+
sign?: (({ hash }: { hash: Hash }) => Promise<Hash>) | undefined
|
23
30
|
signMessage: ({ message }: { message: SignableMessage }) => Promise<Hash>
|
24
31
|
signTransaction: <
|
25
32
|
serializer extends
|
@@ -48,6 +55,10 @@ export type CustomSource = {
|
|
48
55
|
) => Promise<Hash>
|
49
56
|
}
|
50
57
|
|
58
|
+
///////////////////////////////////////////////////////////////////////////////////////////////////
|
59
|
+
// Accounts
|
60
|
+
///////////////////////////////////////////////////////////////////////////////////////////////////
|
61
|
+
|
51
62
|
export type JsonRpcAccount<address extends Address = Address> = {
|
52
63
|
address: address
|
53
64
|
type: 'json-rpc'
|
@@ -56,16 +67,22 @@ export type JsonRpcAccount<address extends Address = Address> = {
|
|
56
67
|
export type LocalAccount<
|
57
68
|
source extends string = string,
|
58
69
|
address extends Address = Address,
|
59
|
-
> =
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
70
|
+
> = Prettify<
|
71
|
+
CustomSource & {
|
72
|
+
address: address
|
73
|
+
publicKey: Hex
|
74
|
+
source: source
|
75
|
+
type: 'local'
|
76
|
+
}
|
77
|
+
>
|
65
78
|
|
66
|
-
export type HDAccount =
|
67
|
-
|
68
|
-
|
79
|
+
export type HDAccount = Prettify<
|
80
|
+
LocalAccount<'hd'> & {
|
81
|
+
getHdKey(): HDKey
|
82
|
+
// TODO(v3): This will be redundant.
|
83
|
+
sign: NonNullable<CustomSource['sign']>
|
84
|
+
}
|
85
|
+
>
|
69
86
|
|
70
87
|
export type HDOptions =
|
71
88
|
| {
|
@@ -85,4 +102,9 @@ export type HDOptions =
|
|
85
102
|
path: `m/44'/60'/${string}`
|
86
103
|
}
|
87
104
|
|
88
|
-
export type PrivateKeyAccount =
|
105
|
+
export type PrivateKeyAccount = Prettify<
|
106
|
+
LocalAccount<'privateKey'> & {
|
107
|
+
// TODO(v3): This will be redundant.
|
108
|
+
sign: NonNullable<CustomSource['sign']>
|
109
|
+
}
|
110
|
+
>
|
@@ -5,7 +5,10 @@ import type { Account } from '../types.js'
|
|
5
5
|
|
6
6
|
export type ParseAccountErrorType = ErrorType
|
7
7
|
|
8
|
-
export function parseAccount
|
9
|
-
|
10
|
-
|
8
|
+
export function parseAccount<accountOrAddress extends Address | Account>(
|
9
|
+
account: accountOrAddress,
|
10
|
+
): accountOrAddress extends Address ? Account : accountOrAddress {
|
11
|
+
if (typeof account === 'string')
|
12
|
+
return { address: account, type: 'json-rpc' } as any
|
13
|
+
return account as any
|
11
14
|
}
|
package/accounts/utils/sign.ts
CHANGED
@@ -3,17 +3,27 @@
|
|
3
3
|
import { secp256k1 } from '@noble/curves/secp256k1'
|
4
4
|
|
5
5
|
import type { ErrorType } from '../../errors/utils.js'
|
6
|
-
import type { Hex, Signature } from '../../types/misc.js'
|
7
|
-
import {
|
6
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js'
|
7
|
+
import {
|
8
|
+
type NumberToHexErrorType,
|
9
|
+
numberToHex,
|
10
|
+
} from '../../utils/encoding/toHex.js'
|
11
|
+
import { serializeSignature } from '../../utils/signature/serializeSignature.js'
|
8
12
|
|
9
|
-
|
13
|
+
type To = 'object' | 'bytes' | 'hex'
|
14
|
+
|
15
|
+
export type SignParameters<to extends To = 'object'> = {
|
10
16
|
hash: Hex
|
11
17
|
privateKey: Hex
|
18
|
+
to?: to | To | undefined
|
12
19
|
}
|
13
20
|
|
14
|
-
export type SignReturnType =
|
21
|
+
export type SignReturnType<to extends To = 'object'> =
|
22
|
+
| (to extends 'object' ? Signature : never)
|
23
|
+
| (to extends 'bytes' ? ByteArray : never)
|
24
|
+
| (to extends 'hex' ? Hex : never)
|
15
25
|
|
16
|
-
export type SignErrorType =
|
26
|
+
export type SignErrorType = NumberToHexErrorType | ErrorType
|
17
27
|
|
18
28
|
/**
|
19
29
|
* @description Signs a hash with a given private key.
|
@@ -23,15 +33,21 @@ export type SignErrorType = ToHexErrorType | ErrorType
|
|
23
33
|
*
|
24
34
|
* @returns The signature.
|
25
35
|
*/
|
26
|
-
export async function sign({
|
36
|
+
export async function sign<to extends To = 'object'>({
|
27
37
|
hash,
|
28
38
|
privateKey,
|
29
|
-
|
39
|
+
to = 'object',
|
40
|
+
}: SignParameters<to>): Promise<SignReturnType<to>> {
|
30
41
|
const { r, s, recovery } = secp256k1.sign(hash.slice(2), privateKey.slice(2))
|
31
|
-
|
42
|
+
const signature = {
|
32
43
|
r: numberToHex(r, { size: 32 }),
|
33
44
|
s: numberToHex(s, { size: 32 }),
|
34
45
|
v: recovery ? 28n : 27n,
|
35
46
|
yParity: recovery,
|
36
47
|
}
|
48
|
+
return (() => {
|
49
|
+
if (to === 'bytes' || to === 'hex')
|
50
|
+
return serializeSignature({ ...signature, to })
|
51
|
+
return signature
|
52
|
+
})() as SignReturnType<to>
|
37
53
|
}
|
@@ -4,10 +4,6 @@ import {
|
|
4
4
|
type HashMessageErrorType,
|
5
5
|
hashMessage,
|
6
6
|
} from '../../utils/signature/hashMessage.js'
|
7
|
-
import {
|
8
|
-
type SerializeSignatureErrorType,
|
9
|
-
serializeSignature,
|
10
|
-
} from '../../utils/signature/serializeSignature.js'
|
11
7
|
|
12
8
|
import { type SignErrorType, sign } from './sign.js'
|
13
9
|
|
@@ -23,7 +19,6 @@ export type SignMessageReturnType = Hex
|
|
23
19
|
export type SignMessageErrorType =
|
24
20
|
| SignErrorType
|
25
21
|
| HashMessageErrorType
|
26
|
-
| SerializeSignatureErrorType
|
27
22
|
| ErrorType
|
28
23
|
|
29
24
|
/**
|
@@ -36,6 +31,5 @@ export async function signMessage({
|
|
36
31
|
message,
|
37
32
|
privateKey,
|
38
33
|
}: SignMessageParameters): Promise<SignMessageReturnType> {
|
39
|
-
|
40
|
-
return serializeSignature(signature)
|
34
|
+
return await sign({ hash: hashMessage(message), privateKey, to: 'hex' })
|
41
35
|
}
|
@@ -6,10 +6,6 @@ import {
|
|
6
6
|
type HashTypedDataErrorType,
|
7
7
|
hashTypedData,
|
8
8
|
} from '../../utils/signature/hashTypedData.js'
|
9
|
-
import {
|
10
|
-
type SerializeSignatureErrorType,
|
11
|
-
serializeSignature,
|
12
|
-
} from '../../utils/signature/serializeSignature.js'
|
13
9
|
|
14
10
|
import type { ErrorType } from '../../errors/utils.js'
|
15
11
|
import { type SignErrorType, sign } from './sign.js'
|
@@ -27,7 +23,6 @@ export type SignTypedDataReturnType = Hex
|
|
27
23
|
export type SignTypedDataErrorType =
|
28
24
|
| HashTypedDataErrorType
|
29
25
|
| SignErrorType
|
30
|
-
| SerializeSignatureErrorType
|
31
26
|
| ErrorType
|
32
27
|
|
33
28
|
/**
|
@@ -44,9 +39,9 @@ export async function signTypedData<
|
|
44
39
|
): Promise<SignTypedDataReturnType> {
|
45
40
|
const { privateKey, ...typedData } =
|
46
41
|
parameters as unknown as SignTypedDataParameters
|
47
|
-
|
42
|
+
return await sign({
|
48
43
|
hash: hashTypedData(typedData),
|
49
44
|
privateKey,
|
45
|
+
to: 'hex',
|
50
46
|
})
|
51
|
-
return serializeSignature(signature)
|
52
47
|
}
|
@@ -6,7 +6,12 @@ import {
|
|
6
6
|
import type { SignTransactionErrorType } from '../../accounts/utils/signTransaction.js'
|
7
7
|
import type { Client } from '../../clients/createClient.js'
|
8
8
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
9
|
-
import {
|
9
|
+
import {
|
10
|
+
AccountNotFoundError,
|
11
|
+
type AccountNotFoundErrorType,
|
12
|
+
AccountTypeNotSupportedError,
|
13
|
+
type AccountTypeNotSupportedErrorType,
|
14
|
+
} from '../../errors/account.js'
|
10
15
|
import type { BaseError } from '../../errors/base.js'
|
11
16
|
import type { ErrorType } from '../../errors/utils.js'
|
12
17
|
import type { GetAccountParameter } from '../../types/account.js'
|
@@ -73,6 +78,8 @@ export type SendTransactionReturnType = Hash
|
|
73
78
|
export type SendTransactionErrorType =
|
74
79
|
| ParseAccountErrorType
|
75
80
|
| GetTransactionErrorReturnType<
|
81
|
+
| AccountNotFoundErrorType
|
82
|
+
| AccountTypeNotSupportedErrorType
|
76
83
|
| AssertCurrentChainErrorType
|
77
84
|
| AssertRequestErrorType
|
78
85
|
| GetChainIdErrorType
|
@@ -172,6 +179,36 @@ export async function sendTransaction<
|
|
172
179
|
})
|
173
180
|
}
|
174
181
|
|
182
|
+
if (account.type === 'json-rpc') {
|
183
|
+
const chainFormat = client.chain?.formatters?.transactionRequest?.format
|
184
|
+
const format = chainFormat || formatTransactionRequest
|
185
|
+
|
186
|
+
const request = format({
|
187
|
+
// Pick out extra data that might exist on the chain's transaction request type.
|
188
|
+
...extract(rest, { format: chainFormat }),
|
189
|
+
accessList,
|
190
|
+
blobs,
|
191
|
+
chainId,
|
192
|
+
data,
|
193
|
+
from: account.address,
|
194
|
+
gas,
|
195
|
+
gasPrice,
|
196
|
+
maxFeePerBlobGas,
|
197
|
+
maxFeePerGas,
|
198
|
+
maxPriorityFeePerGas,
|
199
|
+
nonce,
|
200
|
+
to,
|
201
|
+
value,
|
202
|
+
} as TransactionRequest)
|
203
|
+
return await client.request(
|
204
|
+
{
|
205
|
+
method: 'eth_sendTransaction',
|
206
|
+
params: [request],
|
207
|
+
},
|
208
|
+
{ retryCount: 0 },
|
209
|
+
)
|
210
|
+
}
|
211
|
+
|
175
212
|
if (account.type === 'local') {
|
176
213
|
// Prepare the request for signing (assign appropriate fees, etc.)
|
177
214
|
const request = await getAction(
|
@@ -210,34 +247,18 @@ export async function sendTransaction<
|
|
210
247
|
})
|
211
248
|
}
|
212
249
|
|
213
|
-
|
214
|
-
|
250
|
+
if (account.type === 'smart')
|
251
|
+
throw new AccountTypeNotSupportedError({
|
252
|
+
metaMessages: [
|
253
|
+
'Consider using the `sendUserOperation` Action instead.',
|
254
|
+
],
|
255
|
+
docsPath: '/docs/actions/bundler/sendUserOperation',
|
256
|
+
type: 'smart',
|
257
|
+
})
|
215
258
|
|
216
|
-
|
217
|
-
// Pick out extra data that might exist on the chain's transaction request type.
|
218
|
-
...extract(rest, { format: chainFormat }),
|
219
|
-
accessList,
|
220
|
-
blobs,
|
221
|
-
chainId,
|
222
|
-
data,
|
223
|
-
from: account.address,
|
224
|
-
gas,
|
225
|
-
gasPrice,
|
226
|
-
maxFeePerBlobGas,
|
227
|
-
maxFeePerGas,
|
228
|
-
maxPriorityFeePerGas,
|
229
|
-
nonce,
|
230
|
-
to,
|
231
|
-
value,
|
232
|
-
} as TransactionRequest)
|
233
|
-
return await client.request(
|
234
|
-
{
|
235
|
-
method: 'eth_sendTransaction',
|
236
|
-
params: [request],
|
237
|
-
},
|
238
|
-
{ retryCount: 0 },
|
239
|
-
)
|
259
|
+
throw new Error('incompatible account type.')
|
240
260
|
} catch (err) {
|
261
|
+
if (err instanceof AccountTypeNotSupportedError) throw err
|
241
262
|
throw getTransactionError(err as BaseError, {
|
242
263
|
...parameters,
|
243
264
|
account,
|
@@ -94,7 +94,8 @@ export async function signMessage<
|
|
94
94
|
docsPath: '/docs/actions/wallet/signMessage',
|
95
95
|
})
|
96
96
|
const account = parseAccount(account_)
|
97
|
-
|
97
|
+
|
98
|
+
if (account.signMessage) return account.signMessage({ message })
|
98
99
|
|
99
100
|
const message_ = (() => {
|
100
101
|
if (typeof message === 'string') return stringToHex(message)
|
@@ -155,7 +155,7 @@ export async function signTransaction<
|
|
155
155
|
const format =
|
156
156
|
formatters?.transactionRequest?.format || formatTransactionRequest
|
157
157
|
|
158
|
-
if (account.
|
158
|
+
if (account.signTransaction)
|
159
159
|
return account.signTransaction(
|
160
160
|
{
|
161
161
|
...transaction,
|
@@ -163,7 +163,6 @@ export async function signTransaction<
|
|
163
163
|
} as TransactionSerializable,
|
164
164
|
{ serializer: client.chain?.serializers?.transaction },
|
165
165
|
) as Promise<SignTransactionReturnType>
|
166
|
-
}
|
167
166
|
|
168
167
|
return await client.request(
|
169
168
|
{
|
@@ -181,7 +181,7 @@ export async function signTypedData<
|
|
181
181
|
// as we can't statically check this with TypeScript.
|
182
182
|
validateTypedData({ domain, message, primaryType, types })
|
183
183
|
|
184
|
-
if (account.
|
184
|
+
if (account.signTypedData)
|
185
185
|
return account.signTypedData({ domain, message, primaryType, types })
|
186
186
|
|
187
187
|
const typedData = serializeTypedData({ domain, message, primaryType, types })
|
@@ -945,7 +945,7 @@ export type PublicActions<
|
|
945
945
|
type extends FeeValuesType = 'eip1559',
|
946
946
|
>(
|
947
947
|
args?: EstimateFeesPerGasParameters<chain, chainOverride, type> | undefined,
|
948
|
-
) => Promise<EstimateFeesPerGasReturnType
|
948
|
+
) => Promise<EstimateFeesPerGasReturnType<type>>
|
949
949
|
/**
|
950
950
|
* Returns a list of logs or hashes based on a [Filter](/docs/glossary/terms#filter) since the last time it was called.
|
951
951
|
*
|
package/constants/abis.ts
CHANGED
@@ -209,17 +209,14 @@ export const universalSignatureValidatorAbi = [
|
|
209
209
|
{
|
210
210
|
inputs: [
|
211
211
|
{
|
212
|
-
internalType: 'address',
|
213
212
|
name: '_signer',
|
214
213
|
type: 'address',
|
215
214
|
},
|
216
215
|
{
|
217
|
-
internalType: 'bytes32',
|
218
216
|
name: '_hash',
|
219
217
|
type: 'bytes32',
|
220
218
|
},
|
221
219
|
{
|
222
|
-
internalType: 'bytes',
|
223
220
|
name: '_signature',
|
224
221
|
type: 'bytes',
|
225
222
|
},
|
package/constants/address.ts
CHANGED