viem 2.17.10 → 2.18.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +16 -2
- package/README.md +6 -0
- 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/chains/definitions/bobaSepolia.js +23 -0
- package/_cjs/chains/definitions/bobaSepolia.js.map +1 -0
- package/_cjs/chains/index.js +9 -7
- package/_cjs/chains/index.js.map +1 -1
- package/_cjs/clients/decorators/public.js.map +1 -1
- package/_cjs/clients/decorators/wallet.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/chains/definitions/bobaSepolia.js +20 -0
- package/_esm/chains/definitions/bobaSepolia.js.map +1 -0
- package/_esm/chains/index.js +1 -0
- package/_esm/chains/index.js.map +1 -1
- package/_esm/clients/decorators/public.js.map +1 -1
- package/_esm/clients/decorators/wallet.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/bobaSepolia.d.ts +35 -0
- package/_types/chains/definitions/bobaSepolia.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 +2 -2
- package/_types/clients/decorators/public.d.ts.map +1 -1
- package/_types/clients/decorators/wallet.d.ts +1 -1
- package/_types/clients/decorators/wallet.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/types/utils.d.ts +2 -2
- package/_types/types/utils.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/chains/definitions/bobaSepolia.ts +20 -0
- package/chains/index.ts +1 -0
- package/clients/decorators/public.ts +2 -3
- package/clients/decorators/wallet.ts +1 -2
- 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/types/utils.ts +6 -5
- 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,149 @@
|
|
1
|
+
import type { Address, Narrow } from 'abitype'
|
2
|
+
import { parseAccount } from '../../../accounts/utils/parseAccount.js'
|
3
|
+
import type { Client } from '../../../clients/createClient.js'
|
4
|
+
import type { Transport } from '../../../clients/transports/createTransport.js'
|
5
|
+
import { AccountNotFoundError } from '../../../errors/account.js'
|
6
|
+
import type { BaseError } from '../../../errors/base.js'
|
7
|
+
import type { ErrorType } from '../../../errors/utils.js'
|
8
|
+
import type { Chain } from '../../../types/chain.js'
|
9
|
+
import type { Hex } from '../../../types/misc.js'
|
10
|
+
import type { Assign, OneOf } from '../../../types/utils.js'
|
11
|
+
import type { RequestErrorType } from '../../../utils/buildRequest.js'
|
12
|
+
import { getAction } from '../../../utils/getAction.js'
|
13
|
+
import type { SmartAccount } from '../../accounts/types.js'
|
14
|
+
import type { PaymasterActions } from '../../clients/decorators/paymaster.js'
|
15
|
+
import type {
|
16
|
+
DeriveSmartAccount,
|
17
|
+
GetSmartAccountParameter,
|
18
|
+
} from '../../types/account.js'
|
19
|
+
import type {
|
20
|
+
DeriveEntryPointVersion,
|
21
|
+
EntryPointVersion,
|
22
|
+
} from '../../types/entryPointVersion.js'
|
23
|
+
import type {
|
24
|
+
UserOperation,
|
25
|
+
UserOperationCalls,
|
26
|
+
UserOperationRequest,
|
27
|
+
} from '../../types/userOperation.js'
|
28
|
+
import { getUserOperationError } from '../../utils/errors/getUserOperationError.js'
|
29
|
+
import {
|
30
|
+
type FormatUserOperationRequestErrorType,
|
31
|
+
formatUserOperationRequest,
|
32
|
+
} from '../../utils/formatters/userOperationRequest.js'
|
33
|
+
import {
|
34
|
+
type PrepareUserOperationErrorType,
|
35
|
+
type PrepareUserOperationParameters,
|
36
|
+
prepareUserOperation,
|
37
|
+
} from './prepareUserOperation.js'
|
38
|
+
|
39
|
+
export type SendUserOperationParameters<
|
40
|
+
account extends SmartAccount | undefined = SmartAccount | undefined,
|
41
|
+
accountOverride extends SmartAccount | undefined = SmartAccount | undefined,
|
42
|
+
calls extends readonly unknown[] = readonly unknown[],
|
43
|
+
//
|
44
|
+
_derivedAccount extends SmartAccount | undefined = DeriveSmartAccount<
|
45
|
+
account,
|
46
|
+
accountOverride
|
47
|
+
>,
|
48
|
+
_derivedVersion extends
|
49
|
+
EntryPointVersion = DeriveEntryPointVersion<_derivedAccount>,
|
50
|
+
> = Assign<
|
51
|
+
UserOperationRequest<_derivedVersion>,
|
52
|
+
OneOf<{ calls: UserOperationCalls<Narrow<calls>> } | { callData: Hex }> & {
|
53
|
+
paymaster?:
|
54
|
+
| Address
|
55
|
+
| true
|
56
|
+
| {
|
57
|
+
/** Retrieves paymaster-related User Operation properties to be used for sending the User Operation. */
|
58
|
+
getPaymasterData?: PaymasterActions['getPaymasterData'] | undefined
|
59
|
+
/** Retrieves paymaster-related User Operation properties to be used for gas estimation. */
|
60
|
+
getPaymasterStubData?:
|
61
|
+
| PaymasterActions['getPaymasterStubData']
|
62
|
+
| undefined
|
63
|
+
}
|
64
|
+
| undefined
|
65
|
+
/** Paymaster context to pass to `getPaymasterData` and `getPaymasterStubData` calls. */
|
66
|
+
paymasterContext?: unknown
|
67
|
+
}
|
68
|
+
> &
|
69
|
+
GetSmartAccountParameter<account, accountOverride>
|
70
|
+
|
71
|
+
export type SendUserOperationReturnType = Hex
|
72
|
+
|
73
|
+
export type SendUserOperationErrorType =
|
74
|
+
| FormatUserOperationRequestErrorType
|
75
|
+
| PrepareUserOperationErrorType
|
76
|
+
| RequestErrorType
|
77
|
+
| ErrorType
|
78
|
+
|
79
|
+
/**
|
80
|
+
* Broadcasts a User Operation to the Bundler.
|
81
|
+
*
|
82
|
+
* - Docs: https://viem.sh/actions/bundler/sendUserOperation
|
83
|
+
*
|
84
|
+
* @param client - Client to use
|
85
|
+
* @param parameters - {@link SendUserOperationParameters}
|
86
|
+
* @returns The User Operation hash. {@link SendUserOperationReturnType}
|
87
|
+
*
|
88
|
+
* @example
|
89
|
+
* import { createBundlerClient, http, parseEther } from 'viem'
|
90
|
+
* import { mainnet } from 'viem/chains'
|
91
|
+
* import { toSmartAccount } from 'viem/accounts'
|
92
|
+
* import { sendUserOperation } from 'viem/actions'
|
93
|
+
*
|
94
|
+
* const account = await toSmartAccount({ ... })
|
95
|
+
*
|
96
|
+
* const bundlerClient = createBundlerClient({
|
97
|
+
* chain: mainnet,
|
98
|
+
* transport: http(),
|
99
|
+
* })
|
100
|
+
*
|
101
|
+
* const values = await sendUserOperation(bundlerClient, {
|
102
|
+
* account,
|
103
|
+
* calls: [{ to: '0x...', value: parseEther('1') }],
|
104
|
+
* })
|
105
|
+
*/
|
106
|
+
export async function sendUserOperation<
|
107
|
+
const calls extends readonly unknown[],
|
108
|
+
account extends SmartAccount | undefined,
|
109
|
+
accountOverride extends SmartAccount | undefined = undefined,
|
110
|
+
>(
|
111
|
+
client: Client<Transport, Chain | undefined, account>,
|
112
|
+
parameters: SendUserOperationParameters<account, accountOverride, calls>,
|
113
|
+
) {
|
114
|
+
const { account: account_ = client.account } = parameters
|
115
|
+
|
116
|
+
if (!account_) throw new AccountNotFoundError()
|
117
|
+
const account = parseAccount(account_)
|
118
|
+
|
119
|
+
const request = await getAction(
|
120
|
+
client,
|
121
|
+
prepareUserOperation,
|
122
|
+
'prepareUserOperation',
|
123
|
+
)(parameters as unknown as PrepareUserOperationParameters)
|
124
|
+
|
125
|
+
const signature =
|
126
|
+
parameters.signature ||
|
127
|
+
(await account.signUserOperation(request as UserOperation))
|
128
|
+
|
129
|
+
const rpcParameters = formatUserOperationRequest({
|
130
|
+
...request,
|
131
|
+
signature,
|
132
|
+
} as UserOperation)
|
133
|
+
|
134
|
+
try {
|
135
|
+
return await client.request(
|
136
|
+
{
|
137
|
+
method: 'eth_sendUserOperation',
|
138
|
+
params: [rpcParameters, account.entryPoint.address],
|
139
|
+
},
|
140
|
+
{ retryCount: 0 },
|
141
|
+
)
|
142
|
+
} catch (error) {
|
143
|
+
throw getUserOperationError(error as BaseError, {
|
144
|
+
...(request as UserOperation),
|
145
|
+
calls: parameters.calls,
|
146
|
+
signature,
|
147
|
+
})
|
148
|
+
}
|
149
|
+
}
|
@@ -0,0 +1,139 @@
|
|
1
|
+
import type { Client } from '../../../clients/createClient.js'
|
2
|
+
import type { Transport } from '../../../clients/transports/createTransport.js'
|
3
|
+
import type { ErrorType } from '../../../errors/utils.js'
|
4
|
+
import type { Hash } from '../../../types/misc.js'
|
5
|
+
import type { Prettify } from '../../../types/utils.js'
|
6
|
+
import { getAction } from '../../../utils/getAction.js'
|
7
|
+
import { type ObserveErrorType, observe } from '../../../utils/observe.js'
|
8
|
+
import { type PollErrorType, poll } from '../../../utils/poll.js'
|
9
|
+
import { stringify } from '../../../utils/stringify.js'
|
10
|
+
import {
|
11
|
+
WaitForUserOperationReceiptTimeoutError,
|
12
|
+
type WaitForUserOperationReceiptTimeoutErrorType,
|
13
|
+
} from '../../errors/userOperation.js'
|
14
|
+
import type { UserOperationReceipt } from '../../types/userOperation.js'
|
15
|
+
import {
|
16
|
+
type GetUserOperationReceiptErrorType,
|
17
|
+
getUserOperationReceipt,
|
18
|
+
} from './getUserOperationReceipt.js'
|
19
|
+
|
20
|
+
export type WaitForUserOperationReceiptParameters = {
|
21
|
+
/** The hash of the User Operation. */
|
22
|
+
hash: Hash
|
23
|
+
/**
|
24
|
+
* Polling frequency (in ms). Defaults to the client's pollingInterval config.
|
25
|
+
* @default client.pollingInterval
|
26
|
+
*/
|
27
|
+
pollingInterval?: number | undefined
|
28
|
+
/**
|
29
|
+
* The number of times to retry.
|
30
|
+
* @default 6
|
31
|
+
*/
|
32
|
+
retryCount?: number | undefined
|
33
|
+
/** Optional timeout (in ms) to wait before stopping polling. */
|
34
|
+
timeout?: number | undefined
|
35
|
+
}
|
36
|
+
|
37
|
+
export type WaitForUserOperationReceiptReturnType =
|
38
|
+
Prettify<UserOperationReceipt>
|
39
|
+
|
40
|
+
export type WaitForUserOperationReceiptErrorType =
|
41
|
+
| WaitForUserOperationReceiptTimeoutErrorType
|
42
|
+
| PollErrorType
|
43
|
+
| ObserveErrorType
|
44
|
+
| ErrorType
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Waits for the User Operation to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the User Operation receipt.
|
48
|
+
*
|
49
|
+
* - Docs: https://viem.sh/docs/actions/bundler/waitForUserOperationReceipt
|
50
|
+
*
|
51
|
+
* @param client - Client to use
|
52
|
+
* @param parameters - {@link WaitForUserOperationReceiptParameters}
|
53
|
+
* @returns The receipt. {@link WaitForUserOperationReceiptReturnType}
|
54
|
+
*
|
55
|
+
* @example
|
56
|
+
* import { createBundlerClient, http } from 'viem'
|
57
|
+
* import { mainnet } from 'viem/chains'
|
58
|
+
* import { waitForUserOperationReceipt } from 'viem/actions'
|
59
|
+
*
|
60
|
+
* const client = createBundlerClient({
|
61
|
+
* chain: mainnet,
|
62
|
+
* transport: http(),
|
63
|
+
* })
|
64
|
+
*
|
65
|
+
* const receipt = await waitForUserOperationReceipt(client, {
|
66
|
+
* hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
|
67
|
+
* })
|
68
|
+
*/
|
69
|
+
export function waitForUserOperationReceipt(
|
70
|
+
client: Client<Transport>,
|
71
|
+
parameters: WaitForUserOperationReceiptParameters,
|
72
|
+
): Promise<WaitForUserOperationReceiptReturnType> {
|
73
|
+
const {
|
74
|
+
hash,
|
75
|
+
pollingInterval = client.pollingInterval,
|
76
|
+
retryCount,
|
77
|
+
timeout = 120_000,
|
78
|
+
} = parameters
|
79
|
+
|
80
|
+
let count = 0
|
81
|
+
const observerId = stringify([
|
82
|
+
'waitForUserOperationReceipt',
|
83
|
+
client.uid,
|
84
|
+
hash,
|
85
|
+
])
|
86
|
+
|
87
|
+
return new Promise((resolve, reject) => {
|
88
|
+
const unobserve = observe(observerId, { resolve, reject }, (emit) => {
|
89
|
+
const done = (fn: () => void) => {
|
90
|
+
unpoll()
|
91
|
+
fn()
|
92
|
+
unobserve()
|
93
|
+
}
|
94
|
+
|
95
|
+
const unpoll = poll(
|
96
|
+
async () => {
|
97
|
+
if (retryCount && count >= retryCount)
|
98
|
+
done(() =>
|
99
|
+
emit.reject(
|
100
|
+
new WaitForUserOperationReceiptTimeoutError({ hash }),
|
101
|
+
),
|
102
|
+
)
|
103
|
+
|
104
|
+
try {
|
105
|
+
const receipt = await getAction(
|
106
|
+
client,
|
107
|
+
getUserOperationReceipt,
|
108
|
+
'getUserOperationReceipt',
|
109
|
+
)({ hash })
|
110
|
+
done(() => emit.resolve(receipt))
|
111
|
+
} catch (err) {
|
112
|
+
const error = err as GetUserOperationReceiptErrorType
|
113
|
+
if (error.name !== 'UserOperationReceiptNotFoundError')
|
114
|
+
done(() => emit.reject(error))
|
115
|
+
}
|
116
|
+
|
117
|
+
count++
|
118
|
+
},
|
119
|
+
{
|
120
|
+
emitOnBegin: true,
|
121
|
+
interval: pollingInterval,
|
122
|
+
},
|
123
|
+
)
|
124
|
+
|
125
|
+
if (timeout)
|
126
|
+
setTimeout(
|
127
|
+
() =>
|
128
|
+
done(() =>
|
129
|
+
emit.reject(
|
130
|
+
new WaitForUserOperationReceiptTimeoutError({ hash }),
|
131
|
+
),
|
132
|
+
),
|
133
|
+
timeout,
|
134
|
+
)
|
135
|
+
|
136
|
+
return unpoll
|
137
|
+
})
|
138
|
+
})
|
139
|
+
}
|
@@ -0,0 +1,135 @@
|
|
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 { Hex } from '../../../types/misc.js'
|
6
|
+
import type { OneOf, PartialBy, Prettify } from '../../../types/utils.js'
|
7
|
+
import { hexToBigInt } from '../../../utils/encoding/fromHex.js'
|
8
|
+
import { numberToHex } from '../../../utils/encoding/toHex.js'
|
9
|
+
import type { UserOperation } from '../../types/userOperation.js'
|
10
|
+
import {
|
11
|
+
type FormatUserOperationRequestErrorType,
|
12
|
+
formatUserOperationRequest,
|
13
|
+
} from '../../utils/formatters/userOperationRequest.js'
|
14
|
+
|
15
|
+
export type GetPaymasterDataParameters = OneOf<
|
16
|
+
| PartialBy<
|
17
|
+
Pick<
|
18
|
+
UserOperation<'0.6'>,
|
19
|
+
| 'callData'
|
20
|
+
| 'callGasLimit'
|
21
|
+
| 'initCode'
|
22
|
+
| 'maxFeePerGas'
|
23
|
+
| 'maxPriorityFeePerGas'
|
24
|
+
| 'nonce'
|
25
|
+
| 'sender'
|
26
|
+
| 'preVerificationGas'
|
27
|
+
| 'verificationGasLimit'
|
28
|
+
>,
|
29
|
+
| 'callGasLimit'
|
30
|
+
| 'initCode'
|
31
|
+
| 'maxFeePerGas'
|
32
|
+
| 'maxPriorityFeePerGas'
|
33
|
+
| 'preVerificationGas'
|
34
|
+
| 'verificationGasLimit'
|
35
|
+
>
|
36
|
+
| PartialBy<
|
37
|
+
Pick<
|
38
|
+
UserOperation<'0.7'>,
|
39
|
+
| 'callData'
|
40
|
+
| 'callGasLimit'
|
41
|
+
| 'factory'
|
42
|
+
| 'factoryData'
|
43
|
+
| 'maxFeePerGas'
|
44
|
+
| 'maxPriorityFeePerGas'
|
45
|
+
| 'nonce'
|
46
|
+
| 'sender'
|
47
|
+
| 'preVerificationGas'
|
48
|
+
| 'verificationGasLimit'
|
49
|
+
>,
|
50
|
+
| 'callGasLimit'
|
51
|
+
| 'factory'
|
52
|
+
| 'factoryData'
|
53
|
+
| 'maxFeePerGas'
|
54
|
+
| 'maxPriorityFeePerGas'
|
55
|
+
| 'preVerificationGas'
|
56
|
+
| 'verificationGasLimit'
|
57
|
+
>
|
58
|
+
> & {
|
59
|
+
context?: unknown | undefined
|
60
|
+
chainId: number
|
61
|
+
entryPointAddress: Address
|
62
|
+
}
|
63
|
+
|
64
|
+
export type GetPaymasterDataReturnType = Prettify<
|
65
|
+
OneOf<
|
66
|
+
| { paymasterAndData: Hex }
|
67
|
+
| {
|
68
|
+
paymaster: Address
|
69
|
+
paymasterData: Hex
|
70
|
+
paymasterVerificationGasLimit: bigint
|
71
|
+
paymasterPostOpGasLimit: bigint
|
72
|
+
}
|
73
|
+
>
|
74
|
+
>
|
75
|
+
|
76
|
+
export type GetPaymasterDataErrorType =
|
77
|
+
| FormatUserOperationRequestErrorType
|
78
|
+
| ErrorType
|
79
|
+
|
80
|
+
/**
|
81
|
+
* Retrieves paymaster-related User Operation properties to be used for sending the User Operation.
|
82
|
+
*
|
83
|
+
* - Docs: https://viem.sh/account-abstraction/actions/paymaster/getPaymasterData
|
84
|
+
*
|
85
|
+
* @param client - Client to use
|
86
|
+
* @param parameters - {@link GetPaymasterDataParameters}
|
87
|
+
* @returns Paymaster-related User Operation properties. {@link GetPaymasterDataReturnType}
|
88
|
+
*
|
89
|
+
* @example
|
90
|
+
* import { http } from 'viem'
|
91
|
+
* import { createPaymasterClient, getPaymasterData } from 'viem/account-abstraction'
|
92
|
+
*
|
93
|
+
* const paymasterClient = createPaymasterClient({
|
94
|
+
* transport: http('https://...'),
|
95
|
+
* })
|
96
|
+
*
|
97
|
+
* const userOperation = { ... }
|
98
|
+
*
|
99
|
+
* const values = await getPaymasterData(paymasterClient, {
|
100
|
+
* chainId: 1,
|
101
|
+
* entryPointAddress: '0x...',
|
102
|
+
* ...userOperation,
|
103
|
+
* })
|
104
|
+
*/
|
105
|
+
export async function getPaymasterData(
|
106
|
+
client: Client<Transport>,
|
107
|
+
parameters: GetPaymasterDataParameters,
|
108
|
+
): Promise<GetPaymasterDataReturnType> {
|
109
|
+
const { chainId, entryPointAddress, context, ...userOperation } = parameters
|
110
|
+
const request = formatUserOperationRequest(userOperation)
|
111
|
+
const { paymasterPostOpGasLimit, paymasterVerificationGasLimit, ...rest } =
|
112
|
+
await client.request({
|
113
|
+
method: 'pm_getPaymasterData',
|
114
|
+
params: [
|
115
|
+
{
|
116
|
+
...request,
|
117
|
+
callGasLimit: request.callGasLimit ?? '0x0',
|
118
|
+
verificationGasLimit: request.verificationGasLimit ?? '0x0',
|
119
|
+
preVerificationGas: request.preVerificationGas ?? '0x0',
|
120
|
+
},
|
121
|
+
entryPointAddress,
|
122
|
+
numberToHex(chainId),
|
123
|
+
context,
|
124
|
+
],
|
125
|
+
})
|
126
|
+
return {
|
127
|
+
...rest,
|
128
|
+
...(paymasterPostOpGasLimit && {
|
129
|
+
paymasterPostOpGasLimit: hexToBigInt(paymasterPostOpGasLimit),
|
130
|
+
}),
|
131
|
+
...(paymasterVerificationGasLimit && {
|
132
|
+
paymasterVerificationGasLimit: hexToBigInt(paymasterVerificationGasLimit),
|
133
|
+
}),
|
134
|
+
} as unknown as GetPaymasterDataReturnType
|
135
|
+
}
|
@@ -0,0 +1,138 @@
|
|
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 { Hex } from '../../../types/misc.js'
|
6
|
+
import type { OneOf, PartialBy, Prettify } from '../../../types/utils.js'
|
7
|
+
import { hexToBigInt } from '../../../utils/encoding/fromHex.js'
|
8
|
+
import { numberToHex } from '../../../utils/encoding/toHex.js'
|
9
|
+
import type { UserOperation } from '../../types/userOperation.js'
|
10
|
+
import {
|
11
|
+
type FormatUserOperationRequestErrorType,
|
12
|
+
formatUserOperationRequest,
|
13
|
+
} from '../../utils/formatters/userOperationRequest.js'
|
14
|
+
|
15
|
+
export type GetPaymasterStubDataParameters = OneOf<
|
16
|
+
| PartialBy<
|
17
|
+
Pick<
|
18
|
+
UserOperation<'0.6'>,
|
19
|
+
| 'callData'
|
20
|
+
| 'callGasLimit'
|
21
|
+
| 'initCode'
|
22
|
+
| 'maxFeePerGas'
|
23
|
+
| 'maxPriorityFeePerGas'
|
24
|
+
| 'nonce'
|
25
|
+
| 'sender'
|
26
|
+
| 'preVerificationGas'
|
27
|
+
| 'verificationGasLimit'
|
28
|
+
>,
|
29
|
+
| 'callGasLimit'
|
30
|
+
| 'initCode'
|
31
|
+
| 'maxFeePerGas'
|
32
|
+
| 'maxPriorityFeePerGas'
|
33
|
+
| 'preVerificationGas'
|
34
|
+
| 'verificationGasLimit'
|
35
|
+
>
|
36
|
+
| PartialBy<
|
37
|
+
Pick<
|
38
|
+
UserOperation<'0.7'>,
|
39
|
+
| 'callData'
|
40
|
+
| 'callGasLimit'
|
41
|
+
| 'factory'
|
42
|
+
| 'factoryData'
|
43
|
+
| 'maxFeePerGas'
|
44
|
+
| 'maxPriorityFeePerGas'
|
45
|
+
| 'nonce'
|
46
|
+
| 'sender'
|
47
|
+
| 'preVerificationGas'
|
48
|
+
| 'verificationGasLimit'
|
49
|
+
>,
|
50
|
+
| 'callGasLimit'
|
51
|
+
| 'factory'
|
52
|
+
| 'factoryData'
|
53
|
+
| 'maxFeePerGas'
|
54
|
+
| 'maxPriorityFeePerGas'
|
55
|
+
| 'preVerificationGas'
|
56
|
+
| 'verificationGasLimit'
|
57
|
+
>
|
58
|
+
> & {
|
59
|
+
context?: unknown | undefined
|
60
|
+
chainId: number
|
61
|
+
entryPointAddress: Address
|
62
|
+
}
|
63
|
+
|
64
|
+
export type GetPaymasterStubDataReturnType = Prettify<
|
65
|
+
OneOf<
|
66
|
+
| { paymasterAndData: Hex }
|
67
|
+
| {
|
68
|
+
paymaster: Address
|
69
|
+
paymasterData: Hex
|
70
|
+
paymasterVerificationGasLimit: bigint
|
71
|
+
paymasterPostOpGasLimit: bigint
|
72
|
+
}
|
73
|
+
> & {
|
74
|
+
sponsor?: { name: string; icon?: string | undefined } | undefined
|
75
|
+
isFinal?: boolean | undefined
|
76
|
+
}
|
77
|
+
>
|
78
|
+
|
79
|
+
export type GetPaymasterStubDataErrorType =
|
80
|
+
| FormatUserOperationRequestErrorType
|
81
|
+
| ErrorType
|
82
|
+
|
83
|
+
/**
|
84
|
+
* Retrieves paymaster-related User Operation properties to be used for gas estimation.
|
85
|
+
*
|
86
|
+
* - Docs: https://viem.sh/account-abstraction/actions/paymaster/getPaymasterStubData
|
87
|
+
*
|
88
|
+
* @param client - Client to use
|
89
|
+
* @param parameters - {@link GetPaymasterStubDataParameters}
|
90
|
+
* @returns Paymaster-related User Operation properties. {@link GetPaymasterStubDataReturnType}
|
91
|
+
*
|
92
|
+
* @example
|
93
|
+
* import { http } from 'viem'
|
94
|
+
* import { createPaymasterClient, getPaymasterStubData } from 'viem/account-abstraction'
|
95
|
+
*
|
96
|
+
* const paymasterClient = createPaymasterClient({
|
97
|
+
* transport: http('https://...'),
|
98
|
+
* })
|
99
|
+
*
|
100
|
+
* const userOperation = { ... }
|
101
|
+
*
|
102
|
+
* const values = await getPaymasterStubData(paymasterClient, {
|
103
|
+
* chainId: 1,
|
104
|
+
* entryPointAddress: '0x...',
|
105
|
+
* ...userOperation,
|
106
|
+
* })
|
107
|
+
*/
|
108
|
+
export async function getPaymasterStubData(
|
109
|
+
client: Client<Transport>,
|
110
|
+
parameters: GetPaymasterStubDataParameters,
|
111
|
+
): Promise<GetPaymasterStubDataReturnType> {
|
112
|
+
const { chainId, entryPointAddress, context, ...userOperation } = parameters
|
113
|
+
const request = formatUserOperationRequest(userOperation)
|
114
|
+
const { paymasterPostOpGasLimit, paymasterVerificationGasLimit, ...rest } =
|
115
|
+
await client.request({
|
116
|
+
method: 'pm_getPaymasterStubData',
|
117
|
+
params: [
|
118
|
+
{
|
119
|
+
...request,
|
120
|
+
callGasLimit: request.callGasLimit ?? '0x0',
|
121
|
+
verificationGasLimit: request.verificationGasLimit ?? '0x0',
|
122
|
+
preVerificationGas: request.preVerificationGas ?? '0x0',
|
123
|
+
},
|
124
|
+
entryPointAddress,
|
125
|
+
numberToHex(chainId),
|
126
|
+
context,
|
127
|
+
],
|
128
|
+
})
|
129
|
+
return {
|
130
|
+
...rest,
|
131
|
+
...(paymasterPostOpGasLimit && {
|
132
|
+
paymasterPostOpGasLimit: hexToBigInt(paymasterPostOpGasLimit),
|
133
|
+
}),
|
134
|
+
...(paymasterVerificationGasLimit && {
|
135
|
+
paymasterVerificationGasLimit: hexToBigInt(paymasterVerificationGasLimit),
|
136
|
+
}),
|
137
|
+
} as unknown as GetPaymasterStubDataReturnType
|
138
|
+
}
|