Skip to content

Commit

Permalink
Merge pull request #172 from gammaswap/borrow-return-tokensheld
Browse files Browse the repository at this point in the history
publish package
  • Loading branch information
0xDanr committed Dec 28, 2023
2 parents 4400b7d + 51c6b69 commit 80f39ff
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 12 deletions.
4 changes: 2 additions & 2 deletions contracts/base/GammaPool.sol
Original file line number Diff line number Diff line change
Expand Up @@ -359,8 +359,8 @@ abstract contract GammaPool is IGammaPool, GammaPoolERC4626 {
}

/// @dev See {IGammaPool-borrowLiquidity}
function borrowLiquidity(uint256 tokenId, uint256 lpTokens, uint256[] calldata ratio) external virtual override whenNotPaused(12) returns(uint256 liquidityBorrowed, uint256[] memory amounts) {
return abi.decode(callStrategy(borrowStrategy, abi.encodeCall(IBorrowStrategy._borrowLiquidity, (tokenId, lpTokens, ratio))), (uint256, uint256[]));
function borrowLiquidity(uint256 tokenId, uint256 lpTokens, uint256[] calldata ratio) external virtual override whenNotPaused(12) returns(uint256 liquidityBorrowed, uint256[] memory amounts, uint128[] memory tokensHeld) {
return abi.decode(callStrategy(borrowStrategy, abi.encodeCall(IBorrowStrategy._borrowLiquidity, (tokenId, lpTokens, ratio))), (uint256, uint256[], uint128[]));
}

/// @dev See {IGammaPool-repayLiquidity}
Expand Down
3 changes: 2 additions & 1 deletion contracts/interfaces/IGammaPool.sol
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,8 @@ interface IGammaPool is IGammaPoolEvents, IGammaPoolERC20Events, IRateModel {
/// @param ratio - ratio to rebalance collateral after borrowing
/// @return liquidityBorrowed - liquidity amount that has been borrowed
/// @return amounts - reserves quantities withdrawn from CFMM that correspond to the LP tokens shorted, now used as collateral
function borrowLiquidity(uint256 tokenId, uint256 lpTokens, uint256[] calldata ratio) external returns(uint256 liquidityBorrowed, uint256[] memory amounts);
/// @return tokensHeld - updated collateral token amounts backing loan
function borrowLiquidity(uint256 tokenId, uint256 lpTokens, uint256[] calldata ratio) external returns(uint256 liquidityBorrowed, uint256[] memory amounts, uint128[] memory tokensHeld);

/// @dev Repay liquidity debt of loan identified by tokenId, debt is repaid using available collateral in loan
/// @param tokenId - unique id identifying loan
Expand Down
3 changes: 2 additions & 1 deletion contracts/interfaces/strategies/lending/IBorrowStrategy.sol
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,6 @@ interface IBorrowStrategy is ILongStrategy {
/// @param ratio - weights of collateral after borrowing liquidity
/// @return liquidityBorrowed - liquidity amount that has been borrowed
/// @return amounts - reserves quantities withdrawn from CFMM that correspond to the LP tokens shorted, now used as collateral
function _borrowLiquidity(uint256 tokenId, uint256 lpTokens, uint256[] calldata ratio) external returns(uint256 liquidityBorrowed, uint256[] memory amounts);
/// @return tokensHeld - updated collateral token amounts backing loan
function _borrowLiquidity(uint256 tokenId, uint256 lpTokens, uint256[] calldata ratio) external returns(uint256 liquidityBorrowed, uint256[] memory amounts, uint128[] memory tokensHeld);
}
4 changes: 2 additions & 2 deletions contracts/strategies/lending/BorrowStrategy.sol
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ abstract contract BorrowStrategy is IBorrowStrategy, BaseBorrowStrategy, BaseReb
}

/// @dev See {IBorrowStrategy-_borrowLiquidity}.
function _borrowLiquidity(uint256 tokenId, uint256 lpTokens, uint256[] calldata ratio) external virtual override lock returns(uint256 liquidityBorrowed, uint256[] memory amounts) {
function _borrowLiquidity(uint256 tokenId, uint256 lpTokens, uint256[] calldata ratio) external virtual override lock returns(uint256 liquidityBorrowed, uint256[] memory amounts, uint128[] memory tokensHeld) {
// Revert if borrowing all CFMM LP tokens in pool
if(lpTokens >= s.LP_TOKEN_BALANCE) revert ExcessiveBorrowing();

Expand All @@ -151,7 +151,7 @@ abstract contract BorrowStrategy is IBorrowStrategy, BaseBorrowStrategy, BaseReb
amounts = withdrawFromCFMM(s.cfmm, address(this), lpTokens);

// Add withdrawn tokens as part of loan collateral
(uint128[] memory tokensHeld,) = updateCollateral(_loan);
(tokensHeld,) = updateCollateral(_loan);

// Add liquidity debt to total pool debt and start tracking loan
(liquidityBorrowed, loanLiquidity) = openLoan(_loan, lpTokens);
Expand Down
10 changes: 5 additions & 5 deletions contracts/test/strategies/TestBorrowStrategy2.sol
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ contract TestBorrowStrategy2 is IBorrowStrategy {
emit LoanUpdated(tokenId, tokensHeld, 21, 22, 23, 24, TX_TYPE.DECREASE_COLLATERAL);
}

function _borrowLiquidity(uint256 tokenId, uint256 lpTokens, uint256[] calldata ratio) external override returns(uint256 liquidityBorrowed, uint256[] memory amounts) {
function _borrowLiquidity(uint256 tokenId, uint256 lpTokens, uint256[] calldata ratio) external override returns(uint256 liquidityBorrowed, uint256[] memory amounts, uint128[] memory tokensHeld) {
amounts = new uint256[](2);
amounts[0] = lpTokens * 2;
amounts[1] = lpTokens;
uint128[] memory heldTokens = new uint128[](2);
heldTokens[0] = uint128(lpTokens * 2);
heldTokens[1] = uint128(lpTokens);
tokensHeld = new uint128[](2);
tokensHeld[0] = uint128(lpTokens * 2);
tokensHeld[1] = uint128(lpTokens);
liquidityBorrowed = tokenId;
emit LoanUpdated(tokenId, heldTokens, 31, 32, 33, 34, TX_TYPE.BORROW_LIQUIDITY);
emit LoanUpdated(tokenId, tokensHeld, 31, 32, 33, 34, TX_TYPE.BORROW_LIQUIDITY);
}
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gammaswap/v1-core",
"version": "1.1.16",
"version": "1.1.17",
"description": "Core smart contracts for the GammaSwap V1 protocol",
"homepage": "https://gammaswap.com",
"scripts": {
Expand Down

0 comments on commit 80f39ff

Please sign in to comment.