Short Pool Integration
1. Contract Interface
interface IShortPoolManager {
/**
* @notice Rebalance positions in a specific tick
* @param pool The address of short pool
* @param receiver The address to receive fxUSD
* @param tick The tick to rebalance
* @param maxRawDebts Maximum raw debt tokens to use
*/
function rebalance(
address pool,
address receiver,
int16 tick,
uint256 maxRawDebts
) external returns (uint256 colls, uint256 debts);
/**
* @notice Rebalance entire pool
* @param pool The address of short pool
* @param receiver The address to receive fxUSD
* @param maxRawDebts Maximum raw debt tokens to use
*/
function rebalance(
address pool,
address receiver,
uint256 maxRawDebts
) external returns (uint256 colls, uint256 debts);
/**
* @notice Liquidate high-risk short positions
* @param pool The address of short pool
* @param receiver The address to receive fxUSD
* @param maxRawDebts Maximum raw debt tokens to use
*/
function liquidate(
address pool,
address receiver,
uint256 maxRawDebts
) external returns (uint256 colls, uint256 debts);
}
2. Short Pool Specifics
Key Differences from Long Pool:
Collateral: fxUSD tokens
Debt: External tokens (ETH, BTC, etc.)
Rebalance Example:
// Get debt token for the short pool
address debtToken = IShortPool(shortPoolAddress).debtToken();
// Approve debt tokens for rebalancing
IERC20(debtToken).approve(shortPoolManager, maxDebtAmount);
// Execute rebalance
(uint256 fxUSDReceived, uint256 debtUsed) =
IShortPoolManager(shortPoolManager).rebalance(
shortPoolAddress, // target short pool
msg.sender, // receive fxUSD
maxDebtAmount // max debt tokens to use
);
Last updated