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
@@ -0,0 +1,126 @@
|
|
1
|
+
import type { Abi } from 'abitype'
|
2
|
+
|
3
|
+
import { getCode } from '../../actions/public/getCode.js'
|
4
|
+
import type { Prettify } from '../../types/utils.js'
|
5
|
+
import { getAction } from '../../utils/getAction.js'
|
6
|
+
import { createNonceManager } from '../../utils/nonceManager.js'
|
7
|
+
import { serializeErc6492Signature } from '../../utils/signature/serializeErc6492Signature.js'
|
8
|
+
import type { EntryPointVersion } from '../types/entryPointVersion.js'
|
9
|
+
import type { SmartAccount, SmartAccountImplementation } from './types.js'
|
10
|
+
|
11
|
+
export type ToSmartAccountParameters<
|
12
|
+
entryPointAbi extends Abi | readonly unknown[] = Abi,
|
13
|
+
entryPointVersion extends EntryPointVersion = EntryPointVersion,
|
14
|
+
extend extends object = object,
|
15
|
+
> = SmartAccountImplementation<entryPointAbi, entryPointVersion, extend>
|
16
|
+
|
17
|
+
export type ToSmartAccountReturnType<
|
18
|
+
implementation extends
|
19
|
+
SmartAccountImplementation = SmartAccountImplementation,
|
20
|
+
> = Prettify<SmartAccount<implementation>>
|
21
|
+
|
22
|
+
/**
|
23
|
+
* @description Creates a Smart Account with a provided account implementation.
|
24
|
+
*
|
25
|
+
* @param parameters - {@link ToSmartAccountParameters}
|
26
|
+
* @returns A Smart Account. {@link ToSmartAccountReturnType}
|
27
|
+
*/
|
28
|
+
export async function toSmartAccount<
|
29
|
+
implementation extends SmartAccountImplementation,
|
30
|
+
>(
|
31
|
+
implementation: implementation,
|
32
|
+
): Promise<ToSmartAccountReturnType<implementation>> {
|
33
|
+
const { extend, ...rest } = implementation
|
34
|
+
|
35
|
+
let deployed = false
|
36
|
+
|
37
|
+
const address = await implementation.getAddress()
|
38
|
+
|
39
|
+
const nonceKeyManager = createNonceManager({
|
40
|
+
source: {
|
41
|
+
get() {
|
42
|
+
return Date.now()
|
43
|
+
},
|
44
|
+
set() {},
|
45
|
+
},
|
46
|
+
})
|
47
|
+
|
48
|
+
return {
|
49
|
+
...extend,
|
50
|
+
...rest,
|
51
|
+
address,
|
52
|
+
async getFactoryArgs() {
|
53
|
+
if ('isDeployed' in this && (await this.isDeployed()))
|
54
|
+
return { factory: undefined, factoryData: undefined }
|
55
|
+
return implementation.getFactoryArgs()
|
56
|
+
},
|
57
|
+
async getNonce(parameters) {
|
58
|
+
const key =
|
59
|
+
parameters?.key ??
|
60
|
+
BigInt(
|
61
|
+
await nonceKeyManager.consume({
|
62
|
+
address,
|
63
|
+
chainId: implementation.client.chain!.id!,
|
64
|
+
client: implementation.client,
|
65
|
+
}),
|
66
|
+
)
|
67
|
+
return await implementation.getNonce({ ...parameters, key })
|
68
|
+
},
|
69
|
+
async isDeployed() {
|
70
|
+
if (deployed) return true
|
71
|
+
const code = await getAction(
|
72
|
+
implementation.client,
|
73
|
+
getCode,
|
74
|
+
'getCode',
|
75
|
+
)({
|
76
|
+
address,
|
77
|
+
})
|
78
|
+
deployed = Boolean(code)
|
79
|
+
return deployed
|
80
|
+
},
|
81
|
+
...(implementation.sign
|
82
|
+
? {
|
83
|
+
async sign(parameters) {
|
84
|
+
const [{ factory, factoryData }, signature] = await Promise.all([
|
85
|
+
this.getFactoryArgs(),
|
86
|
+
implementation.sign!(parameters),
|
87
|
+
])
|
88
|
+
if (factory && factoryData)
|
89
|
+
return serializeErc6492Signature({
|
90
|
+
address: factory,
|
91
|
+
data: factoryData,
|
92
|
+
signature,
|
93
|
+
})
|
94
|
+
return signature
|
95
|
+
},
|
96
|
+
}
|
97
|
+
: {}),
|
98
|
+
async signMessage(parameters) {
|
99
|
+
const [{ factory, factoryData }, signature] = await Promise.all([
|
100
|
+
this.getFactoryArgs(),
|
101
|
+
implementation.signMessage(parameters),
|
102
|
+
])
|
103
|
+
if (factory && factoryData)
|
104
|
+
return serializeErc6492Signature({
|
105
|
+
address: factory,
|
106
|
+
data: factoryData,
|
107
|
+
signature,
|
108
|
+
})
|
109
|
+
return signature
|
110
|
+
},
|
111
|
+
async signTypedData(parameters) {
|
112
|
+
const [{ factory, factoryData }, signature] = await Promise.all([
|
113
|
+
this.getFactoryArgs(),
|
114
|
+
implementation.signTypedData(parameters),
|
115
|
+
])
|
116
|
+
if (factory && factoryData)
|
117
|
+
return serializeErc6492Signature({
|
118
|
+
address: factory,
|
119
|
+
data: factoryData,
|
120
|
+
signature,
|
121
|
+
})
|
122
|
+
return signature
|
123
|
+
},
|
124
|
+
type: 'smart',
|
125
|
+
} as ToSmartAccountReturnType<implementation>
|
126
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import { type P256Credential, type SignParameters, sign } from 'webauthn-p256'
|
2
|
+
|
3
|
+
import type { ErrorType } from '../../errors/utils.js'
|
4
|
+
import { hashMessage } from '../../utils/signature/hashMessage.js'
|
5
|
+
import { hashTypedData } from '../../utils/signature/hashTypedData.js'
|
6
|
+
import type { WebAuthnAccount } from './types.js'
|
7
|
+
|
8
|
+
export type ToWebAuthnAccountParameters = {
|
9
|
+
/**
|
10
|
+
* The WebAuthn P256 credential to use.
|
11
|
+
*/
|
12
|
+
credential: {
|
13
|
+
id: P256Credential['id']
|
14
|
+
publicKey: P256Credential['publicKey']
|
15
|
+
}
|
16
|
+
/**
|
17
|
+
* Credential request function. Useful for environments that do not support
|
18
|
+
* the WebAuthn API natively (i.e. React Native or testing environments).
|
19
|
+
*
|
20
|
+
* @default window.navigator.credentials.get
|
21
|
+
*/
|
22
|
+
getFn?: SignParameters['getFn'] | undefined
|
23
|
+
/**
|
24
|
+
* The relying party identifier to use.
|
25
|
+
*/
|
26
|
+
rpId?: SignParameters['rpId'] | undefined
|
27
|
+
}
|
28
|
+
|
29
|
+
export type ToWebAuthnAccountReturnType = WebAuthnAccount
|
30
|
+
|
31
|
+
export type ToWebAuthnAccountErrorType = ErrorType
|
32
|
+
|
33
|
+
/**
|
34
|
+
* @description Creates an Account from a WebAuthn Credential.
|
35
|
+
*
|
36
|
+
* @returns A WebAuthn Account.
|
37
|
+
*/
|
38
|
+
export function toWebAuthnAccount(
|
39
|
+
parameters: ToWebAuthnAccountParameters,
|
40
|
+
): WebAuthnAccount {
|
41
|
+
const { getFn, rpId } = parameters
|
42
|
+
const { id, publicKey } = parameters.credential
|
43
|
+
return {
|
44
|
+
publicKey,
|
45
|
+
async sign({ hash }) {
|
46
|
+
return sign({ credentialId: id, getFn, hash, rpId })
|
47
|
+
},
|
48
|
+
async signMessage({ message }) {
|
49
|
+
return this.sign({ hash: hashMessage(message) })
|
50
|
+
},
|
51
|
+
async signTypedData(parameters) {
|
52
|
+
return this.sign({ hash: hashTypedData(parameters) })
|
53
|
+
},
|
54
|
+
type: 'webAuthn',
|
55
|
+
}
|
56
|
+
}
|
@@ -0,0 +1,208 @@
|
|
1
|
+
import type { Abi, Address, TypedData } from 'abitype'
|
2
|
+
import type { SignReturnType as WebAuthnSignReturnType } from 'webauthn-p256'
|
3
|
+
|
4
|
+
import type { Client } from '../../clients/createClient.js'
|
5
|
+
import type { Hash, Hex, SignableMessage } from '../../types/misc.js'
|
6
|
+
import type { TypedDataDefinition } from '../../types/typedData.js'
|
7
|
+
import type { Assign, ExactPartial, UnionPartialBy } from '../../types/utils.js'
|
8
|
+
import type { EntryPointVersion } from '../types/entryPointVersion.js'
|
9
|
+
import type {
|
10
|
+
EstimateUserOperationGasReturnType,
|
11
|
+
UserOperation,
|
12
|
+
UserOperationRequest,
|
13
|
+
} from '../types/userOperation.js'
|
14
|
+
|
15
|
+
type Call = {
|
16
|
+
to: Hex
|
17
|
+
data?: Hex | undefined
|
18
|
+
value?: bigint | undefined
|
19
|
+
}
|
20
|
+
|
21
|
+
export type SmartAccountImplementation<
|
22
|
+
entryPointAbi extends Abi | readonly unknown[] = Abi,
|
23
|
+
entryPointVersion extends EntryPointVersion = EntryPointVersion,
|
24
|
+
extend extends object = object,
|
25
|
+
> = {
|
26
|
+
/** Client used to retrieve Smart Account data, and perform signing (if owner is a JSON-RPC Account). */
|
27
|
+
client: Client
|
28
|
+
/** Compatible EntryPoint of the Smart Account. */
|
29
|
+
entryPoint: {
|
30
|
+
/** Compatible EntryPoint ABI. */
|
31
|
+
abi: entryPointAbi
|
32
|
+
/** Compatible EntryPoint address. */
|
33
|
+
address: Address
|
34
|
+
/** Compatible EntryPoint version. */
|
35
|
+
version: entryPointVersion
|
36
|
+
}
|
37
|
+
/** Extend the Smart Account with custom properties. */
|
38
|
+
extend?: extend | undefined
|
39
|
+
/**
|
40
|
+
* Retrieves the Smart Account's address.
|
41
|
+
*
|
42
|
+
* @example
|
43
|
+
* ```ts
|
44
|
+
* const address = await account.getAddress()
|
45
|
+
* // '0x...'
|
46
|
+
* ```
|
47
|
+
*/
|
48
|
+
getAddress: () => Promise<Address>
|
49
|
+
/**
|
50
|
+
* Encodes the calls into calldata for executing a User Operation.
|
51
|
+
*
|
52
|
+
* @example
|
53
|
+
* ```ts
|
54
|
+
* const callData = await account.encodeCalls([
|
55
|
+
* { to: '0x...', data: '0x...' },
|
56
|
+
* { to: '0x...', data: '0x...', value: 100n },
|
57
|
+
* ])
|
58
|
+
* // '0x...'
|
59
|
+
* ```
|
60
|
+
*/
|
61
|
+
encodeCalls: (calls: readonly Call[]) => Promise<Hex>
|
62
|
+
/**
|
63
|
+
* Retrieves the calldata for factory call to deploy a Smart Account.
|
64
|
+
* If the Smart Account has already been deployed, this will return undefined values.
|
65
|
+
*
|
66
|
+
* @example Counterfactual account
|
67
|
+
* ```ts
|
68
|
+
* const { factory, factoryData } = await account.getFactoryArgs()
|
69
|
+
* // { factory: '0x...', factoryData: '0x...' }
|
70
|
+
* ```
|
71
|
+
*
|
72
|
+
* @example Deployed account
|
73
|
+
* ```ts
|
74
|
+
* const { factory, factoryData } = await account.getFactoryArgs()
|
75
|
+
* // { factory: undefined, factoryData: undefined }
|
76
|
+
* ```
|
77
|
+
*/
|
78
|
+
getFactoryArgs: () => Promise<{
|
79
|
+
factory?: Address | undefined
|
80
|
+
factoryData?: Hex | undefined
|
81
|
+
}>
|
82
|
+
/**
|
83
|
+
* Retrieves the nonce of the Account.
|
84
|
+
*
|
85
|
+
* @example
|
86
|
+
* ```ts
|
87
|
+
* const nonce = await account.getNonce()
|
88
|
+
* // 1n
|
89
|
+
* ```
|
90
|
+
*/
|
91
|
+
getNonce: (
|
92
|
+
parameters?: { key?: bigint | undefined } | undefined,
|
93
|
+
) => Promise<bigint>
|
94
|
+
/**
|
95
|
+
* Retrieves the User Operation "stub" signature for gas estimation.
|
96
|
+
*
|
97
|
+
* ```ts
|
98
|
+
* const signature = await account.getStubSignature()
|
99
|
+
* // '0x...'
|
100
|
+
* ```
|
101
|
+
*/
|
102
|
+
getStubSignature: () => Promise<Hex>
|
103
|
+
/**
|
104
|
+
* Signs a hash via the Smart Account's owner.
|
105
|
+
*
|
106
|
+
* @example
|
107
|
+
* ```ts
|
108
|
+
* const signature = await account.sign({
|
109
|
+
* hash: '0x...'
|
110
|
+
* })
|
111
|
+
* // '0x...'
|
112
|
+
* ```
|
113
|
+
*/
|
114
|
+
sign?: ((parameters: { hash: Hash }) => Promise<Hex>) | undefined
|
115
|
+
/**
|
116
|
+
* Signs a [EIP-191 Personal Sign message](https://eips.ethereum.org/EIPS/eip-191).
|
117
|
+
*
|
118
|
+
* @example
|
119
|
+
* ```ts
|
120
|
+
* const signature = await account.signMessage({
|
121
|
+
* message: 'Hello, World!'
|
122
|
+
* })
|
123
|
+
* // '0x...'
|
124
|
+
* ```
|
125
|
+
*/
|
126
|
+
signMessage: (parameters: { message: SignableMessage }) => Promise<Hex>
|
127
|
+
/**
|
128
|
+
* Signs [EIP-712 Typed Data](https://eips.ethereum.org/EIPS/eip-712).
|
129
|
+
*
|
130
|
+
* @example
|
131
|
+
* ```ts
|
132
|
+
* const signature = await account.signTypedData({
|
133
|
+
* domain,
|
134
|
+
* types,
|
135
|
+
* primaryType: 'Mail',
|
136
|
+
* message,
|
137
|
+
* })
|
138
|
+
* ```
|
139
|
+
*/
|
140
|
+
signTypedData: <
|
141
|
+
const typedData extends TypedData | Record<string, unknown>,
|
142
|
+
primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,
|
143
|
+
>(
|
144
|
+
parameters: TypedDataDefinition<typedData, primaryType>,
|
145
|
+
) => Promise<Hex>
|
146
|
+
/**
|
147
|
+
* Signs the User Operation.
|
148
|
+
*
|
149
|
+
* @example
|
150
|
+
* ```ts
|
151
|
+
* const signature = await account.signUserOperation({
|
152
|
+
* chainId: 1,
|
153
|
+
* userOperation,
|
154
|
+
* })
|
155
|
+
* ```
|
156
|
+
*/
|
157
|
+
signUserOperation: (
|
158
|
+
parameters: UnionPartialBy<UserOperation, 'sender'> & {
|
159
|
+
chainId?: number | undefined
|
160
|
+
},
|
161
|
+
) => Promise<Hex>
|
162
|
+
/** User Operation configuration properties. */
|
163
|
+
userOperation?:
|
164
|
+
| {
|
165
|
+
/** Prepares gas properties for the User Operation request. */
|
166
|
+
estimateGas?:
|
167
|
+
| ((
|
168
|
+
userOperation: UserOperationRequest,
|
169
|
+
) => Promise<
|
170
|
+
ExactPartial<EstimateUserOperationGasReturnType> | undefined
|
171
|
+
>)
|
172
|
+
| undefined
|
173
|
+
}
|
174
|
+
| undefined
|
175
|
+
}
|
176
|
+
|
177
|
+
export type SmartAccount<
|
178
|
+
implementation extends
|
179
|
+
SmartAccountImplementation = SmartAccountImplementation,
|
180
|
+
> = Assign<
|
181
|
+
implementation['extend'],
|
182
|
+
Assign<
|
183
|
+
implementation,
|
184
|
+
{
|
185
|
+
/** Address of the Smart Account. */
|
186
|
+
address: Address
|
187
|
+
/** Whether or not the Smart Account has been deployed. */
|
188
|
+
isDeployed: () => Promise<boolean>
|
189
|
+
/** Type of account. */
|
190
|
+
type: 'smart'
|
191
|
+
}
|
192
|
+
>
|
193
|
+
>
|
194
|
+
|
195
|
+
export type WebAuthnAccount = {
|
196
|
+
publicKey: Hex
|
197
|
+
sign: ({ hash }: { hash: Hash }) => Promise<WebAuthnSignReturnType>
|
198
|
+
signMessage: ({
|
199
|
+
message,
|
200
|
+
}: { message: SignableMessage }) => Promise<WebAuthnSignReturnType>
|
201
|
+
signTypedData: <
|
202
|
+
const typedData extends TypedDataDefinition | Record<string, unknown>,
|
203
|
+
primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,
|
204
|
+
>(
|
205
|
+
typedDataDefinition: TypedDataDefinition<typedData, primaryType>,
|
206
|
+
) => Promise<WebAuthnSignReturnType>
|
207
|
+
type: 'webAuthn'
|
208
|
+
}
|
@@ -0,0 +1,170 @@
|
|
1
|
+
import type { Address, Narrow } from 'abitype'
|
2
|
+
import {
|
3
|
+
type ParseAccountErrorType,
|
4
|
+
parseAccount,
|
5
|
+
} from '../../../accounts/utils/parseAccount.js'
|
6
|
+
import type { Client } from '../../../clients/createClient.js'
|
7
|
+
import type { Transport } from '../../../clients/transports/createTransport.js'
|
8
|
+
import { AccountNotFoundError } from '../../../errors/account.js'
|
9
|
+
import type { BaseError } from '../../../errors/base.js'
|
10
|
+
import type { ErrorType } from '../../../errors/utils.js'
|
11
|
+
import type { Chain } from '../../../types/chain.js'
|
12
|
+
import type { Hex } from '../../../types/misc.js'
|
13
|
+
import type { Assign, OneOf, Prettify } from '../../../types/utils.js'
|
14
|
+
import type { RequestErrorType } from '../../../utils/buildRequest.js'
|
15
|
+
import { getAction } from '../../../utils/getAction.js'
|
16
|
+
import type { SmartAccount } from '../../accounts/types.js'
|
17
|
+
import type { PaymasterActions } from '../../clients/decorators/paymaster.js'
|
18
|
+
import type {
|
19
|
+
DeriveSmartAccount,
|
20
|
+
GetSmartAccountParameter,
|
21
|
+
} from '../../types/account.js'
|
22
|
+
import type {
|
23
|
+
DeriveEntryPointVersion,
|
24
|
+
EntryPointVersion,
|
25
|
+
} from '../../types/entryPointVersion.js'
|
26
|
+
import type {
|
27
|
+
EstimateUserOperationGasReturnType as EstimateUserOperationGasReturnType_,
|
28
|
+
UserOperation,
|
29
|
+
UserOperationCalls,
|
30
|
+
UserOperationRequest,
|
31
|
+
} from '../../types/userOperation.js'
|
32
|
+
import { getUserOperationError } from '../../utils/errors/getUserOperationError.js'
|
33
|
+
import {
|
34
|
+
type FormatUserOperationGasErrorType,
|
35
|
+
formatUserOperationGas,
|
36
|
+
} from '../../utils/formatters/userOperationGas.js'
|
37
|
+
import {
|
38
|
+
type FormatUserOperationRequestErrorType,
|
39
|
+
formatUserOperationRequest,
|
40
|
+
} from '../../utils/formatters/userOperationRequest.js'
|
41
|
+
import {
|
42
|
+
type PrepareUserOperationErrorType,
|
43
|
+
type PrepareUserOperationParameters,
|
44
|
+
prepareUserOperation,
|
45
|
+
} from './prepareUserOperation.js'
|
46
|
+
|
47
|
+
export type EstimateUserOperationGasParameters<
|
48
|
+
account extends SmartAccount | undefined = SmartAccount | undefined,
|
49
|
+
accountOverride extends SmartAccount | undefined = SmartAccount | undefined,
|
50
|
+
calls extends readonly unknown[] = readonly unknown[],
|
51
|
+
//
|
52
|
+
_derivedAccount extends SmartAccount | undefined = DeriveSmartAccount<
|
53
|
+
account,
|
54
|
+
accountOverride
|
55
|
+
>,
|
56
|
+
_derivedVersion extends
|
57
|
+
EntryPointVersion = DeriveEntryPointVersion<_derivedAccount>,
|
58
|
+
> = Assign<
|
59
|
+
UserOperationRequest<_derivedVersion>,
|
60
|
+
OneOf<{ calls: UserOperationCalls<Narrow<calls>> } | { callData: Hex }> & {
|
61
|
+
paymaster?:
|
62
|
+
| Address
|
63
|
+
| true
|
64
|
+
| {
|
65
|
+
/** Retrieves paymaster-related User Operation properties to be used for sending the User Operation. */
|
66
|
+
getPaymasterData?: PaymasterActions['getPaymasterData'] | undefined
|
67
|
+
/** Retrieves paymaster-related User Operation properties to be used for gas estimation. */
|
68
|
+
getPaymasterStubData?:
|
69
|
+
| PaymasterActions['getPaymasterStubData']
|
70
|
+
| undefined
|
71
|
+
}
|
72
|
+
| undefined
|
73
|
+
/** Paymaster context to pass to `getPaymasterData` and `getPaymasterStubData` calls. */
|
74
|
+
paymasterContext?: unknown | undefined
|
75
|
+
}
|
76
|
+
> &
|
77
|
+
GetSmartAccountParameter<account, accountOverride>
|
78
|
+
|
79
|
+
export type EstimateUserOperationGasReturnType<
|
80
|
+
account extends SmartAccount | undefined = SmartAccount | undefined,
|
81
|
+
accountOverride extends SmartAccount | undefined = SmartAccount | undefined,
|
82
|
+
//
|
83
|
+
_derivedAccount extends SmartAccount | undefined = DeriveSmartAccount<
|
84
|
+
account,
|
85
|
+
accountOverride
|
86
|
+
>,
|
87
|
+
_derivedVersion extends
|
88
|
+
EntryPointVersion = DeriveEntryPointVersion<_derivedAccount>,
|
89
|
+
> = Prettify<EstimateUserOperationGasReturnType_<_derivedVersion>>
|
90
|
+
|
91
|
+
export type EstimateUserOperationGasErrorType =
|
92
|
+
| ParseAccountErrorType
|
93
|
+
| PrepareUserOperationErrorType
|
94
|
+
| FormatUserOperationRequestErrorType
|
95
|
+
| FormatUserOperationGasErrorType
|
96
|
+
| RequestErrorType
|
97
|
+
| ErrorType
|
98
|
+
|
99
|
+
/**
|
100
|
+
* Returns an estimate of gas values necessary to execute the User Operation.
|
101
|
+
*
|
102
|
+
* - Docs: https://viem.sh/actions/bundler/estimateUserOperationGas
|
103
|
+
*
|
104
|
+
* @param client - Client to use
|
105
|
+
* @param parameters - {@link EstimateUserOperationGasParameters}
|
106
|
+
* @returns The gas estimate (in wei). {@link EstimateUserOperationGasReturnType}
|
107
|
+
*
|
108
|
+
* @example
|
109
|
+
* import { createBundlerClient, http, parseEther } from 'viem'
|
110
|
+
* import { toSmartAccount } from 'viem/accounts'
|
111
|
+
* import { mainnet } from 'viem/chains'
|
112
|
+
* import { estimateUserOperationGas } from 'viem/actions'
|
113
|
+
*
|
114
|
+
* const account = await toSmartAccount({ ... })
|
115
|
+
*
|
116
|
+
* const bundlerClient = createBundlerClient({
|
117
|
+
* chain: mainnet,
|
118
|
+
* transport: http(),
|
119
|
+
* })
|
120
|
+
*
|
121
|
+
* const values = await estimateUserOperationGas(bundlerClient, {
|
122
|
+
* account,
|
123
|
+
* calls: [{ to: '0x...', value: parseEther('1') }],
|
124
|
+
* })
|
125
|
+
*/
|
126
|
+
export async function estimateUserOperationGas<
|
127
|
+
const calls extends readonly unknown[],
|
128
|
+
account extends SmartAccount | undefined,
|
129
|
+
accountOverride extends SmartAccount | undefined = undefined,
|
130
|
+
>(
|
131
|
+
client: Client<Transport, Chain | undefined, account>,
|
132
|
+
parameters: EstimateUserOperationGasParameters<
|
133
|
+
account,
|
134
|
+
accountOverride,
|
135
|
+
calls
|
136
|
+
>,
|
137
|
+
): Promise<EstimateUserOperationGasReturnType<account, accountOverride>> {
|
138
|
+
const { account: account_ = client.account } = parameters
|
139
|
+
|
140
|
+
if (!account_) throw new AccountNotFoundError()
|
141
|
+
const account = parseAccount(account_)
|
142
|
+
|
143
|
+
const request = await getAction(
|
144
|
+
client,
|
145
|
+
prepareUserOperation,
|
146
|
+
'prepareUserOperation',
|
147
|
+
)({
|
148
|
+
...parameters,
|
149
|
+
parameters: ['factory', 'nonce', 'paymaster', 'signature'],
|
150
|
+
} as unknown as PrepareUserOperationParameters)
|
151
|
+
|
152
|
+
try {
|
153
|
+
const result = await client.request({
|
154
|
+
method: 'eth_estimateUserOperationGas',
|
155
|
+
params: [
|
156
|
+
formatUserOperationRequest(request as UserOperation),
|
157
|
+
account.entryPoint.address,
|
158
|
+
],
|
159
|
+
})
|
160
|
+
return formatUserOperationGas(result) as EstimateUserOperationGasReturnType<
|
161
|
+
account,
|
162
|
+
accountOverride
|
163
|
+
>
|
164
|
+
} catch (error) {
|
165
|
+
throw getUserOperationError(error as BaseError, {
|
166
|
+
...(request as UserOperation),
|
167
|
+
calls: parameters.calls,
|
168
|
+
})
|
169
|
+
}
|
170
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import type { Address } from 'abitype'
|
2
|
+
import type { Client } from '../../../clients/createClient.js'
|
3
|
+
import type { Transport } from '../../../clients/transports/createTransport.js'
|
4
|
+
import type { ErrorType } from '../../../errors/utils.js'
|
5
|
+
import type { RequestErrorType } from '../../../utils/buildRequest.js'
|
6
|
+
|
7
|
+
export type GetSupportedEntryPointsReturnType = readonly Address[]
|
8
|
+
export type GetSupportedEntryPointsErrorType = RequestErrorType | ErrorType
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Returns the EntryPoints that the bundler supports.
|
12
|
+
*
|
13
|
+
* - Docs: https://viem.sh/actions/bundler/getSupportedEntryPoints
|
14
|
+
*
|
15
|
+
* @param client - Client to use
|
16
|
+
* @param parameters - {@link GetSupportedEntryPointsParameters}
|
17
|
+
* @returns Supported Entry Points. {@link GetSupportedEntryPointsReturnType}
|
18
|
+
*
|
19
|
+
* @example
|
20
|
+
* import { createBundlerClient, http, parseEther } from 'viem'
|
21
|
+
* import { mainnet } from 'viem/chains'
|
22
|
+
* import { getSupportedEntryPoints } from 'viem/actions'
|
23
|
+
*
|
24
|
+
* const bundlerClient = createBundlerClient({
|
25
|
+
* chain: mainnet,
|
26
|
+
* transport: http(),
|
27
|
+
* })
|
28
|
+
*
|
29
|
+
* const addresses = await getSupportedEntryPoints(bundlerClient)
|
30
|
+
*/
|
31
|
+
export function getSupportedEntryPoints(client: Client<Transport>) {
|
32
|
+
return client.request({ method: 'eth_supportedEntryPoints' })
|
33
|
+
}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
import type { Address } from 'abitype'
|
2
|
+
import type { Client } from '../../../clients/createClient.js'
|
3
|
+
import type { Transport } from '../../../clients/transports/createTransport.js'
|
4
|
+
import type { ErrorType } from '../../../errors/utils.js'
|
5
|
+
import type { Hash } from '../../../types/misc.js'
|
6
|
+
import type { Prettify } from '../../../types/utils.js'
|
7
|
+
import type { RequestErrorType } from '../../../utils/buildRequest.js'
|
8
|
+
import {
|
9
|
+
UserOperationNotFoundError,
|
10
|
+
type UserOperationNotFoundErrorType,
|
11
|
+
} from '../../errors/userOperation.js'
|
12
|
+
import type { UserOperation } from '../../types/userOperation.js'
|
13
|
+
import { formatUserOperation } from '../../utils/formatters/userOperation.js'
|
14
|
+
|
15
|
+
export type GetUserOperationParameters = {
|
16
|
+
/** The hash of the User Operation. */
|
17
|
+
hash: Hash
|
18
|
+
}
|
19
|
+
|
20
|
+
export type GetUserOperationReturnType = Prettify<{
|
21
|
+
/** The block hash the User Operation was included on. */
|
22
|
+
blockHash: Hash
|
23
|
+
/** The block number the User Operation was included on. */
|
24
|
+
blockNumber: bigint
|
25
|
+
/** The EntryPoint which handled the User Operation. */
|
26
|
+
entryPoint: Address
|
27
|
+
/** The hash of the transaction which included the User Operation. */
|
28
|
+
transactionHash: Hash
|
29
|
+
/** The User Operation. */
|
30
|
+
userOperation: UserOperation
|
31
|
+
}>
|
32
|
+
|
33
|
+
export type GetUserOperationErrorType =
|
34
|
+
| RequestErrorType
|
35
|
+
| UserOperationNotFoundErrorType
|
36
|
+
| ErrorType
|
37
|
+
|
38
|
+
/**
|
39
|
+
* Retrieves information about a User Operation given a hash.
|
40
|
+
*
|
41
|
+
* - Docs: https://viem.sh/docs/actions/bundler/getUserOperation
|
42
|
+
*
|
43
|
+
* @param client - Client to use
|
44
|
+
* @param parameters - {@link GetUserOperationParameters}
|
45
|
+
* @returns The receipt. {@link GetUserOperationReturnType}
|
46
|
+
*
|
47
|
+
* @example
|
48
|
+
* import { createBundlerClient, http } from 'viem'
|
49
|
+
* import { mainnet } from 'viem/chains'
|
50
|
+
* import { getUserOperation } from 'viem/actions
|
51
|
+
*
|
52
|
+
* const client = createBundlerClient({
|
53
|
+
* chain: mainnet,
|
54
|
+
* transport: http(),
|
55
|
+
* })
|
56
|
+
*
|
57
|
+
* const receipt = await getUserOperation(client, {
|
58
|
+
* hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
|
59
|
+
* })
|
60
|
+
*/
|
61
|
+
export async function getUserOperation(
|
62
|
+
client: Client<Transport>,
|
63
|
+
{ hash }: GetUserOperationParameters,
|
64
|
+
) {
|
65
|
+
const result = await client.request(
|
66
|
+
{
|
67
|
+
method: 'eth_getUserOperationByHash',
|
68
|
+
params: [hash],
|
69
|
+
},
|
70
|
+
{ dedupe: true },
|
71
|
+
)
|
72
|
+
|
73
|
+
if (!result) throw new UserOperationNotFoundError({ hash })
|
74
|
+
|
75
|
+
const { blockHash, blockNumber, entryPoint, transactionHash, userOperation } =
|
76
|
+
result
|
77
|
+
|
78
|
+
return {
|
79
|
+
blockHash,
|
80
|
+
blockNumber: BigInt(blockNumber),
|
81
|
+
entryPoint,
|
82
|
+
transactionHash,
|
83
|
+
userOperation: formatUserOperation(userOperation),
|
84
|
+
}
|
85
|
+
}
|