Conversor de rango
FullRangeConvertorV2
FullRangeConvertorV2 convierte una posición V3 de rango estrecho en una posición de rango completo y bloquea la nueva posición en BDexV3LiquidityLocker dentro de la misma transacción.
convertToFullRangeAndLock
function convertToFullRangeAndLock(
LockParams lockParams,
SlippageChecks slippageParams
) external payable returns (
uint256 newLockId,
uint256 amountLiquidity0,
uint256 amountLiquidity1,
uint256 refund0,
uint256 refund1
);
Antes de llamar, el propietario del NFT debe aprobar lockParams.nft_id a favor de FullRangeConvertorV2.
lockParams
struct LockParams {
INonfungiblePositionManager nftPositionManager;
uint256 nft_id;
address dustRecipient;
address owner;
address additionalCollector;
address collectAddress;
uint256 unlockDate;
uint16 countryCode;
string feeName;
bytes[] r;
}
| Parámetro | Descripción |
|---|---|
nftPositionManager | Position Manager del NFT de origen (BDEX); debe estar permitido por el Locker. |
nft_id | ID del NFT que se convertirá y bloqueará. |
dustRecipient | Recibe token0/token1 no utilizados y el cobro inicial realizado durante el bloqueo. |
owner | Propietario del nuevo bloqueo. |
additionalCollector | Dirección opcional autorizada para cobrar comisiones. |
collectAddress | Destinatario del cobro automático; no puede ser la dirección cero. |
unlockDate | Tiempo de desbloqueo futuro en segundos; use ETERNAL_LOCK para un bloqueo permanente. |
countryCode | Código de país o región admitido por el Locker. |
feeName | Nombre de la opción de comisión; el valor predeterminado es DEFAULT. |
r | Parámetros de firma para comisiones dinámicas; use un array vacío [] cuando no se utilicen. |
slippageParams
struct SlippageChecks {
uint256 amount0LiquidityMin;
uint256 amount1LiquidityMin;
uint256 amount0RefundMin;
uint256 amount1RefundMin;
}
| Parámetro | Descripción |
|---|---|
amount0LiquidityMin | Cantidad mínima de token0 usada al acuñar el NFT de rango completo. Debe ser mayor que 0 al convertir un rango estrecho. |
amount1LiquidityMin | Cantidad mínima de token1 usada al acuñar el NFT de rango completo. Debe ser mayor que 0 al convertir un rango estrecho. |
amount0RefundMin | Reembolso mínimo de token0 a dustRecipient; normalmente 0. |
amount1RefundMin | Reembolso mínimo de token1 a dustRecipient; normalmente 0. |
amount0RefundMin y amount1RefundMin son reembolsos mínimos. No representan el slippage máximo ni la pérdida máxima.
msg.value
Cuando la comisión fija seleccionada por feeName usa el token nativo, msg.value debe coincidir exactamente con su flatFee.
El Converter actual no puede pagar una comisión fija ERC20. No use una opción donde flatFeeToken != address(0) y flatFee > 0.
Valores devueltos
| Valor | Descripción |
|---|---|
newLockId | ID del nuevo bloqueo en el Locker. |
amountLiquidity0 | Cantidad real de token0 usada en la nueva liquidez de rango completo. |
amountLiquidity1 | Cantidad real de token1 usada en la nueva liquidez de rango completo. |
refund0 | Cantidad de token0 reembolsada a dustRecipient. |
refund1 | Cantidad de token1 reembolsada a dustRecipient. |
Si el NFT de origen ya es de rango completo, el contrato omite la nueva acuñación y lo bloquea directamente. En ese caso, las cantidades de liquidez y reembolso devuelven 0.
getRangeAndMaxTick
function getRangeAndMaxTick(
INonfungiblePositionManager nftPositionManager,
uint256 nftId
) external view returns (
bool isFullRange,
int24 maxTick
);
| Parámetro o valor devuelto | Descripción |
|---|---|
nftPositionManager | Position Manager al que pertenece el NFT. |
nftId | ID del NFT que se consultará. |
isFullRange | Indica si el NFT ya representa una posición de rango completo. |
maxTick | Tick máximo utilizable para el nivel de comisión actual. El rango completo es [-maxTick, maxTick]. |
tickSpacingToMaxTick
function tickSpacingToMaxTick(
int24 tickSpacing
) external pure returns (int24 maxTick);
| Parámetro o valor devuelto | Descripción |
|---|---|
tickSpacing | Espaciado de ticks del nivel de comisión del pool. |
maxTick | Tick máximo utilizable para ese espaciado. |