MathUtil.alphDiv) : les résultats correspondent aux contrats à l’unité près.
ClmmLiquidityUtils
Conventions :sqrtRatioX96 est le prix actuel. sqrtRatioAX96 et sqrtRatioBX96 sont les bornes de la plage (getSqrtRatioAtTick(tickLower/Upper)). Les montants suivent l’ordre trié token0/token1.
getLiquidityFromAmounts(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, amount0, amount1)
La liquidité maximale mintable avec les montants donnés :
- prix égal ou inférieur à la borne basse → seul
amount0compte - prix dans la plage →
min(L issue de amount0, L issue de amount1) - prix au-dessus de la plage → seul
amount1compte
getAmountsForLiquidity(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, liquidity)
[amount0, amount1] pour une variation de liquidité signée. Convention des contrats : passez -liquidity pour obtenir les montants (négatifs) nécessaires pour ajouter de la liquidité, et +liquidity pour les montants reçus lors d’un retrait.
getAmountsAndLiquidityAtSqrtPrice(sqrtRatioX96, sqrtRatioAX96, sqrtRatioBX96, amount0, amount1)
Renvoie [amount0Used, amount1Used, liquidity] : les montants équilibrés réellement déposés pour les amount0 et amount1 souhaités. C’est l’appel habituel pour un aperçu « vous allez déposer ».
getAmountsAndLiquidityAtPrice(price, token0, token1, lowerTick, upperTick, amount0, amount1)
Identique, avec un prix lisible et des TokenInfo.
getPositionAmountsFromPrice(props)
Variante orientée interface qui raisonne en base/cotation et accepte les ticks dans n’importe quel ordre :
0n. Pour dimensionner une position à partir d’un seul côté, passez UNLIMITED_AMOUNT (2^128 − 1) pour l’autre.
Bas niveau
PoolUtils
getPositionId(poolAddress, owner, tickLower, tickUpper)
Dérive l’identifiant du contrat de position à partir de l’adresse du pool. Contrairement à clmm.getPositionId, il normalise pour vous les adresses owner sans groupe.
offlineSwap
clmm.simulateSwap, et renvoie le montant de l’autre côté sous forme de valeur signée :
- entrée exacte (
amountSpecified > 0) : renvoie la sortie sous forme de nombre négatif (vous recevez-offlineSwap(...)) - sortie exacte (
amountSpecified < 0) : renvoie l’entrée nécessaire (prenez la valeur absolue)
simulateSwap on-chain.
computeSwapStep(sqrtPriceX96, sqrtPriceTargetX96, liquidity, amount, feePips)
Une étape de swap dans une plage de liquidité. Renvoie [sqrtPriceNextX96, amountIn, amountOut, feeAmount]. offlineSwap l’appelle une fois par ligne.