Long Pool Integration
1. Rebalance Operations
function _beforeRebalanceOrLiquidate(
address tokenIn,
uint256 maxAmount
) internal view returns (RebalanceMemoryVar memory op) {
op.stablePrice = getStableTokenPriceWithScale();
op.totalYieldToken = totalYieldToken;
op.totalStableToken = totalStableToken;
uint256 amountYieldToken = op.totalYieldToken;
uint256 amountStableToken;
if (tokenIn == yieldToken) {
// User pays fxUSD - direct usage
// ... fxUSD handling logic
} else {
// User pays USDC - convert to USD equivalent
uint256 maxAmountInUSD = (maxAmount * op.stablePrice) / PRECISION;
if (maxAmountInUSD < amountYieldToken) {
amountYieldToken = maxAmountInUSD;
} else {
amountStableToken = ((maxAmountInUSD - amountYieldToken) * PRECISION) / op.stablePrice;
}
}
// Ensure we don't exceed available stable tokens
if (amountStableToken > op.totalStableToken) {
amountStableToken = op.totalStableToken;
}
op.yieldTokenToUse = amountYieldToken;
op.stableTokenToUse = amountStableToken;
}1.1 Pool-Wide Rebalance
1.2 Tick-Specific Rebalance
2. Liquidation Operations
3. CreditNote Received
Last updated