This commit is contained in:
Thrilok kumar 2024-07-02 15:47:19 -04:00
parent c73438eb51
commit e66446d8bf

View File

@ -1,4 +1,4 @@
pragma solidity ^0.7.0; pragma solidity >=0.7.0;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
import {BigMathMinified} from "./libraries/bigMathMinified.sol"; import {BigMathMinified} from "./libraries/bigMathMinified.sol";
@ -279,6 +279,29 @@ interface IFluidVaultT1 {
/// @notice updates the collateral factor to `collateralFactor_`. Input in 1e2 (1% = 100, 100% = 10_000). /// @notice updates the collateral factor to `collateralFactor_`. Input in 1e2 (1% = 100, 100% = 10_000).
function updateCollateralFactor(uint collateralFactor_) external; function updateCollateralFactor(uint collateralFactor_) external;
struct ConstantViews {
address liquidity;
address factory;
address adminImplementation;
address secondaryImplementation;
address supplyToken;
address borrowToken;
uint8 supplyDecimals;
uint8 borrowDecimals;
uint vaultId;
bytes32 liquiditySupplyExchangePriceSlot;
bytes32 liquidityBorrowExchangePriceSlot;
bytes32 liquidityUserSupplySlot;
bytes32 liquidityUserBorrowSlot;
}
/// @notice returns all Vault constants
function constantsView()
external
view
returns (ConstantViews memory constantsView_);
} }
interface IFluidVaultT1Factory { interface IFluidVaultT1Factory {
@ -298,6 +321,46 @@ interface IFluidVaultT1DeploymentLogic {
function vaultT1(address supplyToken_, address borrowToken_) external; function vaultT1(address supplyToken_, address borrowToken_) external;
} }
interface IFluidReserveContract {
function isRebalancer(address user) external returns (bool);
function rebalanceFToken(address protocol_) external;
function rebalanceVault(address protocol_) external;
function transferFunds(address token_) external;
function getProtocolTokens(address protocol_) external;
function updateAuth(address auth_, bool isAuth_) external;
function updateRebalancer(address rebalancer_, bool isRebalancer_) external;
function approve(
address[] memory protocols_,
address[] memory tokens_,
uint256[] memory amounts_
) external;
function revoke(
address[] memory protocols_,
address[] memory tokens_
) external;
}
interface IDSAV2 {
function cast(
string[] memory _targetNames,
bytes[] memory _datas,
address _origin
)
external
payable
returns (bytes32);
function isAuth(address user) external view returns (bool);
}
contract PayloadIGP30 { contract PayloadIGP30 {
uint256 public constant PROPOSAL_ID = 30; uint256 public constant PROPOSAL_ID = 30;
@ -320,6 +383,8 @@ contract PayloadIGP30 {
address public constant TEAM_MULTISIG = address public constant TEAM_MULTISIG =
0x4F6F977aCDD1177DCD81aB83074855EcB9C2D49e; 0x4F6F977aCDD1177DCD81aB83074855EcB9C2D49e;
IDSAV2 public constant TREASURY = IDSAV2(0x28849D2b63fA8D361e5fc15cB8aBB13019884d09);
IFluidLiquidityAdmin public constant LIQUIDITY = IFluidLiquidityAdmin public constant LIQUIDITY =
IFluidLiquidityAdmin(0x52Aa899454998Be5b000Ad077a46Bbe360F4e497); IFluidLiquidityAdmin(0x52Aa899454998Be5b000Ad077a46Bbe360F4e497);
IFluidReserveContract public constant FLUID_RESERVE = IFluidReserveContract public constant FLUID_RESERVE =
@ -467,7 +532,7 @@ contract PayloadIGP30 {
borrowExpandPercent: 20 * 1e2, // 20% borrowExpandPercent: 20 * 1e2, // 20%
borrowExpandDuration: 12 hours, // 12 hours borrowExpandDuration: 12 hours, // 12 hours
borrowBaseLimitInUSD: 7_500_000, // $7.5M borrowBaseLimitInUSD: 7_500_000, // $7.5M
borrowMaxLimitInUSD: 20_000_000, // $20M borrowMaxLimitInUSD: 200_000_000, // $200M
supplyRateMagnifier: 100 * 1e2, // 1x supplyRateMagnifier: 100 * 1e2, // 1x
borrowRateMagnifier: 100 * 1e2, // 1x borrowRateMagnifier: 100 * 1e2, // 1x
@ -640,7 +705,7 @@ contract PayloadIGP30 {
/// @notice Action 5: Clone from old vault config to new vault /// @notice Action 5: Clone from old vault config to new vault
function action5() internal { function action5() internal {
for (uint oldVaultId = 1; oldVaultId <= 10; oldVaultId++) { for (uint oldVaultId = 1; oldVaultId <= 10; oldVaultId++) {
cloneVault(oldVaultId); configNewVaultWithOldVaultConfigs(oldVaultId);
} }
} }
@ -661,7 +726,6 @@ contract PayloadIGP30 {
IDSAV2(TREASURY).cast(targets, encodedSpells, address(this)); IDSAV2(TREASURY).cast(targets, encodedSpells, address(this));
} }
/***********************************| /***********************************|
| Proposal Payload Helpers | | Proposal Payload Helpers |
|__________________________________*/ |__________________________________*/
@ -735,12 +799,12 @@ contract PayloadIGP30 {
mode: vaultConfig.borrowMode, mode: vaultConfig.borrowMode,
expandPercent: vaultConfig.supplyExpandPercent, expandPercent: vaultConfig.supplyExpandPercent,
expandDuration: vaultConfig.borrowExpandDuration, expandDuration: vaultConfig.borrowExpandDuration,
baseDebtCeiling:getRawAmount( baseDebtCeilingInUSD: getRawAmount(
vaultConfig.borrow, vaultConfig.borrow,
vaultConfig.borrowBaseLimitInUSD, vaultConfig.borrowBaseLimitInUSD,
false false
) ),
maxDebtCeiling: getRawAmount( maxDebtCeilingInUSD: getRawAmount(
vaultConfig.borrow, vaultConfig.borrow,
vaultConfig.borrowMaxLimitInUSD, vaultConfig.borrowMaxLimitInUSD,
false false
@ -917,7 +981,7 @@ contract PayloadIGP30 {
} }
function getRawAmount(address token, uint256 amountInUSD, bool isSupply) public returns(uint256){ function getRawAmount(address token, uint256 amountInUSD, bool isSupply) public returns(uint256){
uint256 exchangePricesAndConfig = uint256 exchangePriceAndConfig_ =
LIQUIDITY.readFromStorage( LIQUIDITY.readFromStorage(
LiquiditySlotsLink.calculateMappingStorageSlot( LiquiditySlotsLink.calculateMappingStorageSlot(
LiquiditySlotsLink.LIQUIDITY_EXCHANGE_PRICES_MAPPING_SLOT, LiquiditySlotsLink.LIQUIDITY_EXCHANGE_PRICES_MAPPING_SLOT,
@ -925,8 +989,7 @@ contract PayloadIGP30 {
) )
); );
(uint256 supplyExchangePrice, uint256 borrowExchangePrice) = LiquidityCalcs (uint256 supplyExchangePrice, uint256 borrowExchangePrice) = LiquidityCalcs.calcExchangePrices(exchangePriceAndConfig_);
.calcExchangePrices(exchangePriceAndConfig_);
uint256 usdPrice = 0; uint256 usdPrice = 0;
uint256 decimals = 18; uint256 decimals = 18;