harb/onchain/src/IOptimizer.sol

33 lines
1.4 KiB
Solidity
Raw Normal View History

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.19;
/**
* @notice Dyadic rational input: mantissa × 2^(-shift).
* For shift == 0 (current usage via _toDyadic), value == mantissa.
*/
struct OptimizerInput {
int256 mantissa;
int256 shift;
}
/**
* @title IOptimizer
* @notice Minimal interface for the Optimizer contract consumed by LiquidityManager.
* Declaring the ABI here makes upgrade-compatibility explicit: any new
* Optimizer implementation must satisfy this selector or the LiquidityManager
* will fall back to bear-mode defaults via its try-catch.
*/
interface IOptimizer {
/**
* @notice Returns the four liquidity parameters used by LiquidityManager.recenter().
* @return capitalInefficiency Capital buffer level (0..1e18, clamped to MAX_PARAM_SCALE). CI=0 is safest.
* @return anchorShare Fraction of non-floor ETH in anchor (0..1e18, clamped to MAX_PARAM_SCALE).
* @return anchorWidth Anchor position width in tick units (uint24); max 100 ticks (MAX_ANCHOR_WIDTH), enforced by LiquidityManager.
* @return discoveryDepth Discovery liquidity density (0..1e18, clamped to MAX_PARAM_SCALE).
*/
function getLiquidityParams()
external
view
returns (uint256 capitalInefficiency, uint256 anchorShare, uint24 anchorWidth, uint256 discoveryDepth);
}