Skip to content

Commit

Permalink
Merge pull request #92 from stabilitydao/90-proposed-gamma-quickswap-…
Browse files Browse the repository at this point in the history
…merkl-farm

GQMF
  • Loading branch information
a17 authored Feb 4, 2024
2 parents ce822fc + 8b6f212 commit 53cf1df
Show file tree
Hide file tree
Showing 15 changed files with 187 additions and 204 deletions.
118 changes: 51 additions & 67 deletions chains/PolygonLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import "../src/core/proxy/Proxy.sol";
import "../src/adapters/libs/AmmAdapterIdLib.sol";
import "../src/adapters/ChainlinkAdapter.sol";
import "../src/strategies/libs/StrategyIdLib.sol";
import "../src/strategies/libs/GammaLib.sol";
import "../src/strategies/libs/ALMPositionNameLib.sol";
import "../src/interfaces/IFactory.sol";
import "../src/interfaces/IPlatform.sol";
import "../src/interfaces/ISwapper.sol";
Expand Down Expand Up @@ -227,7 +227,7 @@ library PolygonLib {
//endregion -- Reward tokens -----

//region ----- Deploy strategy logics -----
DeployStrategyLib.deployStrategy(platform, StrategyIdLib.GAMMA_QUICKSWAP_FARM, true);
DeployStrategyLib.deployStrategy(platform, StrategyIdLib.GAMMA_QUICKSWAP_MERKL_FARM, true);
DeployStrategyLib.deployStrategy(platform, StrategyIdLib.QUICKSWAPV3_STATIC_FARM, true);
DeployStrategyLib.deployStrategy(platform, StrategyIdLib.COMPOUND_FARM, true);
DeployStrategyLib.deployStrategy(platform, StrategyIdLib.DEFIEDGE_QUICKSWAP_MERKL_FARM, true);
Expand Down Expand Up @@ -353,11 +353,7 @@ library PolygonLib {
}

/// @notice New routes jan-2024
function routes2()
public
pure
returns (ISwapper.AddPoolData[] memory pools)
{
function routes2() public pure returns (ISwapper.AddPoolData[] memory pools) {
pools = new ISwapper.AddPoolData[](1);
uint i;
pools[i++] = ISwapper.AddPoolData({
Expand All @@ -369,11 +365,7 @@ library PolygonLib {
}

/// @notice New routes jan-2024
function routes3()
public
pure
returns (ISwapper.AddPoolData[] memory pools)
{
function routes3() public pure returns (ISwapper.AddPoolData[] memory pools) {
pools = new ISwapper.AddPoolData[](2);
uint i;
pools[i++] = ISwapper.AddPoolData({
Expand All @@ -392,11 +384,12 @@ library PolygonLib {
}

function farms() public view returns (IFactory.Farm[] memory _farms) {
_farms = new IFactory.Farm[](17);
_farms = new IFactory.Farm[](16);
address[] memory rewardAssets;
address[] memory addresses;
uint[] memory nums;
int24[] memory ticks;
uint i;

//region ----- QuickSwap V3 farms -----
// [0] Earn dQUICK, WMATIC by static position in USDC/DAI pool on QuickSwap V3
Expand All @@ -412,7 +405,8 @@ library PolygonLib {
ticks = new int24[](2);
ticks[0] = 276240;
ticks[1] = 276420;
_farms[0] = IFactory.Farm({

_farms[i++] = IFactory.Farm({
status: 0,
pool: POOL_QUICKSWAPV3_USDCe_DAI,
strategyLogicId: StrategyIdLib.QUICKSWAPV3_STATIC_FARM,
Expand All @@ -423,54 +417,54 @@ library PolygonLib {
});
//endregion -- QuickSwap V3 farms -----

//region ----- Gamma QuickSwap farms -----
_farms[1] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, address(0), GAMMA_POS_DAI_USDT, GAMMA_UNIPROXY, 55, uint(GammaLib.Presets.STABLE)
//region ----- Gamma QuickSwap Merkl farms -----
// _farms[i++] = _makeGammaQuickSwapMerklFarm(
// TOKEN_dQUICK, GAMMA_POS_DAI_USDT, GAMMA_UNIPROXY, ALMPositionNameLib.STABLE
// );
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_USDCe_USDT, GAMMA_UNIPROXY_2, ALMPositionNameLib.STABLE
);
_farms[2] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, TOKEN_WMATIC, GAMMA_POS_USDCe_USDT, GAMMA_UNIPROXY_2, 11, uint(GammaLib.Presets.STABLE)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WMATIC_WETH_NARROW, GAMMA_UNIPROXY_2, ALMPositionNameLib.NARROW
);
_farms[3] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, address(0), GAMMA_POS_WMATIC_WETH_NARROW, GAMMA_UNIPROXY_2, 0, uint(GammaLib.Presets.NARROW)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WBTC_WETH_NARROW, GAMMA_UNIPROXY_2, ALMPositionNameLib.NARROW
);
_farms[4] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, address(0), GAMMA_POS_WBTC_WETH_NARROW, GAMMA_UNIPROXY_2, 8, uint(GammaLib.Presets.NARROW)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_USDCe_WETH_NARROW, GAMMA_UNIPROXY_2, ALMPositionNameLib.NARROW
);
_farms[5] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, TOKEN_WMATIC, GAMMA_POS_USDCe_WETH_NARROW, GAMMA_UNIPROXY_2, 4, uint(GammaLib.Presets.NARROW)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WMATIC_USDCe_NARROW, GAMMA_UNIPROXY_2, ALMPositionNameLib.NARROW
);
_farms[6] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, TOKEN_WMATIC, GAMMA_POS_WMATIC_USDCe_NARROW, GAMMA_UNIPROXY_2, 2, uint(GammaLib.Presets.NARROW)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WMATIC_WETH_WIDE, GAMMA_UNIPROXY_2, ALMPositionNameLib.WIDE
);
_farms[7] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, address(0), GAMMA_POS_WMATIC_WETH_WIDE, GAMMA_UNIPROXY_2, 1, uint(GammaLib.Presets.WIDE)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WBTC_USDCe_NARROW, GAMMA_UNIPROXY_2, ALMPositionNameLib.NARROW
);
_farms[8] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, address(0), GAMMA_POS_WBTC_USDCe_NARROW, GAMMA_UNIPROXY_2, 6, uint(GammaLib.Presets.NARROW)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WMATIC_USDT_NARROW, GAMMA_UNIPROXY_2, ALMPositionNameLib.NARROW
);
_farms[9] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, address(0), GAMMA_POS_WMATIC_USDT_NARROW, GAMMA_UNIPROXY_2, 16, uint(GammaLib.Presets.NARROW)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_USDCe_WETH_WIDE, GAMMA_UNIPROXY_2, ALMPositionNameLib.WIDE
);
_farms[10] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, TOKEN_WMATIC, GAMMA_POS_USDCe_WETH_WIDE, GAMMA_UNIPROXY_2, 5, uint(GammaLib.Presets.WIDE)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WBTC_WETH_WIDE, GAMMA_UNIPROXY_2, ALMPositionNameLib.WIDE
);
_farms[11] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, address(0), GAMMA_POS_WBTC_WETH_WIDE, GAMMA_UNIPROXY_2, 9, uint(GammaLib.Presets.WIDE)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WETH_USDT_NARROW, GAMMA_UNIPROXY_2, ALMPositionNameLib.NARROW
);
_farms[12] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, TOKEN_dQUICK, GAMMA_POS_WETH_USDT_NARROW, GAMMA_UNIPROXY_2, 26, uint(GammaLib.Presets.NARROW)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WMATIC_USDCe_WIDE, GAMMA_UNIPROXY_2, ALMPositionNameLib.WIDE
);
_farms[13] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, TOKEN_WMATIC, GAMMA_POS_WMATIC_USDCe_WIDE, GAMMA_UNIPROXY_2, 3, uint(GammaLib.Presets.WIDE)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WBTC_USDCe_WIDE, GAMMA_UNIPROXY_2, ALMPositionNameLib.WIDE
);
_farms[14] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, address(0), GAMMA_POS_WBTC_USDCe_WIDE, GAMMA_UNIPROXY_2, 7, uint(GammaLib.Presets.WIDE)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WETH_USDT_WIDE, GAMMA_UNIPROXY_2, ALMPositionNameLib.WIDE
);
_farms[15] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, TOKEN_dQUICK, GAMMA_POS_WETH_USDT_WIDE, GAMMA_UNIPROXY_2, 27, uint(GammaLib.Presets.WIDE)
);
_farms[16] = _makeGammaQuickSwapFarm(
TOKEN_dQUICK, address(0), GAMMA_POS_WMATIC_USDT_WIDE, GAMMA_UNIPROXY_2, 17, uint(GammaLib.Presets.WIDE)
_farms[i++] = _makeGammaQuickSwapMerklFarm(
TOKEN_dQUICK, GAMMA_POS_WMATIC_USDT_WIDE, GAMMA_UNIPROXY_2, ALMPositionNameLib.WIDE
);
//endregion -- Gamma QuickSwap farms -----
}
Expand Down Expand Up @@ -532,7 +526,7 @@ library PolygonLib {
address[] memory addresses;
uint[] memory nums;
int24[] memory ticks;

// [19]
rewardAssets = new address[](1);
rewardAssets[0] = TOKEN_dQUICK;
Expand Down Expand Up @@ -642,33 +636,23 @@ library PolygonLib {
});
}

function _makeGammaQuickSwapFarm(
function _makeGammaQuickSwapMerklFarm(
address rewardAsset0,
address rewardAsset1,
address hypervisor,
address uniProxy,
uint pid,
uint preset
) internal view returns (IFactory.Farm memory) {
IFactory.Farm memory farm;
farm.status = 0;
farm.pool = IHypervisor(hypervisor).pool();
farm.strategyLogicId = StrategyIdLib.GAMMA_QUICKSWAP_FARM;
if (rewardAsset1 == address(0)) {
farm.rewardAssets = new address[](1);
farm.rewardAssets[0] = rewardAsset0;
} else {
farm.rewardAssets = new address[](2);
farm.rewardAssets[0] = rewardAsset0;
farm.rewardAssets[1] = rewardAsset1;
}
farm.addresses = new address[](3);
farm.strategyLogicId = StrategyIdLib.GAMMA_QUICKSWAP_MERKL_FARM;
farm.rewardAssets = new address[](1);
farm.rewardAssets[0] = rewardAsset0;
farm.addresses = new address[](2);
farm.addresses[0] = uniProxy;
farm.addresses[1] = GAMMA_QUICKSWAP_MASTERCHEF;
farm.addresses[2] = hypervisor;
farm.nums = new uint[](2);
farm.nums[0] = pid;
farm.nums[1] = preset;
farm.addresses[1] = hypervisor;
farm.nums = new uint[](1);
farm.nums[0] = preset;
farm.ticks = new int24[](0);
return farm;
}
Expand Down
53 changes: 53 additions & 0 deletions script/DeployStrategyGQMF.Polygon.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import "forge-std/Script.sol";
import "../src/strategies/GammaQuickSwapMerklFarmStrategy.sol";
import "../src/strategies/libs/ALMPositionNameLib.sol";
import "../chains/PolygonLib.sol";

contract DeployStrategyGQMFPolygon is Script {
address public constant PLATFORM = 0xb2a0737ef27b5Cc474D24c779af612159b1c3e60;

function run() external {
uint deployerPrivateKey = vm.envUint("PRIVATE_KEY");
vm.startBroadcast(deployerPrivateKey);

new GammaQuickSwapMerklFarmStrategy();

IFactory factory = IFactory(IPlatform(PLATFORM).factory());
IFactory.Farm[] memory _farms = new IFactory.Farm[](1);
_farms[0] = _makeGammaQuickSwapMerklFarm(
PolygonLib.TOKEN_dQUICK,
PolygonLib.GAMMA_POS_USDCe_USDT,
PolygonLib.GAMMA_UNIPROXY_2,
ALMPositionNameLib.STABLE
);
factory.addFarms(_farms);

vm.stopBroadcast();
}

function _makeGammaQuickSwapMerklFarm(
address rewardAsset0,
address hypervisor,
address uniProxy,
uint preset
) internal view returns (IFactory.Farm memory) {
IFactory.Farm memory farm;
farm.status = 0;
farm.pool = IHypervisor(hypervisor).pool();
farm.strategyLogicId = StrategyIdLib.GAMMA_QUICKSWAP_MERKL_FARM;
farm.rewardAssets = new address[](1);
farm.rewardAssets[0] = rewardAsset0;
farm.addresses = new address[](2);
farm.addresses[0] = uniProxy;
farm.addresses[1] = hypervisor;
farm.nums = new uint[](1);
farm.nums[0] = preset;
farm.ticks = new int24[](0);
return farm;
}

function testDeployPolygon() external {}
}
6 changes: 3 additions & 3 deletions script/libs/DeployStrategyLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import "../../src/interfaces/IPlatform.sol";
import "../../src/interfaces/IFactory.sol";
import "../../src/strategies/libs/StrategyIdLib.sol";
import "../../src/strategies/QuickswapV3StaticFarmStrategy.sol";
import "../../src/strategies/GammaQuickSwapFarmStrategy.sol";
import "../../src/strategies/GammaQuickSwapMerklFarmStrategy.sol";
import "../../src/strategies/CompoundFarmStrategy.sol";
import "../../src/strategies/DefiEdgeQuickSwapMerklFarmStrategy.sol";
import "../../src/strategies/IchiQuickSwapMerklFarmStrategy.sol";
Expand All @@ -28,8 +28,8 @@ library DeployStrategyLib {
implementation = address(new QuickSwapV3StaticFarmStrategy());
}

if (CommonLib.eq(id, StrategyIdLib.GAMMA_QUICKSWAP_FARM)) {
implementation = address(new GammaQuickSwapFarmStrategy());
if (CommonLib.eq(id, StrategyIdLib.GAMMA_QUICKSWAP_MERKL_FARM)) {
implementation = address(new GammaQuickSwapMerklFarmStrategy());
}

if (CommonLib.eq(id, StrategyIdLib.COMPOUND_FARM)) {
Expand Down
Loading

0 comments on commit 53cf1df

Please sign in to comment.