NonfungiblePositionManager
The NonfungiblePositionManager wraps VinuSwap liquidity positions as ERC721 NFTs for easier management.
Source: contracts/periphery/NonfungiblePositionManager.sol
The position manager:
Mints ERC721 tokens representing liquidity positions
Tracks position ownership, fees, and liquidity
Provides functions to modify positions
Supports position locking (VinuSwap extension)
NonfungiblePositionManager
├── INonfungiblePositionManager
├── Multicall
├── ERC721Permit
├── PeripheryImmutableState
├── LiquidityManagement
├── PeripheryValidation
└── SelfPermit
Position Struct
Creates a new position and mints an NFT.
Parameters:
Returns:
Example:
increaseLiquidity
Adds liquidity to an existing position.
Parameters:
Note: Can be called even on locked positions.
decreaseLiquidity
Removes liquidity from a position.
Parameters:
Requirements:
Caller must be owner or approved
Position must NOT be locked (block.timestamp >= lockedUntil)
Returns:
Note: Tokens are not transferred automatically. Call collect() to receive tokens.
Collects tokens owed from a position (from decreaseLiquidity and accumulated fees).
Parameters:
Note: Can be called on locked positions (fee collection is always allowed).
Example:
Burns a position NFT.
Requirements:
Caller must be owner or approved
Position liquidity must be 0
Position must NOT be locked
All tokens must be collected (tokensOwed0 = tokensOwed1 = 0)
VinuSwap Extension
Locks a position until a specified timestamp.
Parameters:
Requirements:
Caller must be owner or approved
lockedUntil must be in the future or extend current lock
Effects:
Position cannot call decreaseLiquidity() until lock expires
Position cannot call burn() until lock expires
Position CAN still call collect() and increaseLiquidity()
Events Emitted:
Lock(tokenId, lockedUntil)
Example:
Returns position data for a given NFT ID.
Note: Returns lockedUntil instead of tokensOwed. Use tokensOwed(tokenId) to get uncollected token amounts.
Returns uncollected tokens for a position.
Parameters:
Returns:
IncreaseLiquidity
DecreaseLiquidity
VinuSwap Extension
Common Patterns
Create Position with VC
Remove All Liquidity
Lock and Provide Liquidity
Last updated