prepareUserOperationRequest
Prepares a user operation request for signing by populating a sender
, nonce
, initCode
, gas price values, gas limit values, and optionally requesting sponsorship from a paymaster.
Usage
example.ts
import { smartAccountClient, simpleSmartAccount } from "./smartAccountClient"
import { pimlicoBundlerClient } from "./bundlerClient"
import { parseAbiItem, encodeFunctionData } from "viem"
const callData = await simpleSmartAccount.encodeCallData({
to: "0x0488bEE1Ec682db0F0E74AB52faFdDdEf10Af123",
data: encodeFunctionData({
abi: [parseAbiItem('function mint()')]
}),
value: 0n
})
// only if using pimlico
const gasPrices = await pimlicoBundlerClient.getUserOperationGasPrice()
const userOperation = await smartAccountClient.prepareUserOperationRequest({
userOperation: {
callData, // callData is the only required field in the partial user operation
maxFeePerGas: gasPrices.fast.maxFeePerGas,
maxPriorityFeePerGas: gasPrices.fast.maxPriorityFeePerGas
}
})
Returns
- Type:
UserOperation
The UserOperation
with the remaining fields (except the signature
) filled.
Parameters
userOperation
- Type:
Partial<UserOperation>
The partial user operation. Only the callData
field is required.
sponsorUserOperation (optional)
- Type:
(args: { userOperation: UserOperation, entryPoint: Address }) => Promise<UserOperation>
The paymaster middleware function (if one is used).
account (optional)
- Type:
SmartAccount
The smart account that will be used to fetch the nonce
, initCode
, sender
, and the gas price values if they are not already filled.