mirror of
https://github.com/getwax/patched-aa-contracts.git
synced 2026-01-09 21:18:01 -05:00
37 lines
1.6 KiB
Solidity
37 lines
1.6 KiB
Solidity
// SPDX-License-Identifier: GPL-3.0
|
|
pragma solidity ^0.8.12;
|
|
|
|
import "./UserOperation.sol";
|
|
|
|
/**
|
|
* Aggregated Signatures validator.
|
|
*/
|
|
interface IAggregator {
|
|
|
|
/**
|
|
* validate aggregated signature.
|
|
* revert if the aggregated signature does not match the given list of operations.
|
|
*/
|
|
function validateSignatures(UserOperation[] calldata userOps, bytes calldata signature) external view;
|
|
|
|
/**
|
|
* validate signature of a single userOp
|
|
* This method is should be called by bundler after EntryPoint.simulateValidation() returns (reverts) with ValidationResultWithAggregation
|
|
* First it validates the signature over the userOp. Then it returns data to be used when creating the handleOps.
|
|
* @param userOp the userOperation received from the user.
|
|
* @return sigForUserOp the value to put into the signature field of the userOp when calling handleOps.
|
|
* (usually empty, unless account and aggregator support some kind of "multisig"
|
|
*/
|
|
function validateUserOpSignature(UserOperation calldata userOp)
|
|
external view returns (bytes memory sigForUserOp);
|
|
|
|
/**
|
|
* aggregate multiple signatures into a single value.
|
|
* This method is called off-chain to calculate the signature to pass with handleOps()
|
|
* bundler MAY use optimized custom code perform this aggregation
|
|
* @param userOps array of UserOperations to collect the signatures from.
|
|
* @return aggregatedSignature the aggregated signature
|
|
*/
|
|
function aggregateSignatures(UserOperation[] calldata userOps) external view returns (bytes memory aggregatedSignature);
|
|
}
|