Initial commit
This commit is contained in:
62
contracts/interfaces/IPolicyEngine.sol
Normal file
62
contracts/interfaces/IPolicyEngine.sol
Normal file
@@ -0,0 +1,62 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.24;
|
||||
|
||||
import "./IPolicyModule.sol";
|
||||
|
||||
/**
|
||||
* @title IPolicyEngine
|
||||
* @notice Interface for policy engine
|
||||
* @dev Aggregates policy decisions from multiple modules
|
||||
*/
|
||||
interface IPolicyEngine {
|
||||
/**
|
||||
* @notice Emitted when a policy module is registered
|
||||
* @param module Module address
|
||||
* @param name Module name
|
||||
*/
|
||||
event PolicyModuleRegistered(address indexed module, string name);
|
||||
|
||||
/**
|
||||
* @notice Emitted when a policy module is unregistered
|
||||
* @param module Module address
|
||||
*/
|
||||
event PolicyModuleUnregistered(address indexed module);
|
||||
|
||||
/**
|
||||
* @notice Register a policy module
|
||||
* @param module Module address
|
||||
*/
|
||||
function registerPolicyModule(address module) external;
|
||||
|
||||
/**
|
||||
* @notice Unregister a policy module
|
||||
* @param module Module address
|
||||
*/
|
||||
function unregisterPolicyModule(address module) external;
|
||||
|
||||
/**
|
||||
* @notice Evaluate all registered policy modules
|
||||
* @param actionType Type of action
|
||||
* @param actionData Action-specific data
|
||||
* @return allowed True if all modules allow the action
|
||||
* @return reason Reason for denial (if any module denies)
|
||||
*/
|
||||
function evaluateAll(
|
||||
bytes32 actionType,
|
||||
bytes memory actionData
|
||||
) external view returns (bool allowed, string memory reason);
|
||||
|
||||
/**
|
||||
* @notice Get all registered policy modules
|
||||
* @return modules Array of module addresses
|
||||
*/
|
||||
function getPolicyModules() external view returns (address[] memory modules);
|
||||
|
||||
/**
|
||||
* @notice Check if a module is registered
|
||||
* @param module Module address
|
||||
* @return registered True if registered
|
||||
*/
|
||||
function isRegistered(address module) external view returns (bool registered);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user