编译器
0.8.10+commit.fc410830
文件 1 的 10:ACLManager.sol
pragma solidity 0.8.10;
import {AccessControl} from '../../dependencies/openzeppelin/contracts/AccessControl.sol';
import {IPoolAddressesProvider} from '../../interfaces/IPoolAddressesProvider.sol';
import {IACLManager} from '../../interfaces/IACLManager.sol';
import {Errors} from '../libraries/helpers/Errors.sol';
contract ACLManager is AccessControl, IACLManager {
bytes32 public constant override POOL_ADMIN_ROLE = keccak256('POOL_ADMIN');
bytes32 public constant override EMERGENCY_ADMIN_ROLE = keccak256('EMERGENCY_ADMIN');
bytes32 public constant override RISK_ADMIN_ROLE = keccak256('RISK_ADMIN');
bytes32 public constant override FLASH_BORROWER_ROLE = keccak256('FLASH_BORROWER');
bytes32 public constant override BRIDGE_ROLE = keccak256('BRIDGE');
bytes32 public constant override ASSET_LISTING_ADMIN_ROLE = keccak256('ASSET_LISTING_ADMIN');
IPoolAddressesProvider public immutable ADDRESSES_PROVIDER;
constructor(IPoolAddressesProvider provider) {
ADDRESSES_PROVIDER = provider;
address aclAdmin = provider.getACLAdmin();
require(aclAdmin != address(0), Errors.ACL_ADMIN_CANNOT_BE_ZERO);
_setupRole(DEFAULT_ADMIN_ROLE, aclAdmin);
}
function setRoleAdmin(bytes32 role, bytes32 adminRole)
external
override
onlyRole(DEFAULT_ADMIN_ROLE)
{
_setRoleAdmin(role, adminRole);
}
function addPoolAdmin(address admin) external override {
grantRole(POOL_ADMIN_ROLE, admin);
}
function removePoolAdmin(address admin) external override {
revokeRole(POOL_ADMIN_ROLE, admin);
}
function isPoolAdmin(address admin) external view override returns (bool) {
return hasRole(POOL_ADMIN_ROLE, admin);
}
function addEmergencyAdmin(address admin) external override {
grantRole(EMERGENCY_ADMIN_ROLE, admin);
}
function removeEmergencyAdmin(address admin) external override {
revokeRole(EMERGENCY_ADMIN_ROLE, admin);
}
function isEmergencyAdmin(address admin) external view override returns (bool) {
return hasRole(EMERGENCY_ADMIN_ROLE, admin);
}
function addRiskAdmin(address admin) external override {
grantRole(RISK_ADMIN_ROLE, admin);
}
function removeRiskAdmin(address admin) external override {
revokeRole(RISK_ADMIN_ROLE, admin);
}
function isRiskAdmin(address admin) external view override returns (bool) {
return hasRole(RISK_ADMIN_ROLE, admin);
}
function addFlashBorrower(address borrower) external override {
grantRole(FLASH_BORROWER_ROLE, borrower);
}
function removeFlashBorrower(address borrower) external override {
revokeRole(FLASH_BORROWER_ROLE, borrower);
}
function isFlashBorrower(address borrower) external view override returns (bool) {
return hasRole(FLASH_BORROWER_ROLE, borrower);
}
function addBridge(address bridge) external override {
grantRole(BRIDGE_ROLE, bridge);
}
function removeBridge(address bridge) external override {
revokeRole(BRIDGE_ROLE, bridge);
}
function isBridge(address bridge) external view override returns (bool) {
return hasRole(BRIDGE_ROLE, bridge);
}
function addAssetListingAdmin(address admin) external override {
grantRole(ASSET_LISTING_ADMIN_ROLE, admin);
}
function removeAssetListingAdmin(address admin) external override {
revokeRole(ASSET_LISTING_ADMIN_ROLE, admin);
}
function isAssetListingAdmin(address admin) external view override returns (bool) {
return hasRole(ASSET_LISTING_ADMIN_ROLE, admin);
}
}
文件 2 的 10:AccessControl.sol
pragma solidity 0.8.10;
import './IAccessControl.sol';
import './Context.sol';
import './Strings.sol';
import './ERC165.sol';
abstract contract AccessControl is Context, IAccessControl, ERC165 {
struct RoleData {
mapping(address => bool) members;
bytes32 adminRole;
}
mapping(bytes32 => RoleData) private _roles;
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
modifier onlyRole(bytes32 role) {
_checkRole(role, _msgSender());
_;
}
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
}
function hasRole(bytes32 role, address account) public view override returns (bool) {
return _roles[role].members[account];
}
function _checkRole(bytes32 role, address account) internal view {
if (!hasRole(role, account)) {
revert(
string(
abi.encodePacked(
'AccessControl: account ',
Strings.toHexString(uint160(account), 20),
' is missing role ',
Strings.toHexString(uint256(role), 32)
)
)
);
}
}
function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
return _roles[role].adminRole;
}
function grantRole(bytes32 role, address account)
public
virtual
override
onlyRole(getRoleAdmin(role))
{
_grantRole(role, account);
}
function revokeRole(bytes32 role, address account)
public
virtual
override
onlyRole(getRoleAdmin(role))
{
_revokeRole(role, account);
}
function renounceRole(bytes32 role, address account) public virtual override {
require(account == _msgSender(), 'AccessControl: can only renounce roles for self');
_revokeRole(role, account);
}
function _setupRole(bytes32 role, address account) internal virtual {
_grantRole(role, account);
}
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
bytes32 previousAdminRole = getRoleAdmin(role);
_roles[role].adminRole = adminRole;
emit RoleAdminChanged(role, previousAdminRole, adminRole);
}
function _grantRole(bytes32 role, address account) private {
if (!hasRole(role, account)) {
_roles[role].members[account] = true;
emit RoleGranted(role, account, _msgSender());
}
}
function _revokeRole(bytes32 role, address account) private {
if (hasRole(role, account)) {
_roles[role].members[account] = false;
emit RoleRevoked(role, account, _msgSender());
}
}
}
文件 3 的 10:Context.sol
pragma solidity 0.8.10;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this;
return msg.data;
}
}
文件 4 的 10:ERC165.sol
pragma solidity 0.8.10;
import './IERC165.sol';
abstract contract ERC165 is IERC165 {
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
文件 5 的 10:Errors.sol
pragma solidity ^0.8.0;
library Errors {
string public constant CALLER_NOT_POOL_ADMIN = '1';
string public constant CALLER_NOT_EMERGENCY_ADMIN = '2';
string public constant CALLER_NOT_POOL_OR_EMERGENCY_ADMIN = '3';
string public constant CALLER_NOT_RISK_OR_POOL_ADMIN = '4';
string public constant CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN = '5';
string public constant CALLER_NOT_BRIDGE = '6';
string public constant ADDRESSES_PROVIDER_NOT_REGISTERED = '7';
string public constant INVALID_ADDRESSES_PROVIDER_ID = '8';
string public constant NOT_CONTRACT = '9';
string public constant CALLER_NOT_POOL_CONFIGURATOR = '10';
string public constant CALLER_NOT_ATOKEN = '11';
string public constant INVALID_ADDRESSES_PROVIDER = '12';
string public constant INVALID_FLASHLOAN_EXECUTOR_RETURN = '13';
string public constant RESERVE_ALREADY_ADDED = '14';
string public constant NO_MORE_RESERVES_ALLOWED = '15';
string public constant EMODE_CATEGORY_RESERVED = '16';
string public constant INVALID_EMODE_CATEGORY_ASSIGNMENT = '17';
string public constant RESERVE_LIQUIDITY_NOT_ZERO = '18';
string public constant FLASHLOAN_PREMIUM_INVALID = '19';
string public constant INVALID_RESERVE_PARAMS = '20';
string public constant INVALID_EMODE_CATEGORY_PARAMS = '21';
string public constant BRIDGE_PROTOCOL_FEE_INVALID = '22';
string public constant CALLER_MUST_BE_POOL = '23';
string public constant INVALID_MINT_AMOUNT = '24';
string public constant INVALID_BURN_AMOUNT = '25';
string public constant INVALID_AMOUNT = '26';
string public constant RESERVE_INACTIVE = '27';
string public constant RESERVE_FROZEN = '28';
string public constant RESERVE_PAUSED = '29';
string public constant BORROWING_NOT_ENABLED = '30';
string public constant STABLE_BORROWING_NOT_ENABLED = '31';
string public constant NOT_ENOUGH_AVAILABLE_USER_BALANCE = '32';
string public constant INVALID_INTEREST_RATE_MODE_SELECTED = '33';
string public constant COLLATERAL_BALANCE_IS_ZERO = '34';
string public constant HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD = '35';
string public constant COLLATERAL_CANNOT_COVER_NEW_BORROW = '36';
string public constant COLLATERAL_SAME_AS_BORROWING_CURRENCY = '37';
string public constant AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE = '38';
string public constant NO_DEBT_OF_SELECTED_TYPE = '39';
string public constant NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF = '40';
string public constant NO_OUTSTANDING_STABLE_DEBT = '41';
string public constant NO_OUTSTANDING_VARIABLE_DEBT = '42';
string public constant UNDERLYING_BALANCE_ZERO = '43';
string public constant INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET = '44';
string public constant HEALTH_FACTOR_NOT_BELOW_THRESHOLD = '45';
string public constant COLLATERAL_CANNOT_BE_LIQUIDATED = '46';
string public constant SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER = '47';
string public constant INCONSISTENT_FLASHLOAN_PARAMS = '49';
string public constant BORROW_CAP_EXCEEDED = '50';
string public constant SUPPLY_CAP_EXCEEDED = '51';
string public constant UNBACKED_MINT_CAP_EXCEEDED = '52';
string public constant DEBT_CEILING_EXCEEDED = '53';
string public constant UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO = '54';
string public constant STABLE_DEBT_NOT_ZERO = '55';
string public constant VARIABLE_DEBT_SUPPLY_NOT_ZERO = '56';
string public constant LTV_VALIDATION_FAILED = '57';
string public constant INCONSISTENT_EMODE_CATEGORY = '58';
string public constant PRICE_ORACLE_SENTINEL_CHECK_FAILED = '59';
string public constant ASSET_NOT_BORROWABLE_IN_ISOLATION = '60';
string public constant RESERVE_ALREADY_INITIALIZED = '61';
string public constant USER_IN_ISOLATION_MODE = '62';
string public constant INVALID_LTV = '63';
string public constant INVALID_LIQ_THRESHOLD = '64';
string public constant INVALID_LIQ_BONUS = '65';
string public constant INVALID_DECIMALS = '66';
string public constant INVALID_RESERVE_FACTOR = '67';
string public constant INVALID_BORROW_CAP = '68';
string public constant INVALID_SUPPLY_CAP = '69';
string public constant INVALID_LIQUIDATION_PROTOCOL_FEE = '70';
string public constant INVALID_EMODE_CATEGORY = '71';
string public constant INVALID_UNBACKED_MINT_CAP = '72';
string public constant INVALID_DEBT_CEILING = '73';
string public constant INVALID_RESERVE_INDEX = '74';
string public constant ACL_ADMIN_CANNOT_BE_ZERO = '75';
string public constant INCONSISTENT_PARAMS_LENGTH = '76';
string public constant ZERO_ADDRESS_NOT_VALID = '77';
string public constant INVALID_EXPIRATION = '78';
string public constant INVALID_SIGNATURE = '79';
string public constant OPERATION_NOT_SUPPORTED = '80';
string public constant DEBT_CEILING_NOT_ZERO = '81';
string public constant ASSET_NOT_LISTED = '82';
string public constant INVALID_OPTIMAL_USAGE_RATIO = '83';
string public constant INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO = '84';
string public constant UNDERLYING_CANNOT_BE_RESCUED = '85';
string public constant ADDRESSES_PROVIDER_ALREADY_ADDED = '86';
string public constant POOL_ADDRESSES_DO_NOT_MATCH = '87';
string public constant STABLE_BORROWING_ENABLED = '88';
string public constant SILOED_BORROWING_VIOLATION = '89';
string public constant RESERVE_DEBT_NOT_ZERO = '90';
string public constant FLASHLOAN_DISABLED = '91';
}
文件 6 的 10:IACLManager.sol
pragma solidity ^0.8.0;
import {IPoolAddressesProvider} from './IPoolAddressesProvider.sol';
interface IACLManager {
function ADDRESSES_PROVIDER() external view returns (IPoolAddressesProvider);
function POOL_ADMIN_ROLE() external view returns (bytes32);
function EMERGENCY_ADMIN_ROLE() external view returns (bytes32);
function RISK_ADMIN_ROLE() external view returns (bytes32);
function FLASH_BORROWER_ROLE() external view returns (bytes32);
function BRIDGE_ROLE() external view returns (bytes32);
function ASSET_LISTING_ADMIN_ROLE() external view returns (bytes32);
function setRoleAdmin(bytes32 role, bytes32 adminRole) external;
function addPoolAdmin(address admin) external;
function removePoolAdmin(address admin) external;
function isPoolAdmin(address admin) external view returns (bool);
function addEmergencyAdmin(address admin) external;
function removeEmergencyAdmin(address admin) external;
function isEmergencyAdmin(address admin) external view returns (bool);
function addRiskAdmin(address admin) external;
function removeRiskAdmin(address admin) external;
function isRiskAdmin(address admin) external view returns (bool);
function addFlashBorrower(address borrower) external;
function removeFlashBorrower(address borrower) external;
function isFlashBorrower(address borrower) external view returns (bool);
function addBridge(address bridge) external;
function removeBridge(address bridge) external;
function isBridge(address bridge) external view returns (bool);
function addAssetListingAdmin(address admin) external;
function removeAssetListingAdmin(address admin) external;
function isAssetListingAdmin(address admin) external view returns (bool);
}
文件 7 的 10:IAccessControl.sol
pragma solidity 0.8.10;
interface IAccessControl {
event RoleAdminChanged(
bytes32 indexed role,
bytes32 indexed previousAdminRole,
bytes32 indexed newAdminRole
);
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
function hasRole(bytes32 role, address account) external view returns (bool);
function getRoleAdmin(bytes32 role) external view returns (bytes32);
function grantRole(bytes32 role, address account) external;
function revokeRole(bytes32 role, address account) external;
function renounceRole(bytes32 role, address account) external;
}
文件 8 的 10:IERC165.sol
pragma solidity 0.8.10;
interface IERC165 {
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
文件 9 的 10:IPoolAddressesProvider.sol
pragma solidity ^0.8.0;
interface IPoolAddressesProvider {
event MarketIdSet(string indexed oldMarketId, string indexed newMarketId);
event PoolUpdated(address indexed oldAddress, address indexed newAddress);
event PoolConfiguratorUpdated(address indexed oldAddress, address indexed newAddress);
event PriceOracleUpdated(address indexed oldAddress, address indexed newAddress);
event ACLManagerUpdated(address indexed oldAddress, address indexed newAddress);
event ACLAdminUpdated(address indexed oldAddress, address indexed newAddress);
event PriceOracleSentinelUpdated(address indexed oldAddress, address indexed newAddress);
event PoolDataProviderUpdated(address indexed oldAddress, address indexed newAddress);
event ProxyCreated(
bytes32 indexed id,
address indexed proxyAddress,
address indexed implementationAddress
);
event AddressSet(bytes32 indexed id, address indexed oldAddress, address indexed newAddress);
event AddressSetAsProxy(
bytes32 indexed id,
address indexed proxyAddress,
address oldImplementationAddress,
address indexed newImplementationAddress
);
function getMarketId() external view returns (string memory);
function setMarketId(string calldata newMarketId) external;
function getAddress(bytes32 id) external view returns (address);
function setAddressAsProxy(bytes32 id, address newImplementationAddress) external;
function setAddress(bytes32 id, address newAddress) external;
function getPool() external view returns (address);
function setPoolImpl(address newPoolImpl) external;
function getPoolConfigurator() external view returns (address);
function setPoolConfiguratorImpl(address newPoolConfiguratorImpl) external;
function getPriceOracle() external view returns (address);
function setPriceOracle(address newPriceOracle) external;
function getACLManager() external view returns (address);
function setACLManager(address newAclManager) external;
function getACLAdmin() external view returns (address);
function setACLAdmin(address newAclAdmin) external;
function getPriceOracleSentinel() external view returns (address);
function setPriceOracleSentinel(address newPriceOracleSentinel) external;
function getPoolDataProvider() external view returns (address);
function setPoolDataProvider(address newDataProvider) external;
}
文件 10 的 10:Strings.sol
pragma solidity 0.8.10;
library Strings {
bytes16 private constant _HEX_SYMBOLS = '0123456789abcdef';
function toString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return '0';
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return '0x00';
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = '0';
buffer[1] = 'x';
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, 'Strings: hex length insufficient');
return string(buffer);
}
}
{
"compilationTarget": {
"@aave/core-v3/contracts/protocol/configuration/ACLManager.sol": "ACLManager"
},
"evmVersion": "berlin",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 100000
},
"remappings": []
}
[{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"ADDRESSES_PROVIDER","outputs":[{"internalType":"contract IPoolAddressesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ASSET_LISTING_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BRIDGE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EMERGENCY_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FLASH_BORROWER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RISK_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addAssetListingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bridge","type":"address"}],"name":"addBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addEmergencyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"addFlashBorrower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addPoolAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addRiskAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"isAssetListingAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bridge","type":"address"}],"name":"isBridge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"isEmergencyAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"isFlashBorrower","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"isPoolAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"isRiskAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeAssetListingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bridge","type":"address"}],"name":"removeBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeEmergencyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"removeFlashBorrower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removePoolAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeRiskAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"bytes32","name":"adminRole","type":"bytes32"}],"name":"setRoleAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]