Untitled
unknown
plain_text
3 years ago
961 B
9
Indexable
function _decreasePosition(address _account, address _collateralToken, address _indexToken, uint256 _collateralDelta, uint256 _sizeDelta, bool _isLong, address _receiver, uint256 _price) internal returns (uint256) {
address _vault = vault;
if (_isLong) {
require(IVault(_vault).getMinPrice(_indexToken) >= _price, "BasePositionManager: mark price lower than limit");
} else {
require(IVault(_vault).getMaxPrice(_indexToken) <= _price, "BasePositionManager: mark price higher than limit");
}
address timelock = IVault(_vault).gov();
ITimelock(timelock).enableLeverage(_vault);
uint256 amountOut = IRouter(router).pluginDecreasePosition(_account, _collateralToken, _indexToken, _collateralDelta, _sizeDelta, _isLong, _receiver);
ITimelock(timelock).disableLeverage(_vault);
_emitDecreasePositionReferral(_account, _sizeDelta);
return amountOut;
}Editor is loading...