Setting the position
A position on mangrove is described by the minimum tick (tickIndex0, on the BASE/QUOTE list), the difference between two ticks (tickOffset), and the number of offers.
A fourth parameter is computed automatically thanks to the oracle. It is the offer at which we stop posting bids, and post asks instead (firstAskIndex).
Other parameters are characteristics of mangrove can be kept to their default value:
the gasprice (default: 0, defaults to mangrove gasprice)
the gasreq (default depends on the used Kandel Seeder)
the step size (defaults to 1)
Finally, we also have to choose a state for the funds to be in:
Active: funds are deposited on the kandel and offer are posted (if possible)
Passive: funds are deposited on the kandel with no offers
Vault: funds are not in the kandel
A known UX quirk is that AAVE vaults should always be set to passive on initial mint, otherwise minting will revert.
A position can be set via this function:
struct KandelPosition {
Tick tickIndex0;
uint256 tickOffset;
Params params;
FundsState fundsState;
}
function setPosition(KandelPosition memory position) external onlyOwnerOrManager {
Or right after rebalancing in this function:
function swapAndSetPosition(
address target,
bytes calldata data,
uint256 amountOut,
uint256 amountInMin,
bool sell,
KandelPosition memory position
) external onlyOwnerOrManager nonReentrant returns (int256 netBaseChange, int256 netQuoteChange) {
Last updated