BaseRehypothecationManager.sol
1 pragma solidity >=0.6.0; 2 pragma experimental ABIEncoderV2; 3 4 import "../../deployment/Deployer.sol"; 5 import "../../deployment/ManagedContract.sol"; 6 import "../../interfaces/IProtocolSettings.sol"; 7 import "../../interfaces/IBaseRehypothecationManager.sol"; 8 import "../../interfaces/ICreditProvider.sol"; 9 import "../../interfaces/ICreditToken.sol"; 10 import "../../interfaces/IOptionsExchange.sol"; 11 import "../../interfaces/IUnderlyingVault.sol"; 12 import "../../utils/MoreMath.sol"; 13 import "../../utils/SafeERC20.sol"; 14 import "../../utils/SafeCast.sol"; 15 16 abstract contract BaseRehypothecationManager is ManagedContract, IBaseRehypothecationManager { 17 using SafeERC20 for IERC20_2; 18 using SafeCast for uint; 19 using SafeMath for uint; 20 using SignedSafeMath for int; 21 22 IProtocolSettings internal settings; 23 ICreditProvider internal creditProvider; 24 ICreditToken internal creditToken; 25 IOptionsExchange internal exchange; 26 IUnderlyingVault internal vault; 27 28 function initialize(Deployer deployer) virtual override internal { 29 creditProvider = ICreditProvider(deployer.getContractAddress("CreditProvider")); 30 creditToken = ICreditToken(deployer.getContractAddress("CreditToken")); 31 settings = IProtocolSettings(deployer.getContractAddress("ProtocolSettings")); 32 exchange = IOptionsExchange(deployer.getContractAddress("OptionsExchange")); 33 vault = IUnderlyingVault(deployer.getContractAddress("UnderlyingVault")); 34 35 } 36 function notionalExposure(address account, address asset, address collateral) virtual override external view returns (uint256); 37 function borrowExposure(address account, address asset, address collateral) virtual override external view returns (uint256); 38 function lend(address asset, address collateral, uint assetAmount, uint collateralAmount, address udlFeed) virtual override external; 39 function withdraw(address asset, address collateral, uint amount) virtual override external; 40 function borrow(address asset, address collateral, uint assetAmount, uint collateralAmount, address udlFeed) virtual override external; 41 function repay(address asset, address collateral, address udlFeed) virtual override external; 42 function transferTokensToCreditProvider(address tokenAddr) virtual override external; 43 function transferTokensToVault(address tokenAddr) virtual override external; 44 }