A contract to set and manage fees for the Mezzanine Protocol
All fees are denominated in 100_000 as 100%. For example, a fee of 1_000 is equivalent to 1% All fees in Mezzanine are transferred to the fee controller, which then can be collected by the owner of the Mezz Hub. All implementations that charge a fee are responsible for transferring the fees to the fee controller.
State Variables
MAX_IMPLEMENTATION_FEE
uint256 public constant MAX_IMPLEMENTATION_FEE = Constants.MAX_IMPLEMENTATION_FEE;
Sets the fee of the 'implementation' to 'newFee'. Only callable by the 'owner' of the MezzHub
function setImplementationFee(address implementation, uint256 newFee) external virtual onlyHubOwner;
collectFees
Transfers 'amount' of 'asset' to the owner of the Mezz Hub
function collectFees(address asset, uint256 amount) external virtual onlyHubOwner;
calculateFee
Returns the fee for 'amount' based on the 'asset' and 'implementation' Returns zero if 'asset' is not a denomination asset or the implementation does not have a fee
function calculateFee(address asset, uint256 amount, address implementation) public view virtual returns (uint256);
getFeeByImplementation
Returns the fee for 'implementation'. Returns zero if there is no fee
function getFeeByImplementation(address implementation) public view returns (uint256);
supportsInterface
ERC165 support
function supportsInterface(bytes4 interfaceId)
public
view
virtual
override(ERC165Upgradeable, IERC165)
returns (bool);