Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
cf1e4c6
Refactor OETHVaultCore and VaultCore to simplify asset handling and r…
clement-ux Dec 9, 2025
cdf5ee8
Add constructors to MockVault and MockVaultCoreInstantRebase for init…
clement-ux Dec 9, 2025
17ef9fb
Refactor OETHVaultCore and VaultCore to implement async withdrawal fu…
clement-ux Dec 9, 2025
7c38699
Refactor OETHVaultCore and VaultCore to remove unused functions and s…
clement-ux Dec 9, 2025
be6a697
Remove unused addWithdrawalQueueLiquidity function from OETHVaultCore…
clement-ux Dec 9, 2025
f49fa28
Refactor OETHVaultCore and VaultCore to remove unused imports and fun…
clement-ux Dec 9, 2025
9d58bde
Remove unused pricing functions and related imports in VaultCore to s…
clement-ux Dec 9, 2025
d480ca9
Update constructor parameter in OETHVaultCore to use _weth for clarity
clement-ux Dec 9, 2025
311fa8b
Add OUSDVaultCore contract and implement redeem functionality with ac…
clement-ux Dec 9, 2025
aedd14f
Refactor OETHVaultAdmin and VaultAdmin contracts to simplify code and…
clement-ux Dec 10, 2025
4a2a265
Refactor vault admin contracts to remove constructors and simplify in…
clement-ux Dec 10, 2025
87bf396
Refactor vault contracts to enforce backing asset restrictions and re…
clement-ux Dec 10, 2025
2c41717
Refactor VaultAdmin and VaultStorage contracts to simplify default st…
clement-ux Dec 10, 2025
f520e69
Refactor AbstractHarvester and related contracts to integrate oracle …
clement-ux Dec 10, 2025
3dd4788
Revert changes on Harvester
clement-ux Dec 10, 2025
16ab03b
remove old code
clement-ux Dec 11, 2025
3833da5
Refactor vault admin contracts to include backing asset address in co…
clement-ux Dec 12, 2025
0cd238a
Refactor OETH Vault tests to simplify strategy handling and improve e…
clement-ux Dec 12, 2025
2fce2d5
adjust decimal logic in VaultStorage
clement-ux Dec 12, 2025
0d931d4
wip fix test
clement-ux Dec 12, 2025
3d864d1
Refactor scaling logic in VaultCore to use scaleBy function for impro…
clement-ux Dec 15, 2025
b7b2445
Refactor Compound strategy tests to simplify logic and improve clarit…
clement-ux Dec 15, 2025
9705708
Refactor Vault tests to simplify logic by removing unused variables a…
clement-ux Dec 16, 2025
ceb6f82
Refactor Vault tests to simplify code by removing unused variables an…
clement-ux Dec 16, 2025
e2bb9e0
Refactor Vault redeem tests to simplify logic by removing unused vari…
clement-ux Dec 16, 2025
c7ce0f2
fix buyback fixture
clement-ux Dec 16, 2025
f9fbe28
Refactor Reborner contract and tests to use USDC instead of USDS, upd…
clement-ux Dec 16, 2025
377f32e
Refactor compoundingStakingSSVStrategyFixture to simplify default str…
clement-ux Dec 16, 2025
33c7e9a
Refactor Convex strategy tests to use USDC instead of USDS and simpli…
clement-ux Dec 16, 2025
e336f3e
Refactor MockVaultCoreInstantRebase constructor to accept backing ass…
clement-ux Dec 16, 2025
ac3684d
fix remaining unit test
clement-ux Dec 16, 2025
caf0e13
fix base setup
clement-ux Dec 17, 2025
fca7c79
fix sonic setup
clement-ux Dec 17, 2025
ba2591c
Add slither-disable comments for reentrancy checks in mint functions
clement-ux Dec 17, 2025
9a81eb3
Remove collateral swaps test file to streamline testing suite
clement-ux Dec 17, 2025
c5796c2
Add OUSDVaultAdmin contract and deployment script for OUSD Vault upgrade
clement-ux Dec 17, 2025
1db6636
fix vault fork test
clement-ux Dec 17, 2025
5c75d06
prettier
clement-ux Dec 17, 2025
d8ca994
fix more fork tests
clement-ux Dec 17, 2025
5c5af35
lint
clement-ux Dec 17, 2025
510b8ad
fix more tests
clement-ux Dec 17, 2025
d99f2e2
fix sonic fork test
clement-ux Dec 17, 2025
3560f0d
lint + prettier
clement-ux Dec 17, 2025
a6709b6
skip plume test
clement-ux Dec 17, 2025
8613c72
fix sonic fork test
clement-ux Dec 17, 2025
8f28790
fix sonic fork test
clement-ux Dec 17, 2025
2238a92
remove .only
clement-ux Dec 18, 2025
10e9644
remove old fix
clement-ux Dec 18, 2025
cd7b9bd
fix decimal conversion
clement-ux Dec 18, 2025
db1c4bf
refactor: change contracts to abstract for VaultAdmin, VaultCore, Vau…
clement-ux Dec 18, 2025
e4d7c73
fix test
clement-ux Dec 18, 2025
94b81f5
WIP add async withdraw test for OUSD
clement-ux Dec 18, 2025
e72adab
Add lot of test for async withdraw
clement-ux Dec 19, 2025
38a00fa
adjust comment
clement-ux Dec 19, 2025
b61e10e
refactor: remove setDripper function from IVault interface
clement-ux Jan 2, 2026
09131ae
fix: update redeem function to use correct amount parameter
clement-ux Jan 2, 2026
39bbbfb
feat: add deprecated weth asset index to OETHVaultCore contract
clement-ux Jan 2, 2026
1b40aca
Merge branch 'master' into clement/simplify-ousd
clement-ux Jan 2, 2026
ebe97cd
increase ousd vault upgrade number
clement-ux Jan 2, 2026
94d39ed
fix: add slither disable comment for constable-states in OETHVaultCor…
clement-ux Jan 2, 2026
780d20b
fix: correct drip duration initialization in VaultInitializer contract
clement-ux Jan 7, 2026
48c661d
feat: deprecate calculateRedeemOutputs and introduce calculateRedeemO…
clement-ux Jan 7, 2026
c21040a
refactor: rename backingAsset to asset across contracts for consistency
clement-ux Jan 7, 2026
0c4325a
refactor: change visibility of deprecated asset-related mappings to p…
clement-ux Jan 7, 2026
746f517
fix: improve error message for unsupported asset decimals in VaultSto…
clement-ux Jan 7, 2026
a3da207
fix: update error message for unsupported asset in minting process
clement-ux Jan 7, 2026
d792893
refactor: update comments to clarify AMO strategy references in mint …
clement-ux Jan 7, 2026
5de1870
refactor: standardize terminology by replacing 'backing asset' with '…
clement-ux Jan 7, 2026
ac929c6
refactor: simplify redeem output calculation by removing deprecated f…
clement-ux Jan 7, 2026
b7e25e2
refactor: streamline redeem output calculation by consolidating retur…
clement-ux Jan 7, 2026
0db0931
refactor: improve clarity in comments regarding AMO strategy in mint …
clement-ux Jan 7, 2026
d6e5f7d
refactor: mark isSupportedAsset function as deprecated
clement-ux Jan 7, 2026
e0bfdbc
[Vault] Simplify `mint()` (#2735)
clement-ux Jan 7, 2026
cf0d427
Merge branch 'master' into clement/simplify-ousd
clement-ux Jan 7, 2026
d936abd
Merge branch 'master' into clement/simplify-ousd
clement-ux Jan 7, 2026
5bf6ee7
Clement/simplify ousd get rid of old stuff (#2736)
clement-ux Jan 7, 2026
6258a96
[Vault] Remove `redeem()` and simplify inheritance. (#2737)
clement-ux Jan 8, 2026
7a6b95d
Merge remote-tracking branch 'origin/master' into clement/simplify-ousd
naddison36 Jan 8, 2026
198b7f5
Removed Beacon consolidation fork tests
naddison36 Jan 8, 2026
0bdbc08
Add OETH vault upgrade deployment script with governance proposal
clement-ux Jan 8, 2026
115655b
Remove deprecated redeem tests from OETH vault and bridge helper test…
clement-ux Jan 8, 2026
f9a9420
lint
clement-ux Jan 8, 2026
8211332
Add vault upgrade deployment script and skip deprecated tests in brid…
clement-ux Jan 8, 2026
60a2127
prettier
clement-ux Jan 8, 2026
536b0ac
Add deployment script for OSonic vault upgrade with governance actions
clement-ux Jan 8, 2026
8b073b8
Refactor OETH and OSonic VaultAdmin contracts to inherit from VaultAdmin
clement-ux Jan 9, 2026
e9ee43c
New gov prop of deploy script 163
naddison36 Jan 12, 2026
777b43b
Merge remote-tracking branch 'origin/master' into nicka/deploy-163-re…
naddison36 Jan 12, 2026
a9f3295
Simplify withdrawal amount calculations in VaultCore contract
clement-ux Jan 12, 2026
a306e08
Merge branch 'master' into clement/simplify-ousd
clement-ux Jan 12, 2026
8d40e03
fix bug
clement-ux Jan 12, 2026
15b5534
Merge remote-tracking branch 'origin/master' into nicka/deploy-163-re…
naddison36 Jan 12, 2026
e05bb2a
[Vault] Merge VaultAdmin and VaultCore (#2743)
clement-ux Jan 12, 2026
71f9057
Removed commented out IOracle lines from Harvester
naddison36 Jan 13, 2026
33a0b74
Merge remote-tracking branch 'origin/nicka/deploy-163-redeem-fee' int…
naddison36 Jan 13, 2026
81f1ed2
Changed the OUSD default strategy to the Morpho OUSD v2 strategy
naddison36 Jan 13, 2026
29639b3
Rename OSonicVault to OSVault in deployment script
clement-ux Jan 13, 2026
0f4e29c
Merge remote-tracking branch 'origin/master' into clement/simplify-ousd
naddison36 Jan 13, 2026
d4a64ac
Refactor rebase and withdrawal queue liquidity calls in VaultAdmin co…
clement-ux Jan 13, 2026
bedc291
Add slither disable comments for reentrancy checks in VaultAdmin cont…
clement-ux Jan 13, 2026
7614984
Removed dependency on OracleRouter from the OUSD and SuperOETH Vaults
naddison36 Jan 14, 2026
42bca4a
Merge remote-tracking branch 'origin/master' into clement/simplify-ousd
naddison36 Jan 14, 2026
b616bf4
Bumped the deploy script numbers
naddison36 Jan 14, 2026
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
5 changes: 2 additions & 3 deletions contracts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,10 @@ You can enable the "hot deploy" mode when doing fork testing development. The mo
To enable Hot Deploys set the HOT_DEPLOY variable in the contracts/.env file. Enable various modes using comma separated flags to direct which contracts need source updated (in the node runtime):

- strategy -> strategy contract associated to fixture
- vaultCore -> vaultCore or oethVaultCore depending on the nature of the fixture
- vaultAdmin -> vaultAdmin or oethVaultAdmin depending on the nature of the fixture
- vault -> OUSDVault or OETHVault depending on the nature of the fixture
- harvester -> harvester or oethHarvester (not yet supported)

example: HOT_DEPLOY=strategy,vaultCore,vaultAdmin,harvester
example: HOT_DEPLOY=strategy,vault,harvester

#### Supporting new fixtures / contracts

Expand Down
6 changes: 3 additions & 3 deletions contracts/contracts/harvest/AbstractHarvester.sol
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,6 @@ abstract contract AbstractHarvester is Governable {

// Revert if feed does not exist
// slither-disable-next-line unused-return
IOracle(IVault(vaultAddress).priceProvider()).price(_tokenAddress);

IERC20 token = IERC20(_tokenAddress);
// if changing token swap provider cancel existing allowance
Expand Down Expand Up @@ -443,10 +442,11 @@ abstract contract AbstractHarvester is Governable {
_harvest(_strategyAddr);
IStrategy strategy = IStrategy(_strategyAddr);
address[] memory rewardTokens = strategy.getRewardTokenAddresses();
IOracle priceProvider = IOracle(IVault(vaultAddress).priceProvider());
uint256 len = rewardTokens.length;
for (uint256 i = 0; i < len; ++i) {
_swap(rewardTokens[i], _rewardTo, priceProvider);
// This harvester contract is not used anymore. Keeping the code
// for passing test deployment. Safe to use address(0x1) as oracle.
_swap(rewardTokens[i], _rewardTo, IOracle(address(0x1)));
}
}

Expand Down
99 changes: 16 additions & 83 deletions contracts/contracts/interfaces/IVault.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,39 +6,28 @@ import { VaultStorage } from "../vault/VaultStorage.sol";
interface IVault {
// slither-disable-start constable-states

event AssetSupported(address _asset);
event AssetDefaultStrategyUpdated(address _asset, address _strategy);
event AssetAllocated(address _asset, address _strategy, uint256 _amount);
event StrategyApproved(address _addr);
event StrategyRemoved(address _addr);
event Mint(address _addr, uint256 _value);
event Redeem(address _addr, uint256 _value);
event CapitalPaused();
event CapitalUnpaused();
event DefaultStrategyUpdated(address _strategy);
event RebasePaused();
event RebaseUnpaused();
event VaultBufferUpdated(uint256 _vaultBuffer);
event RedeemFeeUpdated(uint256 _redeemFeeBps);
event PriceProviderUpdated(address _priceProvider);
event AllocateThresholdUpdated(uint256 _threshold);
event RebaseThresholdUpdated(uint256 _threshold);
event StrategistUpdated(address _address);
event MaxSupplyDiffChanged(uint256 maxSupplyDiff);
event YieldDistribution(address _to, uint256 _yield, uint256 _fee);
event TrusteeFeeBpsChanged(uint256 _basis);
event TrusteeAddressChanged(address _address);
event SwapperChanged(address _address);
event SwapAllowedUndervalueChanged(uint256 _basis);
event SwapSlippageChanged(address _asset, uint256 _basis);
event Swapped(
address indexed _fromAsset,
address indexed _toAsset,
uint256 _fromAssetAmount,
uint256 _toAssetAmount
);
event StrategyAddedToMintWhitelist(address indexed strategy);
event StrategyRemovedFromMintWhitelist(address indexed strategy);
event DripperChanged(address indexed _dripper);
event RebasePerSecondMaxChanged(uint256 rebaseRatePerSecond);
event DripDurationChanged(uint256 dripDuration);
event WithdrawalRequested(
address indexed _withdrawer,
uint256 indexed _requestId,
Expand All @@ -51,6 +40,7 @@ interface IVault {
uint256 _amount
);
event WithdrawalClaimable(uint256 _claimable, uint256 _newClaimable);
event WithdrawalClaimDelayUpdated(uint256 _newDelay);

// Governable.sol
function transferGovernance(address _newGovernor) external;
Expand All @@ -59,17 +49,7 @@ interface IVault {

function governor() external view returns (address);

function ADMIN_IMPLEMENTATION() external view returns (address);

// VaultAdmin.sol
function setPriceProvider(address _priceProvider) external;

function priceProvider() external view returns (address);

function setRedeemFeeBps(uint256 _redeemFeeBps) external;

function redeemFeeBps() external view returns (uint256);

function setVaultBuffer(uint256 _vaultBuffer) external;

function vaultBuffer() external view returns (uint256);
Expand Down Expand Up @@ -98,28 +78,13 @@ interface IVault {

function trusteeFeeBps() external view returns (uint256);

function ousdMetaStrategy() external view returns (address);

function setSwapper(address _swapperAddr) external;

function setSwapAllowedUndervalue(uint16 _percentageBps) external;

function setOracleSlippage(address _asset, uint16 _allowedOracleSlippageBps)
external;

function supportAsset(address _asset, uint8 _unitConversion) external;

function approveStrategy(address _addr) external;

function removeStrategy(address _addr) external;

function setAssetDefaultStrategy(address _asset, address _strategy)
external;
function setDefaultStrategy(address _strategy) external;

function assetDefaultStrategies(address _asset)
external
view
returns (address);
function defaultStrategy() external view returns (address);

function pauseRebase() external;

Expand All @@ -135,10 +100,6 @@ interface IVault {

function transferToken(address _asset, uint256 _amount) external;

function priceUnitMint(address asset) external view returns (uint256);

function priceUnitRedeem(address asset) external view returns (uint256);

function withdrawAllFromStrategy(address _strategyAddr) external;

function withdrawAllFromStrategies() external;
Expand Down Expand Up @@ -172,67 +133,38 @@ interface IVault {

function rebase() external;

function swapCollateral(
address fromAsset,
address toAsset,
uint256 fromAssetAmount,
uint256 minToAssetAmount,
bytes calldata data
) external returns (uint256 toAssetAmount);

function totalValue() external view returns (uint256 value);

function checkBalance(address _asset) external view returns (uint256);

/// @notice Deprecated: use calculateRedeemOutput
function calculateRedeemOutputs(uint256 _amount)
external
view
returns (uint256[] memory);

function getAssetCount() external view returns (uint256);

function getAssetConfig(address _asset)
function calculateRedeemOutput(uint256 _amount)
external
view
returns (VaultStorage.Asset memory config);
returns (uint256);

function getAssetCount() external view returns (uint256);

function getAllAssets() external view returns (address[] memory);

function getStrategyCount() external view returns (uint256);

function swapper() external view returns (address);

function allowedSwapUndervalue() external view returns (uint256);

function getAllStrategies() external view returns (address[] memory);

/// @notice Deprecated.
function isSupportedAsset(address _asset) external view returns (bool);

function netOusdMintForStrategyThreshold() external view returns (uint256);

function setOusdMetaStrategy(address _ousdMetaStrategy) external;

function setNetOusdMintForStrategyThreshold(uint256 _threshold) external;

function netOusdMintedForStrategy() external view returns (int256);

function setDripper(address _dripper) external;

function dripper() external view returns (address);

function weth() external view returns (address);

function cacheWETHAssetIndex() external;

function wethAssetIndex() external view returns (uint256);
function asset() external view returns (address);

function initialize(address, address) external;
function initialize(address) external;

function setAdminImpl(address) external;

function removeAsset(address _asset) external;

// These are OETH specific functions
function addWithdrawalQueueLiquidity() external;

function requestWithdrawal(uint256 _amount)
Expand All @@ -257,7 +189,6 @@ interface IVault {
view
returns (VaultStorage.WithdrawalRequest memory);

// OETHb specific functions
function addStrategyToMintWhitelist(address strategyAddr) external;

function removeStrategyFromMintWhitelist(address strategyAddr) external;
Expand Down Expand Up @@ -285,5 +216,7 @@ interface IVault {

function previewYield() external view returns (uint256 yield);

function weth() external view returns (address);

// slither-disable-end constable-states
}
5 changes: 1 addition & 4 deletions contracts/contracts/mocks/MockEvilReentrantContract.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ contract MockEvilReentrantContract {
IVault public immutable oethVault;
address public immutable poolAddress;
bytes32 public immutable balancerPoolId;
address public immutable priceProvider;

constructor(
address _balancerVault,
Expand All @@ -37,7 +38,6 @@ contract MockEvilReentrantContract {
}

function doEvilStuff() public {
address priceProvider = oethVault.priceProvider();
uint256 rethPrice = IOracle(priceProvider).price(address(reth));

// 1. Join pool
Expand Down Expand Up @@ -99,9 +99,6 @@ contract MockEvilReentrantContract {
virtual
returns (uint256 bptExpected)
{
// Get the oracle from the OETH Vault
address priceProvider = oethVault.priceProvider();

for (uint256 i = 0; i < _assets.length; ++i) {
uint256 strategyAssetMarketPrice = IOracle(priceProvider).price(
_assets[i]
Expand Down
2 changes: 1 addition & 1 deletion contracts/contracts/mocks/MockNonRebasing.sol
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ contract MockNonRebasing {
}

function redeemOusd(address _vaultContract, uint256 _amount) public {
IVault(_vaultContract).redeem(_amount, 0);
IVault(_vaultContract).requestWithdrawal(_amount);
}

function approveFor(
Expand Down
15 changes: 4 additions & 11 deletions contracts/contracts/mocks/MockOETHVault.sol
Original file line number Diff line number Diff line change
@@ -1,25 +1,18 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import { OETHVaultCore } from "../vault/OETHVaultCore.sol";
import { OETHVault } from "../vault/OETHVault.sol";
import { StableMath } from "../utils/StableMath.sol";
import "../utils/Helpers.sol";

contract MockOETHVault is OETHVaultCore {
contract MockOETHVault is OETHVault {
using StableMath for uint256;

constructor(address _weth) OETHVaultCore(_weth) {
constructor(address _weth) OETHVault(_weth) {
_setGovernor(msg.sender);
}

function supportAsset(address asset) external {
assets[asset] = Asset({
isSupported: true,
unitConversion: UnitConversion(0),
decimals: 18,
allowedOracleSlippageBps: 0
});

allAssets.push(asset);
require(asset == asset, "Only asset supported");
}
}
8 changes: 4 additions & 4 deletions contracts/contracts/mocks/MockOETHVaultAdmin.sol
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import { OETHVaultAdmin } from "../vault/OETHVaultAdmin.sol";
import { OETHVault } from "../vault/OETHVault.sol";

contract MockOETHVaultAdmin is OETHVaultAdmin {
constructor(address _weth) OETHVaultAdmin(_weth) {}
contract MockOETHVault is OETHVault {
constructor(address _weth) OETHVault(_weth) {}

// fetches the WETH amount in outstanding withdrawals
function outstandingWithdrawalsAmount()
Expand All @@ -19,6 +19,6 @@ contract MockOETHVaultAdmin is OETHVaultAdmin {
}

function wethAvailable() external view returns (uint256) {
return _wethAvailable();
return _assetAvailable();
}
}
4 changes: 2 additions & 2 deletions contracts/contracts/mocks/MockRebornMinter.sol
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,8 @@ contract Reborner {
log("We are attempting to mint..");
address asset = sanctum.asset();
address vault = sanctum.vault();
IERC20(asset).approve(vault, 1e18);
IVault(vault).mint(asset, 1e18, 0);
IERC20(asset).approve(vault, 1e6);
IVault(vault).mint(asset, 1e6, 0);
log("We are now minting..");
}

Expand Down
13 changes: 5 additions & 8 deletions contracts/contracts/mocks/MockVault.sol
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import { VaultCore } from "../vault/VaultCore.sol";
import { VaultAdmin } from "../vault/VaultAdmin.sol";
import { StableMath } from "../utils/StableMath.sol";
import { VaultInitializer } from "../vault/VaultInitializer.sol";
import "../utils/Helpers.sol";

contract MockVault is VaultCore {
contract MockVault is VaultAdmin {
using StableMath for uint256;

uint256 storedTotalValue;

constructor(address _asset) VaultAdmin(_asset) {}

function setTotalValue(uint256 _value) public {
storedTotalValue = _value;
}
Expand All @@ -31,15 +32,11 @@ contract MockVault is VaultCore {
{
// Avoids rounding errors by returning the total value
// in a single currency
if (allAssets[0] == _asset) {
if (asset == _asset) {
uint256 decimals = Helpers.getDecimals(_asset);
return storedTotalValue.scaleBy(decimals, 18);
} else {
return 0;
}
}

function setMaxSupplyDiff(uint256 _maxSupplyDiff) external onlyGovernor {
maxSupplyDiff = _maxSupplyDiff;
}
}
2 changes: 2 additions & 0 deletions contracts/contracts/mocks/MockVaultCoreInstantRebase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ pragma solidity ^0.8.0;
import { VaultCore } from "../vault/VaultCore.sol";

contract MockVaultCoreInstantRebase is VaultCore {
constructor(address _asset) VaultCore(_asset) {}

function _nextYield(uint256 supply, uint256 vaultValue)
internal
view
Expand Down
Loading
Loading