IAccessManager.sol 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.20;
  3. import {IAccessManaged} from "./IAccessManaged.sol";
  4. import {Time} from "../../utils/types/Time.sol";
  5. interface IAccessManager {
  6. /**
  7. * @dev A delayed operation was scheduled.
  8. */
  9. event OperationScheduled(bytes32 indexed operationId, uint48 schedule, address caller, address target, bytes data);
  10. /**
  11. * @dev A scheduled operation was executed.
  12. */
  13. event OperationExecuted(bytes32 indexed operationId, uint48 schedule);
  14. /**
  15. * @dev A scheduled operation was canceled.
  16. */
  17. event OperationCanceled(bytes32 indexed operationId, uint48 schedule);
  18. event GroupLabel(uint64 indexed groupId, string label);
  19. event GroupGranted(uint64 indexed groupId, address indexed account, uint48 since, uint32 delay);
  20. event GroupRevoked(uint64 indexed groupId, address indexed account);
  21. event GroupExecutionDelayUpdated(uint64 indexed groupId, address indexed account, uint32 delay, uint48 from);
  22. event GroupAdminChanged(uint64 indexed groupId, uint64 indexed admin);
  23. event GroupGuardianChanged(uint64 indexed groupId, uint64 indexed guardian);
  24. event GroupGrantDelayChanged(uint64 indexed groupId, uint32 delay, uint48 from);
  25. event ContractFamilyUpdated(address indexed target, uint64 indexed familyId);
  26. event ContractClosed(address indexed target, bool closed);
  27. event FamilyFunctionGroupUpdated(uint64 indexed familyId, bytes4 selector, uint64 indexed groupId);
  28. event FamilyAdminDelayUpdated(uint64 indexed familyId, uint32 delay, uint48 from);
  29. error AccessManagerAlreadyScheduled(bytes32 operationId);
  30. error AccessManagerNotScheduled(bytes32 operationId);
  31. error AccessManagerNotReady(bytes32 operationId);
  32. error AccessManagerExpired(bytes32 operationId);
  33. error AccessManagerLockedGroup(uint64 groupId);
  34. error AccessManagerInvalidFamily(uint64 familyId);
  35. error AccessManagerAccountAlreadyInGroup(uint64 groupId, address account);
  36. error AccessManagerAccountNotInGroup(uint64 groupId, address account);
  37. error AccessManagerBadConfirmation();
  38. error AccessManagerUnauthorizedAccount(address msgsender, uint64 groupId);
  39. error AccessManagerUnauthorizedCall(address caller, address target, bytes4 selector);
  40. error AccessManagerCannotCancel(address msgsender, address caller, address target, bytes4 selector);
  41. function canCall(
  42. address caller,
  43. address target,
  44. bytes4 selector
  45. ) external view returns (bool allowed, uint32 delay);
  46. function expiration() external returns (uint32);
  47. function getContractFamily(address target) external view returns (uint64 familyId, bool closed);
  48. function getFamilyFunctionGroup(uint64 familyId, bytes4 selector) external view returns (uint64);
  49. function getFamilyAdminDelay(uint64 familyId) external view returns (uint32);
  50. function getGroupAdmin(uint64 groupId) external view returns (uint64);
  51. function getGroupGuardian(uint64 groupId) external view returns (uint64);
  52. function getGroupGrantDelay(uint64 groupId) external view returns (uint32);
  53. function getAccess(uint64 groupId, address account) external view returns (uint48, uint32, uint32, uint48);
  54. function hasGroup(uint64 groupId, address account) external view returns (bool, uint32);
  55. function labelGroup(uint64 groupId, string calldata label) external;
  56. function grantGroup(uint64 groupId, address account, uint32 executionDelay) external;
  57. function revokeGroup(uint64 groupId, address account) external;
  58. function renounceGroup(uint64 groupId, address callerConfirmation) external;
  59. function setExecuteDelay(uint64 groupId, address account, uint32 newDelay) external;
  60. function setGroupAdmin(uint64 groupId, uint64 admin) external;
  61. function setGroupGuardian(uint64 groupId, uint64 guardian) external;
  62. function setGrantDelay(uint64 groupId, uint32 newDelay) external;
  63. function setFamilyFunctionGroup(uint64 familyId, bytes4[] calldata selectors, uint64 groupId) external;
  64. function setFamilyAdminDelay(uint64 familyId, uint32 newDelay) external;
  65. function setContractFamily(address target, uint64 familyId) external;
  66. function setContractClosed(address target, bool closed) external;
  67. function getSchedule(bytes32 id) external returns (uint48);
  68. function schedule(address target, bytes calldata data, uint48 when) external returns (bytes32);
  69. function relay(address target, bytes calldata data) external payable;
  70. function cancel(address caller, address target, bytes calldata data) external;
  71. function consumeScheduledOp(address caller, bytes calldata data) external;
  72. function updateAuthority(address target, address newAuthority) external;
  73. }