Saltar al contenido principal

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ámetroDescripción
nftPositionManagerPosition Manager del NFT de origen (BDEX); debe estar permitido por el Locker.
nft_idID del NFT que se convertirá y bloqueará.
dustRecipientRecibe token0/token1 no utilizados y el cobro inicial realizado durante el bloqueo.
ownerPropietario del nuevo bloqueo.
additionalCollectorDirección opcional autorizada para cobrar comisiones.
collectAddressDestinatario del cobro automático; no puede ser la dirección cero.
unlockDateTiempo de desbloqueo futuro en segundos; use ETERNAL_LOCK para un bloqueo permanente.
countryCodeCódigo de país o región admitido por el Locker.
feeNameNombre de la opción de comisión; el valor predeterminado es DEFAULT.
rPará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ámetroDescripción
amount0LiquidityMinCantidad mínima de token0 usada al acuñar el NFT de rango completo. Debe ser mayor que 0 al convertir un rango estrecho.
amount1LiquidityMinCantidad mínima de token1 usada al acuñar el NFT de rango completo. Debe ser mayor que 0 al convertir un rango estrecho.
amount0RefundMinReembolso mínimo de token0 a dustRecipient; normalmente 0.
amount1RefundMinReembolso 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

ValorDescripción
newLockIdID del nuevo bloqueo en el Locker.
amountLiquidity0Cantidad real de token0 usada en la nueva liquidez de rango completo.
amountLiquidity1Cantidad real de token1 usada en la nueva liquidez de rango completo.
refund0Cantidad de token0 reembolsada a dustRecipient.
refund1Cantidad 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 devueltoDescripción
nftPositionManagerPosition Manager al que pertenece el NFT.
nftIdID del NFT que se consultará.
isFullRangeIndica si el NFT ya representa una posición de rango completo.
maxTickTick 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 devueltoDescripción
tickSpacingEspaciado de ticks del nivel de comisión del pool.
maxTickTick máximo utilizable para ese espaciado.