Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
197abfe
#431: Start to implement ALMF-strategy
Nov 10, 2025
6f4d1e5
#431: ALMF ...
Nov 10, 2025
ee06ab6
#431: AMLF ...
Nov 11, 2025
fe18d21
#431: draft implementation of withdraw and deposit
Nov 12, 2025
12db98e
#431: very draft implementation, just compiled
Nov 12, 2025
c457f58
#431: ALMF has passed universal test
Nov 13, 2025
5691419
#431: unit tests for ALMFCalcLib
Nov 13, 2025
6341cda
#431: add single deposit-withdraw test
Nov 14, 2025
6810bf6
#431: additional tests.. use real share price as share price
Nov 14, 2025
6ac00d5
#341: use default maxDeposit and maxWithdraw implementations
Nov 14, 2025
e17d425
#431: Remove console logs, format, remove unused tests
Nov 14, 2025
1bddf61
fix formatting
Nov 14, 2025
42cc4b6
#431: reduce ALMF size
Nov 17, 2025
d29b14c
ALMF: tests for plasma, draft test for ethereum
Nov 17, 2025
2a74b42
#431: fix ethereum tests, add logic for withdraw in emergency, add te…
Nov 18, 2025
b6068c6
fix slither issues, remove unused code
Nov 18, 2025
dd9615e
#431: ALMF - fix direct repay logic
Nov 18, 2025
db869b2
fix typo
Nov 18, 2025
c9557bb
#431: fix coverage
Nov 19, 2025
d6a8a31
Fix limits in tests for CI, fix selectFork w/o block, try to use acti…
Nov 19, 2025
ebd1f08
#431: ALMF: fix emitted ltv value
Nov 19, 2025
f71bdc3
#431: add deploy script for ALMF, improve tests on plasma
Nov 19, 2025
bb7982a
#431: start to add e-mode to ALMF
Nov 20, 2025
8b6f813
#431: add new farms on plasma
Nov 21, 2025
be71b48
Add Aave3Adapter + test
Nov 21, 2025
292b5eb
#431: fix tests
Nov 24, 2025
20e2799
#431: Add explicit tests for swaps. Show positive APR in tests
Nov 24, 2025
149fc14
Add deploy scripts for amm-adapters for plasma
Nov 24, 2025
1e250c0
ALMF: share price in USD => share price in collateral asset
Dec 1, 2025
e08db9f
#431: fix test for updated getRevenue
Dec 1, 2025
4e8fa57
ALMF: auto fix _exchangeAssetIndex value in _beforeDoHardWork
Dec 2, 2025
334e2ac
Add upgrade test for ALMF to fix coverage
Dec 2, 2025
b1ea238
Deploy UpgradeHelper on Plasma
Dec 2, 2025
28d4535
ALMF: add revenueBaseAsset param to the farm
Dec 10, 2025
74dcc7e
remove console logs
Dec 10, 2025
ea6a64a
Add list of amm adapters deployed on plasma to guids
Dec 15, 2025
b3c8411
merge
Dec 15, 2025
5d2890b
fix import from solady
Dec 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,18 @@ jobs:
with:
version: stable

# Restore Foundry RPC cache to avoid hitting paid RPC endpoints on every CI run.
# This cache stores responses from all networks (Ethereum, Arbitrum, Base, etc.)
# and allows forge to reuse previously fetched block/state data.
# Without this step, every CI run would re-query RPC providers from scratch,
# quickly exhausting rate limits on paid RPC keys.
- name: Restore RPC cache
uses: actions/cache@v3
with:
path: ~/.foundry/cache/rpc
key: rpc-cache
restore-keys: rpc-cache

- name: Run forge build
run: |
forge --version
Expand Down
8 changes: 6 additions & 2 deletions chains/EthereumLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {StrategyDeveloperLib} from "../src/strategies/libs/StrategyDeveloperLib.
import {CVault} from "../src/core/vaults/CVault.sol";
import {VaultTypeLib} from "../src/core/libs/VaultTypeLib.sol";
import {PriceReader, IPriceReader} from "../src/core/PriceReader.sol";
import {AaveLeverageMerklFarmStrategy} from "../src/strategies/AaveLeverageMerklFarmStrategy.sol";

/// @dev Ethereum network [chainId: 1] data library
/// EEEEEEEEEE TTTTTTTTTT HHH HHH EEEEEEEEEE RRRRRRRR EEEEEEEEEE UU UU M M
Expand Down Expand Up @@ -48,6 +49,7 @@ library EthereumLib {
address public constant POOL_UNISWAPV3_COMP_WETH_3000 = 0xea4Ba4CE14fdd287f380b55419B1C5b6c3f22ab6;
address public constant POOL_UNISWAPV3_SHFL_USDC_3000 = 0xD0A4c8A1a14530C7C9EfDaD0BA37E8cF4204d230;
address public constant POOL_UNISWAPV3_WBTC_EBTC_500 = 0xEf9b4FddD861aa2F00eE039C323b7FAbd7AFE239;
address public constant POOL_UNISWAPV3_WBTC_USDC_3000 = 0x99ac8cA7087fA4A2A1FB6357269965A2014ABc35;

// Oracles
address public constant ORACLE_CHAINLINK_USDC_USD = 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6;
Expand Down Expand Up @@ -136,6 +138,7 @@ library EthereumLib {

//region ----- Deploy strategy logics -----
factory.setStrategyImplementation(StrategyIdLib.COMPOUND_FARM, address(new CompoundFarmStrategy()));
factory.setStrategyImplementation(StrategyIdLib.AAVE_LEVERAGE_MERKL_FARM, address(new AaveLeverageMerklFarmStrategy()));
LogDeployLib.logDeployStrategies(platform, showLog);
//endregion

Expand All @@ -158,14 +161,15 @@ library EthereumLib {
//endregion

//region ----- Pools -----
pools = new ISwapper.AddPoolData[](6);
pools = new ISwapper.AddPoolData[](7);
uint i;
pools[i++] = _makePoolData(POOL_UNISWAPV3_USDC_WETH_500, AmmAdapterIdLib.UNISWAPV3, TOKEN_USDC, TOKEN_WETH);
pools[i++] = _makePoolData(POOL_UNISWAPV3_WETH_weETH_500, AmmAdapterIdLib.UNISWAPV3, TOKEN_WETH, TOKEN_weETH);
pools[i++] = _makePoolData(POOL_UNISWAPV3_wstETH_WETH_100, AmmAdapterIdLib.UNISWAPV3, TOKEN_wstETH, TOKEN_WETH);
pools[i++] = _makePoolData(POOL_UNISWAPV3_COMP_WETH_3000, AmmAdapterIdLib.UNISWAPV3, TOKEN_COMP, TOKEN_WETH);
pools[i++] = _makePoolData(POOL_UNISWAPV3_SHFL_USDC_3000, AmmAdapterIdLib.UNISWAPV3, TOKEN_SHFL, TOKEN_USDC);
pools[i++] = _makePoolData(POOL_UNISWAPV3_WBTC_EBTC_500, AmmAdapterIdLib.UNISWAPV3, TOKEN_WBTC, TOKEN_EBTC);
pools[i++] = _makePoolData(POOL_UNISWAPV3_WBTC_EBTC_500, AmmAdapterIdLib.UNISWAPV3, TOKEN_EBTC, TOKEN_WBTC);
pools[i++] = _makePoolData(POOL_UNISWAPV3_WBTC_USDC_3000, AmmAdapterIdLib.UNISWAPV3, TOKEN_WBTC, TOKEN_USDC);
//endregion
}

Expand Down
24 changes: 24 additions & 0 deletions chains/plasma/PlasmaConstantsLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,37 @@ library PlasmaConstantsLib {

// Balancer
address public constant BALANCER_V3_ROUTER = 0x9dA18982a33FD0c7051B19F0d7C76F2d5E7e017c;
address public constant POOL_BALANCER_V3_STABLE_WETH_WEETH = 0xda51975D78Cb172b46d7292cEC9fa9E74723eF3b;
address public constant POOL_BALANCER_V3_STABLE_SUSDE_USDT0 = 0xd9c4e277c93374a9f8C877a9D06707a88092E8F0;

// Euler: todo we need new strategy
/// @notice https://app.euler.finance/earn/0xe818ad0D20D504C55601b9d5e0E137314414dec4?network=plasma
address public constant EULER_MERKL_USDT0_K3_CAPITAL = 0xe818ad0D20D504C55601b9d5e0E137314414dec4;
address public constant EULER_MERKL_USDT0_RE7 = 0xa5EeD1615cd883dD6883ca3a385F525e3bEB4E79;

// AAVE
address public constant AAVE_V3_ADDRESS_PROVIDER = 0x061D8e131F26512348ee5FA42e2DF1bA9d6505E9;
address public constant AAVE_V3_POOL_DATA_PROVIDER = 0xf2D6E38B407e31E7E7e4a16E6769728b76c7419F;
address public constant AAVE_V3_POOL = 0x925a2A7214Ed92428B5b1B090F80b25700095e12;
address public constant AAVE_V3_POOL_USDT0 = 0x5D72a9d9A9510Cd8cBdBA12aC62593A58930a948;
address public constant AAVE_V3_POOL_WETH = 0xf1aB7f60128924d69f6d7dE25A20eF70bBd43d07;
address public constant AAVE_V3_POOL_SUSDE = 0xC1A318493fF07a68fE438Cee60a7AD0d0DBa300E;
address public constant AAVE_V3_POOL_WEETH = 0xAf1a7a488c8348b41d5860C04162af7d3D38A996;
address public constant AAVE_V3_POOL_USDE = 0x7519403E12111ff6b710877Fcd821D0c12CAF43A;

// DEX
address internal constant POOL_OKU_TRADE_USDT0_WETH = 0xCe4Ac514CA6a9db357CcCc105B7848d7fd37445d;
address internal constant POOL_CURVE_USDE_USDT0 = 0x2D84D79C852f6842AbE0304b70bBaA1506AdD457;
address internal constant POOL_CURVE_SUSDE_USDT0 = 0x1E8D78e9b3f0152D54d32904B7933f1cFE439Df1;
address internal constant POOL_WXPL_USDT0 = 0x8603C67B7Cc056ef6981a9C709854c53b699Fa66;
// address internal constant POOL_USDE_USDT0 = 0x01b968C1b663C3921Da5BE3C99Ee3c9B89a40B54;

// Wrapped AAVE tokens
address public constant TOKEN_WAPLAWETH = 0xa047fdFb3420A27a5f926735b475fE5a1E968786;
address public constant TOKEN_WAPLAUSDT0 = 0xE0126F0c4451B2B917064A93040fd4770D6774b5;
/// @notice aPlaUSDe, see https://app.merkl.xyz/opportunities/plasma/MULTILOG_DUTCH/0x0e4366ce92ab4e9b011f77234922b1a04a9b6ec8BORROW_BL
address public constant TOKEN_WAPLAUSDE = 0x63dC02BB25E7BF7Eaa0E42E71D785a388AcD740b;

address public constant POOL_SOLIDLY_WETH_WEETH = 0x355705857c9548E71E866087b01bB5b0A1fd671b;

}
2 changes: 1 addition & 1 deletion chains/plasma/PlasmaFarmMakerLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ library PlasmaFarmMakerLib {
}

function testFarmMakerLib() external {}
}
}
32 changes: 31 additions & 1 deletion chains/plasma/PlasmaLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {Proxy} from "../../src/core/proxy/Proxy.sol";
import {StrategyDeveloperLib} from "../../src/strategies/libs/StrategyDeveloperLib.sol";
import {StrategyIdLib} from "../../src/strategies/libs/StrategyIdLib.sol";
import {VaultTypeLib} from "../../src/core/libs/VaultTypeLib.sol";
import {AaveLeverageMerklFarmStrategy} from "../../src/strategies/AaveLeverageMerklFarmStrategy.sol";

library PlasmaLib {
function platformDeployParams() internal pure returns (IPlatformDeployer.DeployPlatformParams memory p) {
Expand Down Expand Up @@ -57,6 +58,10 @@ library PlasmaLib {
DeployAdapterLib.deployAmmAdapter(platform, AmmAdapterIdLib.BALANCER_V3_RECLAMM);
IBalancerAdapter(IPlatform(platform).ammAdapter(keccak256(bytes(AmmAdapterIdLib.BALANCER_V3_RECLAMM))).proxy)
.setupHelpers(PlasmaConstantsLib.BALANCER_V3_ROUTER);
DeployAdapterLib.deployAmmAdapter(platform, AmmAdapterIdLib.UNISWAPV3);
IBalancerAdapter(DeployAdapterLib.deployAmmAdapter(platform, AmmAdapterIdLib.BALANCER_V3_STABLE)).setupHelpers(PlasmaConstantsLib.BALANCER_V3_ROUTER);
DeployAdapterLib.deployAmmAdapter(platform, AmmAdapterIdLib.CURVE);
DeployAdapterLib.deployAmmAdapter(platform, AmmAdapterIdLib.ERC_4626);
//endregion -- Deploy AMM adapters ----

//region ----- Setup Swapper -----
Expand All @@ -73,14 +78,15 @@ library PlasmaLib {

//region ----- Deploy strategies -----
factory.setStrategyImplementation(StrategyIdLib.AAVE_MERKL_FARM, address(new AaveMerklFarmStrategy()));
factory.setStrategyImplementation(StrategyIdLib.AAVE_LEVERAGE_MERKL_FARM, address(new AaveLeverageMerklFarmStrategy()));
//endregion

//region ----- Add DeX aggregators -----
//endregion
}

function routes() public pure returns (ISwapper.AddPoolData[] memory pools) {
pools = new ISwapper.AddPoolData[](2);
pools = new ISwapper.AddPoolData[](6);
uint i;
pools[i++] = _makePoolData(
PlasmaConstantsLib.POOL_BALANCER_V3_RECLAMM_WXPL_USDT0,
Expand All @@ -94,6 +100,30 @@ library PlasmaLib {
PlasmaConstantsLib.TOKEN_WXPL,
PlasmaConstantsLib.TOKEN_USDT0
);
pools[i++] = _makePoolData(
PlasmaConstantsLib.POOL_OKU_TRADE_USDT0_WETH,
AmmAdapterIdLib.UNISWAPV3,
PlasmaConstantsLib.TOKEN_WETH,
PlasmaConstantsLib.TOKEN_USDT0
);
pools[i++] = _makePoolData(
PlasmaConstantsLib.POOL_BALANCER_V3_STABLE_WETH_WEETH,
AmmAdapterIdLib.BALANCER_V3_STABLE,
PlasmaConstantsLib.TOKEN_WEETH,
PlasmaConstantsLib.TOKEN_WAPLAWETH
);
pools[i++] = _makePoolData(
PlasmaConstantsLib.POOL_CURVE_SUSDE_USDT0,
AmmAdapterIdLib.CURVE,
PlasmaConstantsLib.TOKEN_SUSDE,
PlasmaConstantsLib.TOKEN_USDT0
);
pools[i++] = _makePoolData(
PlasmaConstantsLib.POOL_CURVE_USDE_USDT0,
AmmAdapterIdLib.CURVE,
PlasmaConstantsLib.TOKEN_USDE,
PlasmaConstantsLib.TOKEN_USDT0
);
}

function farms() public pure returns (IFactory.Farm[] memory _farms) {
Expand Down
51 changes: 51 additions & 0 deletions chains/shared/SharedFarmMarketLib.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

import {StrategyIdLib} from "../../src/strategies/libs/StrategyIdLib.sol";
import {IFactory} from "../../src/interfaces/IFactory.sol";
import {SiloManagedMerklFarmStrategy} from "../../src/strategies/SiloManagedMerklFarmStrategy.sol";

/// @notice Shared implementation of farms
library SharedFarmMakerLib {
/// @notice Creates Aave Leverage Merkl Farm configuration
/// @param aTokenCollateral Address of aToken used as collateral
/// @param aTokenBorrow Address of aToken used as borrowed asset
/// @param flashLoanVault Address of the vault used for flash loans
/// @param rewardAssets Array of reward token addresses
/// @param minTargetLtv Minimum target loan-to-value ratio (LTV) for leverage management, 85_00 = 0.85
/// @param maxTargetLtv Maximum target loan-to-value ratio (LTV) for leverage management, 85_00 = 0.85
/// @param flashLoanKind Type of flash loan to be used (see ILeverageLendingStrategy.FlashLoanKind)
/// @param eModeCategoryId EMode category ID for the farm (optional, can be 0)
/// @param revenueBaseAssetIndex Index of the asset for share price calculations. 0 - collateral asset, 1 - borrow asset
function _makeAaveLeverageMerklFarm(
address aTokenCollateral,
address aTokenBorrow,
address flashLoanVault,
address[] memory rewardAssets,
uint minTargetLtv,
uint maxTargetLtv,
uint flashLoanKind,
uint8 eModeCategoryId,
uint8 revenueBaseAssetIndex
) internal pure returns (IFactory.Farm memory) {
IFactory.Farm memory farm;
farm.status = 0;
farm.strategyLogicId = StrategyIdLib.AAVE_LEVERAGE_MERKL_FARM;
farm.rewardAssets = rewardAssets;

farm.addresses = new address[](3);
farm.addresses[0] = aTokenCollateral;
farm.addresses[1] = aTokenBorrow;
farm.addresses[2] = flashLoanVault;

farm.nums = new uint[](5);
farm.nums[0] = minTargetLtv;
farm.nums[1] = maxTargetLtv;
farm.nums[2] = flashLoanKind;
farm.nums[3] = eModeCategoryId;
farm.nums[4] = revenueBaseAssetIndex;

return farm;
}

}
7 changes: 7 additions & 0 deletions chains/sonic/SonicConstantsLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -533,6 +533,13 @@ library SonicConstantsLib {
address public constant BRUNCH_GEN2_ATOKEN_SBUSD = 0xeB9bB589C12A0433B274760E657D549a6973C787;
address public constant BRUNCH_GEN2_ATOKEN_USDC = 0x958d930E61bdaebbBc0270D88FdBAEE9A13Dc6fd;

// -------------------------- STBL-USDC isolated market
address public constant STABILITY_STBL_USDC_MARKET_ADDRESS_PROVIDER = 0x234888531C4a6AFeF6935DD7DB9F9D5325b68715;
address public constant STABILITY_STBL_USDC_MARKET_POOL = 0xb0A06303085aB2F73212C8846CA5388Da5697c31;
address public constant STABILITY_STBL_USDC_MARKET_TOKEN_STBL = 0x00886bC6a12d8D5ad0ef51e041a8AB37A0E59251;
address public constant STABILITY_STBL_USDC_MARKET_TOKEN_USDC = 0x46b2E96725F03873Cb586a7f84c22545F2835F31;


// -------------------------- Shadow
// address public constant SHADOW_NFT = 0x12E66C8F215DdD5d48d150c8f46aD0c6fB0F4406;
address public constant SHADOW_ROUTER = 0x1D368773735ee1E678950B7A97bcA2CafB330CDc;
Expand Down
2 changes: 2 additions & 0 deletions chains/sonic/SonicLib.sol
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ import {IPriceAggregator} from "../../src/interfaces/IPriceAggregator.sol";
import {EulerMerklFarmStrategy} from "../../src/strategies/EulerMerklFarmStrategy.sol";
import {SiloManagedMerklFarmStrategy} from "../../src/strategies/SiloManagedMerklFarmStrategy.sol";
import {SiloMerklFarmStrategy} from "../../src/strategies/SiloMerklFarmStrategy.sol";
import {AaveLeverageMerklFarmStrategy} from "../../src/strategies/AaveLeverageMerklFarmStrategy.sol";

/// @dev Sonic network [chainId: 146] data library
// _____ _
Expand Down Expand Up @@ -245,6 +246,7 @@ library SonicLib {
factory.setStrategyImplementation(StrategyIdLib.COMPOUND_V2, address(new CompoundV2Strategy()));
factory.setStrategyImplementation(StrategyIdLib.SILO_MANAGED_MERKL_FARM, address(new SiloManagedMerklFarmStrategy()));
factory.setStrategyImplementation(StrategyIdLib.SILO_MERKL_FARM, address(new SiloMerklFarmStrategy()));
factory.setStrategyImplementation(StrategyIdLib.AAVE_LEVERAGE_MERKL_FARM, address(new AaveLeverageMerklFarmStrategy()));
LogDeployLib.logDeployStrategies(platform, showLog);
//endregion

Expand Down
9 changes: 9 additions & 0 deletions guides/AllDeployments.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,15 @@
### Periphery

* **Frontend** `0x70e804364175e23F1c30dFa03BFb19d936E5E81c` [plasmascan](https://plasmascan.to/address/0x70e804364175e23F1c30dFa03BFb19d936E5E81c)
* **UpgradeHelper** `0x932D7bd758214fDF58f7824c09503D9FcD36C089` [plasmascan](https://plasmascan.to/address/0x932D7bd758214fDF58f7824c09503D9FcD36C089)

### AMM adapters
* **BalancerV3ReCLAMM** `0x54Ea393aAc117d67B913F1cC63Df143761519A63` [plasmascan](https://plasmascan.to/address/0x54Ea393aAc117d67B913F1cC63Df143761519A63)
* **BalancerV3Stable** `0xc73DBCFFADd43F87c0a37d39FA1460F5D80E3bca` [plasmascan](https://plasmascan.to/address/0xc73DBCFFADd43F87c0a37d39FA1460F5D80E3bca)
* **Curve** `0xF93Ee7e1B1C5679974a004ce59DBdECEcB45475e` [plasmascan](https://plasmascan.to/address/0xF93Ee7e1B1C5679974a004ce59DBdECEcB45475e)
* **ERC4626** `0x63f83f6807C77FA33ccA12D9422B912C78f6F8ed` [plasmascan](https://plasmascan.to/address/0x63f83f6807C77FA33ccA12D9422B912C78f6F8ed)
* **UniswapV3** `0xd901ceCbcD3493C98c9569ea7a41295a180333de` [plasmascan](https://plasmascan.to/address/0xd901ceCbcD3493C98c9569ea7a41295a180333de)
* **Solidly** `0x35CcD976BD574fEa00b97d58095bB8e90D26a455` [plasmascan](https://plasmascan.to/address/0x35CcD976BD574fEa00b97d58095bB8e90D26a455)


## Polygon [137]
Expand Down
22 changes: 22 additions & 0 deletions script/deploy-adapter/BalancerV3Stable.Plasma.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// 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 {BalancerV3StableAdapter} from "../../src/adapters/BalancerV3StableAdapter.sol";
import {PlasmaConstantsLib} from "../../chains/plasma/PlasmaConstantsLib.sol";

contract DeployBalancerV3StableAdapterPlasma is Script {
address public constant PLATFORM = PlasmaConstantsLib.PLATFORM;

function run() external {
uint deployerPrivateKey = vm.envUint("PRIVATE_KEY");
vm.startBroadcast(deployerPrivateKey);
Proxy proxy = new Proxy();
proxy.initProxy(address(new BalancerV3StableAdapter()));
BalancerV3StableAdapter(address(proxy)).init(PLATFORM);
vm.stopBroadcast();
}

function testDeployAdapter() external {}
}
22 changes: 22 additions & 0 deletions script/deploy-adapter/Curve.Plasma.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// 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 {CurveAdapter} from "../../src/adapters/CurveAdapter.sol";
import {PlasmaConstantsLib} from "../../chains/plasma/PlasmaConstantsLib.sol";

contract DeployCurveAdapterPlasma is Script {
address public constant PLATFORM = PlasmaConstantsLib.PLATFORM;

function run() external {
uint deployerPrivateKey = vm.envUint("PRIVATE_KEY");
vm.startBroadcast(deployerPrivateKey);
Proxy proxy = new Proxy();
proxy.initProxy(address(new CurveAdapter()));
CurveAdapter(address(proxy)).init(PLATFORM);
vm.stopBroadcast();
}

function testDeployAdapter() external {}
}
22 changes: 22 additions & 0 deletions script/deploy-adapter/ERC4626.Plasma.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// 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";
import {PlasmaConstantsLib} from "../../chains/plasma/PlasmaConstantsLib.sol";

contract DeployERC4626AdapterPlasma is Script {
address public constant PLATFORM = PlasmaConstantsLib.PLATFORM;

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 {}
}
20 changes: 20 additions & 0 deletions script/deploy-adapter/Solidly.Plasma.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// 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 {SolidlyAdapter} from "../../src/adapters/SolidlyAdapter.sol";
import {PlasmaConstantsLib} from "../../chains/plasma/PlasmaConstantsLib.sol";

contract DeploySolidlyAdapterSonic is Script {
function run() external {
uint deployerPrivateKey = vm.envUint("PRIVATE_KEY");
vm.startBroadcast(deployerPrivateKey);
Proxy proxy = new Proxy();
proxy.initProxy(address(new SolidlyAdapter()));
SolidlyAdapter(address(proxy)).init(PlasmaConstantsLib.PLATFORM);
vm.stopBroadcast();
}

function testDeployAdapter() external {}
}
24 changes: 24 additions & 0 deletions script/deploy-adapter/UniswapV3Adapter.Plasma.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// 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 {UniswapV3Adapter} from "../../src/adapters/UniswapV3Adapter.sol";
import {PlasmaConstantsLib} from "../../chains/plasma/PlasmaConstantsLib.sol";

contract DeployUniswapV3AdapterPlasma is Script {
address public constant PLATFORM = PlasmaConstantsLib.PLATFORM;

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

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

vm.stopBroadcast();
}

function testDeployAdapter() external {}
}
Loading
Loading