Skip to content

Commit

Permalink
SiAL; LeverageLendingBase 1.1.0; deploy scripts; fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
a17 committed Mar 3, 2025
1 parent 06d5168 commit 21573ea
Show file tree
Hide file tree
Showing 40 changed files with 966 additions and 53 deletions.
53 changes: 51 additions & 2 deletions chains/SonicLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import {ISiloIncentivesController} from "../src/integrations/silo/ISiloIncentive
import {IGaugeV3} from "../src/integrations/shadow/IGaugeV3.sol";
import {ALMShadowFarmStrategy} from "../src/strategies/ALMShadowFarmStrategy.sol";
import {SiloLeverageStrategy} from "../src/strategies/SiloLeverageStrategy.sol";
import {SiloAdvancedLeverageStrategy} from "../src/strategies/SiloAdvancedLeverageStrategy.sol";

/// @dev Sonic network [chainId: 146] data library
// _____ _
Expand Down Expand Up @@ -81,6 +82,7 @@ library SonicLib {
address public constant TOKEN_wstkscUSD = 0x9fb76f7ce5FCeAA2C42887ff441D46095E494206;
address public constant TOKEN_stkscETH = 0x455d5f11Fea33A8fa9D3e285930b478B6bF85265;
address public constant TOKEN_wstkscETH = 0xE8a41c62BB4d5863C6eadC96792cFE90A1f37C47;
address public constant TOKEN_wOS = 0x9F0dF7799f6FDAd409300080cfF680f5A23df4b1;

// AMMs
address public constant POOL_BEETS_wS_stS = 0x374641076B68371e69D03C417DAc3E5F236c32FA;
Expand Down Expand Up @@ -238,7 +240,11 @@ library SonicLib {
address public constant SILO_VAULT_3_stS = 0x396922EF30Cf012973343f7174db850c7D265278;
address public constant SILO_VAULT_3_wS = 0x47d8490Be37ADC7Af053322d6d779153689E13C1;
address public constant SILO_VAULT_23_wstkscUSD = 0x4E09FF794D255a123b00efa30162667A8054a845;
address public constant SILO_VAULT_23_USDC = 0x5954ce6671d97D24B782920ddCdBB4b1E63aB2De;
address public constant SILO_VAULT_26_wstkscETH = 0xE8e1A980a7fc8D47D337d704FA73FBb81eE55C25;
address public constant SILO_VAULT_26_wETH = 0x219656F33c58488D09d518BaDF50AA8CdCAcA2Aa;
address public constant SILO_VAULT_22_wOS = 0x1d7E3726aFEc5088e11438258193A199F9D5Ba93;
address public constant SILO_VAULT_22_wS = 0x112380065A2cb73A5A429d9Ba7368cc5e8434595;

// Gamma
address public constant GAMMA_UNISWAPV3_UNIPROXY = 0xcD5A60eb030300661cAf97244aE98e1D5A70f2c8;
Expand Down Expand Up @@ -317,6 +323,7 @@ library SonicLib {
.setupHelpers(BEETS_BALANCER_HELPERS);
DeployAdapterLib.deployAmmAdapter(platform, AmmAdapterIdLib.SOLIDLY);
DeployAdapterLib.deployAmmAdapter(platform, AmmAdapterIdLib.ALGEBRA_V4);
DeployAdapterLib.deployAmmAdapter(platform, AmmAdapterIdLib.ERC_4626);
LogDeployLib.logDeployAmmAdapters(platform, showLog);
//endregion

Expand Down Expand Up @@ -359,6 +366,15 @@ library SonicLib {
p.initNums[0] = 1;
p.initTicks = new int24[](0);
factory.setStrategyAvailableInitParams(StrategyIdLib.SILO_LEVERAGE, p);
p.initAddresses = new address[](4);
p.initAddresses[0] = SILO_VAULT_23_wstkscUSD;
p.initAddresses[1] = SILO_VAULT_23_USDC;
p.initAddresses[2] = BEETS_VAULT;
p.initAddresses[3] = SILO_LENS;
p.initNums = new uint[](1);
p.initNums[0] = 87_00;
p.initTicks = new int24[](0);
factory.setStrategyAvailableInitParams(StrategyIdLib.SILO_ADVANCED_LEVERAGE, p);
//endregion -- Add strategy available init params -----

//region ----- Deploy strategy logics -----
Expand All @@ -371,6 +387,7 @@ library SonicLib {
_addStrategyLogic(factory, StrategyIdLib.SILO_FARM, address(new SiloFarmStrategy()), true);
_addStrategyLogic(factory, StrategyIdLib.ALM_SHADOW_FARM, address(new ALMShadowFarmStrategy()), true);
_addStrategyLogic(factory, StrategyIdLib.SILO_LEVERAGE, address(new SiloLeverageStrategy()), false);
_addStrategyLogic(factory, StrategyIdLib.SILO_ADVANCED_LEVERAGE, address(new SiloAdvancedLeverageStrategy()), false);
LogDeployLib.logDeployStrategies(platform, showLog);
//endregion

Expand All @@ -387,17 +404,23 @@ library SonicLib {
returns (ISwapper.AddPoolData[] memory bcPools, ISwapper.AddPoolData[] memory pools)
{
//region ----- BC pools ----
bcPools = new ISwapper.AddPoolData[](2);
bcPools = new ISwapper.AddPoolData[](4);
//bcPools[0] = _makePoolData(POOL_BEETS_wS_stS, AmmAdapterIdLib.BALANCER_COMPOSABLE_STABLE, TOKEN_stS, TOKEN_wS);
//bcPools[0] = _makePoolData(POOL_EQUALIZER_wS_stS, AmmAdapterIdLib.SOLIDLY, TOKEN_stS, TOKEN_wS);
bcPools[0] = _makePoolData(POOL_SWAPX_CL_wS_stS, AmmAdapterIdLib.ALGEBRA_V4, TOKEN_stS, TOKEN_wS);
// bcPools[1] = _makePoolData(POOL_BEETS_wS_USDC, AmmAdapterIdLib.BALANCER_WEIGHTED, TOKEN_USDC, TOKEN_wS);
// bcPools[1] = _makePoolData(POOL_SUSHI_wS_USDC, AmmAdapterIdLib.UNISWAPV3, TOKEN_USDC, TOKEN_wS);
bcPools[1] = _makePoolData(POOL_EQUALIZER_wS_USDC, AmmAdapterIdLib.SOLIDLY, TOKEN_USDC, TOKEN_wS);
bcPools[2] = _makePoolData(
POOL_SHADOW_CL_USDC_scUSD_100, AmmAdapterIdLib.UNISWAPV3, TOKEN_scUSD, TOKEN_USDC
);
bcPools[3] = _makePoolData(
POOL_SHADOW_CL_scETH_WETH_100, AmmAdapterIdLib.UNISWAPV3, TOKEN_scETH, TOKEN_wETH
);
//endregion ----- BC pools ----

//region ----- Pools ----
pools = new ISwapper.AddPoolData[](15);
pools = new ISwapper.AddPoolData[](21);
uint i;
//pools[i++] = _makePoolData(POOL_BEETS_wS_stS, AmmAdapterIdLib.BALANCER_COMPOSABLE_STABLE, TOKEN_wS, TOKEN_stS);
//pools[i++] = _makePoolData(POOL_EQUALIZER_wS_stS, AmmAdapterIdLib.SOLIDLY, TOKEN_wS, TOKEN_stS);
Expand All @@ -420,6 +443,32 @@ library SonicLib {
pools[i++] = _makePoolData(POOL_SWAPX_AUR_auUSDC, AmmAdapterIdLib.SOLIDLY, TOKEN_auUSDC, TOKEN_AUR);
pools[i++] = _makePoolData(POOL_SHADOW_wS_SHADOW, AmmAdapterIdLib.SOLIDLY, TOKEN_SHADOW, TOKEN_wS);
pools[i++] = _makePoolData(POOL_SHADOW_CL_wS_BRUSH_5000, AmmAdapterIdLib.UNISWAPV3, TOKEN_BRUSH, TOKEN_wS);
pools[i++] = _makePoolData(
TOKEN_wstkscUSD, AmmAdapterIdLib.ERC_4626, TOKEN_wstkscUSD, TOKEN_stkscUSD
);
pools[i++] = _makePoolData(
POOL_SHADOW_CL_stkscUSD_scUSD_3000,
AmmAdapterIdLib.UNISWAPV3,
TOKEN_stkscUSD,
TOKEN_scUSD
);
pools[i++] = _makePoolData(
TOKEN_wstkscETH, AmmAdapterIdLib.ERC_4626, TOKEN_wstkscETH, TOKEN_stkscETH
);
pools[i++] = _makePoolData(
POOL_SHADOW_CL_scETH_stkscETH_250,
AmmAdapterIdLib.UNISWAPV3,
TOKEN_stkscETH,
TOKEN_scETH
);

pools[i++] = _makePoolData(
POOL_SWAPX_CL_wS_OS, AmmAdapterIdLib.ALGEBRA_V4, TOKEN_OS, TOKEN_wS
);
pools[i++] = _makePoolData(
TOKEN_wOS, AmmAdapterIdLib.ERC_4626, TOKEN_wOS, TOKEN_OS
);

//endregion ----- Pools ----
}

Expand Down
23 changes: 23 additions & 0 deletions script/deploy-adapter/ERC4626.Sonic.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {Script} from "forge-std/Script.sol";
import {Proxy} from "../../src/core/proxy/Proxy.sol";
import {ERC4626Adapter} from "../../src/adapters/ERC4626Adapter.sol";

contract DeployERC4626AdapterSonic is Script {
address public constant PLATFORM = 0x4Aca671A420eEB58ecafE83700686a2AD06b20D8;

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

Proxy proxy = new Proxy();
proxy.initProxy(address(new ERC4626Adapter()));
ERC4626Adapter(address(proxy)).init(PLATFORM);

vm.stopBroadcast();
}

function testDeployAdapter() external {}
}
16 changes: 16 additions & 0 deletions script/deploy-strategy/SiAL.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {Script} from "forge-std/Script.sol";
import {SiloAdvancedLeverageStrategy} from "../../src/strategies/SiloAdvancedLeverageStrategy.sol";

contract DeploySiAL is Script {
function run() external {
uint deployerPrivateKey = vm.envUint("PRIVATE_KEY");
vm.startBroadcast(deployerPrivateKey);
new SiloAdvancedLeverageStrategy();
vm.stopBroadcast();
}

function testDeployStrategy() external {}
}
5 changes: 5 additions & 0 deletions script/libs/DeployAdapterLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {BalancerComposableStableAdapter} from "../../src/adapters/BalancerCompos
import {BalancerWeightedAdapter} from "../../src/adapters/BalancerWeightedAdapter.sol";
import {SolidlyAdapter} from "../../src/adapters/SolidlyAdapter.sol";
import {AlgebraV4Adapter} from "../../src/adapters/AlgebraV4Adapter.sol";
import {ERC4626Adapter} from "../../src/adapters/ERC4626Adapter.sol";

library DeployAdapterLib {
function deployAmmAdapter(address platform, string memory id) internal returns (address) {
Expand Down Expand Up @@ -54,6 +55,10 @@ library DeployAdapterLib {
proxy.initProxy(address(new AlgebraV4Adapter()));
}

if (eq(id, AmmAdapterIdLib.ERC_4626)) {
proxy.initProxy(address(new ERC4626Adapter()));
}

require(proxy.implementation() != address(0), string.concat("Unknown AmmAdapter:", id));
IAmmAdapter(address(proxy)).init(platform);
IPlatform(platform).addAmmAdapter(id, address(proxy));
Expand Down
21 changes: 21 additions & 0 deletions src/interfaces/ILeverageLendingStrategy.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ interface ILeverageLendingStrategy {
);
event LeverageLendingHealth(uint ltv, uint leverage);
event TargetLeveragePercent(uint value);
event UniversalParams(uint[] params);

/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
/* DATA TYPES */
Expand All @@ -32,6 +33,22 @@ interface ILeverageLendingStrategy {
// configurable params
/// @dev Percent of max leverage. 90_00 is 90%.
uint targetLeveragePercent;
/// @dev Universal configurable param 0 for depositAssets
uint depositParam0;
/// @dev Universal configurable param 1 for depositAssets
uint depositParam1;
/// @dev Universal configurable param 0 for withdrawAssets
uint withdrawParam0;
/// @dev Universal configurable param 1 for withdrawAssets
uint withdrawParam1;
/// @dev Universal configurable param 0 for increase LTV
uint increaseLtvParam0;
/// @dev Universal configurable param 1 for increase LTV
uint increaseLtvParam1;
/// @dev Universal configurable param 0 for decrease LTV
uint decreaseLtvParam0;
/// @dev Universal configurable param 1 for decrease LTV
uint decreaseLtvParam1;
}

struct LeverageLendingStrategyBaseInitParams {
Expand All @@ -44,6 +61,7 @@ interface ILeverageLendingStrategy {
address borrowingVault;
address flashLoanVault;
address helper;
uint targetLeveragePercent;
}

struct LeverageLendingAddresses {
Expand Down Expand Up @@ -74,6 +92,9 @@ interface ILeverageLendingStrategy {
/// @param value Value with 4 decimals, 90_00 is 90%.
function setTargetLeveragePercent(uint value) external;

/// @notice Change universal configurable params
function setUniversalParams(uint[] memory params) external;

/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
/* VIEW FUNCTIONS */
/*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
Expand Down
7 changes: 7 additions & 0 deletions src/interfaces/ITeller.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

interface ITeller {
function deposit(address depositAsset, uint depositAmount, uint minimumMint) external payable returns (uint shares);

}
Loading

0 comments on commit 21573ea

Please sign in to comment.