レンジコンバーター
FullRangeConvertorV2
FullRangeConvertorV2 は V3 の狭いレンジポジションをフルレンジへ変換し、同一トランザクション内で新しいポジションを BDexV3LiquidityLocker にロックします。
convertToFullRangeAndLock
function convertToFullRangeAndLock(
LockParams lockParams,
SlippageChecks slippageParams
) external payable returns (
uint256 newLockId,
uint256 amountLiquidity0,
uint256 amountLiquidity1,
uint256 refund0,
uint256 refund1
);
呼び出し前に、NFT Owner は lockParams.nft_id を 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;
}
| パラメーター | 説明 |
|---|---|
nftPositionManager | 元ポジション NFT の Position Manager(BDEX)。Locker の許可リスト登録が必要です。 |
nft_id | 変換してロックする NFT ID。 |
dustRecipient | 新しい流動性に使われなかった token0/token1 と、ロック時の初回回収分を受け取るアドレス。 |
owner | 新しいロックの Owner。 |
additionalCollector | 追加で手数料回収を実行できる任意アドレス。 |
collectAddress | 自動手数料回収の受取先。ゼロアドレスは使用できません。 |
unlockDate | 秒単位の将来の解除時刻。永久ロックには ETERNAL_LOCK を使用します。 |
countryCode | Locker が対応する国・地域コード。 |
feeName | Locker の手数料オプション名。既定値は DEFAULT です。 |
r | 動的手数料の署名パラメーター。使用しない場合は空配列 [] を渡します。 |
slippageParams
struct SlippageChecks {
uint256 amount0LiquidityMin;
uint256 amount1LiquidityMin;
uint256 amount0RefundMin;
uint256 amount1RefundMin;
}
| パラメーター | 説明 |
|---|---|
amount0LiquidityMin | フルレンジ NFT の発行に使う token0 の最小量。狭いレンジからの変換では 0 より大きい値が必要です。 |
amount1LiquidityMin | フルレンジ NFT の発行に使う token1 の最小量。狭いレンジからの変換では 0 より大きい値が必要です。 |
amount0RefundMin | 変換後に dustRecipient へ返す token0 の最小量。通常は 0。 |
amount1RefundMin | 変換後に dustRecipient へ返す token1 の最小量。通常は 0。 |
amount0RefundMin と amount1RefundMin は最小返金量です。最大スリッページや最大損失を表す値ではありません。
msg.value
feeName が選択する固定手数料をネイティブトークンで支払う場合、msg.value はその flatFee と完全に一致する必要があります。
現在の Converter は ERC20 固定手数料に対応していません。flatFeeToken != address(0) かつ flatFee > 0 のオプションは使用できません。
戻り値
| 戻り値 | 説明 |
|---|---|
newLockId | 新しく作成された Locker の Lock ID。 |
amountLiquidity0 | 新しいフルレンジ流動性に実際に使われた token0 の量。 |
amountLiquidity1 | 新しいフルレンジ流動性に実際に使われた token1 の量。 |
refund0 | dustRecipient に返金された token0 の量。 |
refund1 | dustRecipient に返金された token1 の量。 |
元 NFT がすでにフルレンジの場合、再発行を省略して直接ロックします。この場合、流動性量と返金量はすべて 0 を返します。
getRangeAndMaxTick
function getRangeAndMaxTick(
INonfungiblePositionManager nftPositionManager,
uint256 nftId
) external view returns (
bool isFullRange,
int24 maxTick
);
| パラメーターまたは戻り値 | 説明 |
|---|---|
nftPositionManager | NFT が属する Position Manager。 |
nftId | 照会する NFT ID。 |
isFullRange | NFT がすでにフルレンジポジションかどうか。 |
maxTick | 現在の手数料ティアで使用できる最大 Tick。フルレンジは [-maxTick, maxTick] です。 |
tickSpacingToMaxTick
function tickSpacingToMaxTick(
int24 tickSpacing
) external pure returns (int24 maxTick);
| パラメーターまたは戻り値 | 説明 |
|---|---|
tickSpacing | Pool の手数料ティアに対応する Tick 間隔。 |
maxTick | その Tick 間隔で使用できる最大 Tick。 |