Skip to content

Commit

Permalink
feat: adding rari controller
Browse files Browse the repository at this point in the history
  • Loading branch information
FibrinLab committed Dec 26, 2023
1 parent 58b397d commit 71019c7
Show file tree
Hide file tree
Showing 8 changed files with 511 additions and 0 deletions.
4 changes: 4 additions & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@
"extcodesize",
"FRAX",
"Funcs",
"fuserariamo",
"FUSERARIAMO",
"Gelato",
"habemus",
"IAMO",
Expand Down Expand Up @@ -114,6 +116,7 @@
"proto",
"psender",
"Qmanager",
"Rari",
"Rarible",
"Reentrancy",
"retdata",
Expand Down Expand Up @@ -148,6 +151,7 @@
"UbiquiStick",
"Unassigns",
"uncollateralized",
"Unitrollers",
"usedapp",
"Vitalik",
"wagmi",
Expand Down
10 changes: 10 additions & 0 deletions packages/contracts/src/dollar/facets/DollarAmoMinterFacet.sol
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,11 @@ contract DollarAmoMinterFacet is Modifiers, IDollarAmoMinter {
LibDollarAmoMinter.setTimelock(_newTimelock);
}

/// @notice Returns the timelock address.
function timelockAddress() external view returns (address _timelockAddr) {
return LibDollarAmoMinter.timelockAddress();
}

/// @notice Sets the custodian address.
/// @param _custodianAddress The address of the custodian.
function setCustodian(
Expand All @@ -175,6 +180,11 @@ contract DollarAmoMinterFacet is Modifiers, IDollarAmoMinter {
LibDollarAmoMinter.setCustodian(_custodianAddress);
}

/// @notice Returns the custodian address.
function custodianAddress() external view returns (address _custodianAddr) {
return LibDollarAmoMinter.custodianAddress();
}

/// @notice Sets the dollar minting cap.
/// @param _dollarMintCap The new dollar minting cap.
function setDollarMintCap(
Expand Down
121 changes: 121 additions & 0 deletions packages/contracts/src/dollar/interfaces/ICErc20Delegator.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

interface ICErc20Delegator {
function _acceptAdmin() external returns (uint256);
function _addReserves(uint256 addAmount) external returns (uint256);
function _reduceReserves(uint256 reduceAmount) external returns (uint256);
function _renounceAdminRights() external returns (uint256);
function _renounceFuseAdminRights() external returns (uint256);
function _resignImplementation() external;
function _setAdminFee(
uint256 newAdminFeeMantissa
) external returns (uint256);
function _setComptroller(address newComptroller) external returns (uint256);
function _setFuseFee() external returns (uint256);
function _setInterestRateModel(
address newInterestRateModel
) external returns (uint256);
function _setPendingAdmin(
address newPendingAdmin
) external returns (uint256);
function _setReserveFactor(
uint256 newReserveFactorMantissa
) external returns (uint256);
function _withdrawAdminFees(
uint256 withdrawAmount
) external returns (uint256);
function _withdrawFuseFees(
uint256 withdrawAmount
) external returns (uint256);
function accrualBlockNumber() external view returns (uint256);
function accrueInterest() external returns (uint256);
function admin() external view returns (address);
function adminFeeMantissa() external view returns (uint256);
function adminHasRights() external view returns (bool);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function balanceOf(address owner) external view returns (uint256);
function balanceOfUnderlying(address owner) external returns (uint256);
function borrow(uint256 borrowAmount) external returns (uint256);
function borrowBalanceCurrent(address account) external returns (uint256);
function borrowBalanceStored(
address account
) external view returns (uint256);
function borrowIndex() external view returns (uint256);
function borrowRatePerBlock() external view returns (uint256);
function comptroller() external view returns (address);
function decimals() external view returns (uint8);
function exchangeRateCurrent() external returns (uint256);
function exchangeRateStored() external view returns (uint256);
function fuseAdminHasRights() external view returns (bool);
function fuseFeeMantissa() external view returns (uint256);
function getAccountSnapshot(
address account
) external view returns (uint256, uint256, uint256, uint256);
function getCash() external view returns (uint256);
function implementation() external view returns (address);
function initialize(
address comptroller_,
address interestRateModel_,
uint256 initialExchangeRateMantissa_,
string memory name_,
string memory symbol_,
uint8 decimals_,
uint256 reserveFactorMantissa_,
uint256 adminFeeMantissa_
) external;
function initialize(
address underlying_,
address comptroller_,
address interestRateModel_,
uint256 initialExchangeRateMantissa_,
string memory name_,
string memory symbol_,
uint8 decimals_,
uint256 reserveFactorMantissa_,
uint256 adminFeeMantissa_
) external;
function interestRateModel() external view returns (address);
function isCEther() external view returns (bool);
function isCToken() external view returns (bool);
function liquidateBorrow(
address borrower,
uint256 repayAmount,
address cTokenCollateral
) external returns (uint256);
function mint(uint256 mintAmount) external returns (uint256);
function name() external view returns (string memory);
function pendingAdmin() external view returns (address);
function redeem(uint256 redeemTokens) external returns (uint256);
function redeemUnderlying(uint256 redeemAmount) external returns (uint256);
function repayBorrow(uint256 repayAmount) external returns (uint256);
function repayBorrowBehalf(
address borrower,
uint256 repayAmount
) external returns (uint256);
function reserveFactorMantissa() external view returns (uint256);
function seize(
address liquidator,
address borrower,
uint256 seizeTokens
) external returns (uint256);
function supplyRatePerBlock() external view returns (uint256);
function symbol() external view returns (string memory);
function totalAdminFees() external view returns (uint256);
function totalBorrows() external view returns (uint256);
function totalBorrowsCurrent() external returns (uint256);
function totalFuseFees() external view returns (uint256);
function totalReserves() external view returns (uint256);
function totalSupply() external view returns (uint256);
function transfer(address dst, uint256 amount) external returns (bool);
function transferFrom(
address src,
address dst,
uint256 amount
) external returns (bool);
function underlying() external view returns (address);
}
6 changes: 6 additions & 0 deletions packages/contracts/src/dollar/interfaces/IDollarAmoMinter.sol
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,16 @@ interface IDollarAmoMinter {
/// @param _newTimelock The address of the new timelock.
function setTimelock(address _newTimelock) external;

/// @notice Returns the timelock address.
function timelockAddress() external view returns (address _timelockAddr);

/// @notice Sets the custodian address.
/// @param _custodianAddress The address of the custodian.
function setCustodian(address _custodianAddress) external;

/// @notice Returns the custodian address.
function custodianAddress() external view returns (address _custodianAddr);

/// @notice Sets the dollar mint cap.
/// @param _dollarMintCap The new dollar mint cap to be set.
function setDollarMintCap(uint256 _dollarMintCap) external;
Expand Down
195 changes: 195 additions & 0 deletions packages/contracts/src/dollar/interfaces/IRariComptroller.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

interface IRariComptroller {
function _become(address unitroller) external;
function _borrowGuardianPaused() external view returns (bool);
function _mintGuardianPaused() external view returns (bool);
function _setBorrowPaused(
address cToken,
bool state
) external returns (bool);
function _setCloseFactor(
uint256 newCloseFactorMantissa
) external returns (uint256);
function _setCollateralFactor(
address cToken,
uint256 newCollateralFactorMantissa
) external returns (uint256);
function _setLiquidationIncentive(
uint256 newLiquidationIncentiveMantissa
) external returns (uint256);
function _setMaxAssets(uint256 newMaxAssets) external returns (uint256);
function _setMintPaused(address cToken, bool state) external returns (bool);
function _setPauseGuardian(
address newPauseGuardian
) external returns (uint256);
function _setPriceOracle(address newOracle) external returns (uint256);
function _setSeizePaused(bool state) external returns (bool);
function _setTransferPaused(bool state) external returns (bool);
function _supportMarket(address cToken) external returns (uint256);
function _supportMarketAndSetCollateralFactor(
address cToken,
uint256 newCollateralFactorMantissa
) external returns (uint256);
function _unsupportMarket(address cToken) external returns (uint256);
function accountAssets(address, uint256) external view returns (address);
function admin() external view returns (address);
function adminHasRights() external view returns (bool);
function allBorrowers(uint256) external view returns (address);
function allMarkets(uint256) external view returns (address);
function borrowAllowed(
address cToken,
address borrower,
uint256 borrowAmount
) external returns (uint256);
function borrowGuardianPaused(address) external view returns (bool);
function borrowVerify(
address cToken,
address borrower,
uint256 borrowAmount
) external;
function borrowWithinLimits(
address cToken,
uint256 accountBorrowsNew
) external returns (uint256);
function cTokensByUnderlying(address) external view returns (address);
function checkMembership(
address account,
address cToken
) external view returns (bool);
function closeFactorMantissa() external view returns (uint256);
function comptrollerImplementation() external view returns (address);
function enforceWhitelist() external view returns (bool);
function enterMarkets(
address[] calldata cTokens
) external returns (uint256[] memory);
function exitMarket(address cTokenAddress) external returns (uint256);
function fuseAdminHasRights() external view returns (bool);
function getAccountLiquidity(
address account
) external view returns (uint256, uint256, uint256);
function getAllBorrowers() external view returns (address[] memory);
function getAllMarkets() external view returns (address[] memory);
function getAssetsIn(
address account
) external view returns (address[] memory);
function getHypotheticalAccountLiquidity(
address account,
address cTokenModify,
uint256 redeemTokens,
uint256 borrowAmount
) external view returns (uint256, uint256, uint256);
function getMaxBorrow(
address account,
address cTokenModify
) external returns (uint256, uint256);
function getMaxRedeem(
address account,
address cTokenModify
) external returns (uint256, uint256);
function isComptroller() external view returns (bool);
function liquidateBorrowAllowed(
address cTokenBorrowed,
address cTokenCollateral,
address liquidator,
address borrower,
uint256 repayAmount
) external returns (uint256);
function liquidateBorrowVerify(
address cTokenBorrowed,
address cTokenCollateral,
address liquidator,
address borrower,
uint256 actualRepayAmount,
uint256 seizeTokens
) external;
function liquidateCalculateSeizeTokens(
address cTokenBorrowed,
address cTokenCollateral,
uint256 actualRepayAmount
) external view returns (uint256, uint256);
function liquidationIncentiveMantissa() external view returns (uint256);
function markets(
address
) external view returns (bool isListed, uint256 collateralFactorMantissa);
function maxAssets() external view returns (uint256);
function mintAllowed(
address cToken,
address minter,
uint256 mintAmount
) external returns (uint256);
function mintGuardianPaused(address) external view returns (bool);
function mintVerify(
address cToken,
address minter,
uint256 actualMintAmount,
uint256 mintTokens
) external;
function mintWithinLimits(
address cToken,
uint256 exchangeRateMantissa,
uint256 accountTokens,
uint256 mintAmount
) external returns (uint256);
function oracle() external view returns (address);
function pauseGuardian() external view returns (address);
function pendingAdmin() external view returns (address);
function pendingComptrollerImplementation() external view returns (address);
function redeemAllowed(
address cToken,
address redeemer,
uint256 redeemTokens
) external returns (uint256);
function redeemVerify(
address cToken,
address redeemer,
uint256 redeemAmount,
uint256 redeemTokens
) external;
function repayBorrowAllowed(
address cToken,
address payer,
address borrower,
uint256 repayAmount
) external returns (uint256);
function repayBorrowVerify(
address cToken,
address payer,
address borrower,
uint256 actualRepayAmount,
uint256 borrowerIndex
) external;
function seizeAllowed(
address cTokenCollateral,
address cTokenBorrowed,
address liquidator,
address borrower,
uint256 seizeTokens
) external returns (uint256);
function seizeGuardianPaused() external view returns (bool);
function seizeVerify(
address cTokenCollateral,
address cTokenBorrowed,
address liquidator,
address borrower,
uint256 seizeTokens
) external;
function suppliers(address) external view returns (bool);
function transferAllowed(
address cToken,
address src,
address dst,
uint256 transferTokens
) external returns (uint256);
function transferGuardianPaused() external view returns (bool);
function transferVerify(
address cToken,
address src,
address dst,
uint256 transferTokens
) external;
function whitelist(address) external view returns (bool);
function whitelistArray(uint256) external view returns (address);
}
Loading

0 comments on commit 71019c7

Please sign in to comment.