buildUserOperation method
Builds a UserOperation for execution.
Implementation
@override
Future<UserOperation> buildUserOperation({
required Call call,
BigInt? maxFeePerGas,
BigInt? maxPriorityFeePerGas,
BigInt? nonce,
}) async {
final sender = await getAddress();
final callData = encodeCallData(call.to, call.value, call.data);
final opNonce = nonce ?? await getNonce();
// Init factory fields
String? factory;
String? factoryData;
String? initCode;
if (!await isDeployed()) {
factory = await getFactory();
factoryData = await getFactoryData();
initCode = await getInitCode();
if (initCode == '0x') initCode = null;
}
return UserOperation(
sender: sender,
nonce: opNonce,
callData: callData,
callGasLimit: BigInt.from(1000000), // Default high limit for estimation
verificationGasLimit: BigInt.from(1000000),
preVerificationGas: BigInt.from(100000),
maxFeePerGas: maxFeePerGas ?? BigInt.zero,
maxPriorityFeePerGas: maxPriorityFeePerGas ?? BigInt.zero,
signature: '0x',
factory: factory,
factoryData: factoryData,
initCode: initCode,
);
}