[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"Keycode","name":"keycode_","type":"bytes5"}],"name":"InvalidKeycode","type":"error"},{"inputs":[{"internalType":"Role","name":"role_","type":"bytes32"}],"name":"InvalidRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr_","type":"address"},{"internalType":"Role","name":"role_","type":"bytes32"}],"name":"Kernel_AddressAlreadyHasRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr_","type":"address"},{"internalType":"Role","name":"role_","type":"bytes32"}],"name":"Kernel_AddressDoesNotHaveRole","type":"error"},{"inputs":[{"internalType":"Keycode","name":"module_","type":"bytes5"}],"name":"Kernel_InvalidModuleUpgrade","type":"error"},{"inputs":[{"internalType":"Keycode","name":"module_","type":"bytes5"}],"name":"Kernel_ModuleAlreadyInstalled","type":"error"},{"inputs":[{"internalType":"address","name":"caller_","type":"address"}],"name":"Kernel_OnlyAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"caller_","type":"address"}],"name":"Kernel_OnlyExecutor","type":"error"},{"inputs":[{"internalType":"address","name":"policy_","type":"address"}],"name":"Kernel_PolicyAlreadyApproved","type":"error"},{"inputs":[{"internalType":"address","name":"policy_","type":"address"}],"name":"Kernel_PolicyNotApproved","type":"error"},{"inputs":[{"internalType":"Role","name":"role_","type":"bytes32"}],"name":"Kernel_RoleDoesNotExist","type":"error"},{"inputs":[{"internalType":"address","name":"target_","type":"address"}],"name":"TargetNotAContract","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum Actions","name":"action_","type":"uint8"},{"indexed":true,"internalType":"address","name":"target_","type":"address"}],"name":"ActionExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"Keycode","name":"keycode_","type":"bytes5"},{"indexed":true,"internalType":"contract Policy","name":"policy_","type":"address"},{"indexed":false,"internalType":"bytes4","name":"funcSelector_","type":"bytes4"},{"indexed":false,"internalType":"bool","name":"granted_","type":"bool"}],"name":"PermissionsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"Role","name":"role_","type":"bytes32"},{"indexed":true,"internalType":"address","name":"addr_","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"Role","name":"role_","type":"bytes32"},{"indexed":true,"internalType":"address","name":"addr_","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"activePolicies","outputs":[{"internalType":"contract Policy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allKeycodes","outputs":[{"internalType":"Keycode","name":"","type":"bytes5"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum Actions","name":"action_","type":"uint8"},{"internalType":"address","name":"target_","type":"address"}],"name":"executeAction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"Keycode","name":"","type":"bytes5"},{"internalType":"contract Policy","name":"","type":"address"}],"name":"getDependentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract Module","name":"","type":"address"}],"name":"getKeycodeForModule","outputs":[{"internalType":"Keycode","name":"","type":"bytes5"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"Keycode","name":"","type":"bytes5"}],"name":"getModuleForKeycode","outputs":[{"internalType":"contract Module","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract Policy","name":"","type":"address"}],"name":"getPolicyIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"Role","name":"role_","type":"bytes32"},{"internalType":"address","name":"addr_","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"Role","name":"","type":"bytes32"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"Role","name":"","type":"bytes32"}],"name":"isRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"Keycode","name":"","type":"bytes5"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"moduleDependents","outputs":[{"internalType":"contract Policy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"Keycode","name":"","type":"bytes5"},{"internalType":"contract Policy","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"modulePermissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"Role","name":"role_","type":"bytes32"},{"internalType":"address","name":"addr_","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}]