FluidReserveContract ​
Inherits:Error, ReserveContractAuth, UUPSUpgradeable
This contract manages the approval of tokens for use by protocols and the execution of rebalances on protocols
Functions ​
onlyRebalancer ​
Checks that the sender is a rebalancer
modifier onlyRebalancer();constructor ​
constructor();initialize ​
initializes the contract
function initialize(address[] memory _auths, address[] memory _rebalancers, address owner_)
public
initializer
validAddress(owner_);Parameters
| Name | Type | Description |
|---|---|---|
_auths | address[] | The addresses that have the auth to approve and revoke protocol token allowances |
_rebalancers | address[] | The addresses that can execute a rebalance on a protocol |
owner_ | address | owner address is able to upgrade contract and update auth users |
_authorizeUpgrade ​
function _authorizeUpgrade(address) internal override onlyOwner;renounceOwnership ​
override renounce ownership as it could leave the contract in an unwanted state if called by mistake.
function renounceOwnership() public view override onlyOwner;rebalanceFToken ​
Executes a rebalance on a fToken protocol by calling that protocol's rebalance function
function rebalanceFToken(address protocol_, uint256 value_) public payable onlyRebalancer;Parameters
| Name | Type | Description |
|---|---|---|
protocol_ | address | The protocol to rebalance |
value_ | uint256 | any msg.value to send along (as fetched from resolver!) |
rebalanceVault ​
Executes a rebalance on a vaultT1 protocol by calling that protocol's rebalance function
function rebalanceVault(address protocol_, uint256 value_) public payable onlyRebalancer;Parameters
| Name | Type | Description |
|---|---|---|
protocol_ | address | The protocol to rebalance |
value_ | uint256 | any msg.value to send along (as fetched from resolver!) |
rebalanceDexVault ​
Executes a rebalance on a DEX vault protocol by calling that protocol's rebalance function
function rebalanceDexVault(
address protocol_,
uint256 value_,
int256 colToken0MinMax_,
int256 colToken1MinMax_,
int256 debtToken0MinMax_,
int256 debtToken1MinMax_
) public payable onlyRebalancer;Parameters
| Name | Type | Description |
|---|---|---|
protocol_ | address | The protocol to rebalance |
value_ | uint256 | any msg.value to send along (as fetched from resolver!) |
colToken0MinMax_ | int256 | if vault supply is more than Liquidity Layer then deposit difference through reserve/rebalance contract |
colToken1MinMax_ | int256 | if vault supply is less than Liquidity Layer then withdraw difference to reserve/rebalance contract |
debtToken0MinMax_ | int256 | if vault borrow is more than Liquidity Layer then borrow difference to reserve/rebalance contract |
debtToken1MinMax_ | int256 | if vault borrow is less than Liquidity Layer then payback difference through reserve/rebalance contract |
rebalanceFTokens ​
calls rebalanceFToken multiple times
don't need onlyRebalancer modifier as it is already checked in rebalanceFToken function
function rebalanceFTokens(address[] calldata protocols_, uint256[] calldata values_) external payable;rebalanceVaults ​
calls rebalanceVault multiple times
don't need onlyRebalancer modifier as it is already checked in rebalanceVault function
function rebalanceVaults(address[] calldata protocols_, uint256[] calldata values_) external payable;rebalanceDexVaults ​
calls rebalanceDexVault multiple times
don't need onlyRebalancer modifier as it is already checked in rebalanceDexVault function
function rebalanceDexVaults(
address[] calldata protocols_,
uint256[] calldata values_,
int256[] calldata colToken0MinMaxs_,
int256[] calldata colToken1MinMaxs_,
int256[] calldata debtToken0MinMaxs_,
int256[] calldata debtToken1MinMaxs_
) external payable;withdrawFunds ​
Withdraws funds from the contract to a specified receiver
This function can only be called by the owner, which is always the Governance address
function withdrawFunds(address[] memory tokens_, uint256[] memory amounts_, address receiver_) external onlyOwner;Parameters
| Name | Type | Description |
|---|---|---|
tokens_ | address[] | The tokens to withdraw |
amounts_ | uint256[] | The amounts of each token to withdraw |
receiver_ | address | The address to receive the withdrawn funds |
getProtocolTokens ​
Gets the tokens that are approved for use by a protocol
function getProtocolTokens(address protocol_) external view returns (address[] memory result_);Parameters
| Name | Type | Description |
|---|---|---|
protocol_ | address | The protocol to get the tokens for |
Returns
| Name | Type | Description |
|---|---|---|
result_ | address[] | The tokens that are approved for use by the protocol |
getProtocolAllowances ​
Gets the allowances that are approved to a protocol
function getProtocolAllowances(address protocol_) public view returns (TokenAllowance[] memory allowances_);Parameters
| Name | Type | Description |
|---|---|---|
protocol_ | address | The protocol to get the tokens for |
Returns
| Name | Type | Description |
|---|---|---|
allowances_ | TokenAllowance[] | The tokens that are approved for use by the protocol |
getAllProtocolAllowances ​
Gets the allowances that are approved to a protocol
function getAllProtocolAllowances() public view returns (ProtocolTokenAllowance[] memory allowances_);Returns
| Name | Type | Description |
|---|---|---|
allowances_ | ProtocolTokenAllowance[] | The tokens that are approved for use by all the protocols |
receive ​
allow receive native token
receive() external payable;
