> ## Documentation Index
> Fetch the complete documentation index at: https://tech.ramses.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# RamsesV3PositionManager

Wraps Ramses V3 positions in the ERC721 non-fungible token interface. Extends the standard position management with gauge reward claiming and voter integration.

## Functions

### constructor

```solidity theme={null}
  function constructor(
  ) public
```

### positions

```solidity theme={null}
  function positions(
    uint256 tokenId
  ) external view returns (address token0, address token1, int24 tickSpacing, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)
```

Returns the position information associated with a given token ID.

Throws if the token ID is not valid.

#### Parameters:

| Name      | Type    | Description                                      |
| :-------- | :------ | :----------------------------------------------- |
| `tokenId` | uint256 | The ID of the token that represents the position |

#### Return Values:

| Name                       | Type    | Description                                                                      |
| :------------------------- | :------ | :------------------------------------------------------------------------------- |
| `token0`                   | address | The address of the token0 for a specific pool                                    |
| `token1`                   | address | The address of the token1 for a specific pool                                    |
| `tickSpacing`              | int24   | The tick spacing of the pool                                                     |
| `tickLower`                | int24   | The lower end of the tick range for the position                                 |
| `tickUpper`                | int24   | The higher end of the tick range for the position                                |
| `liquidity`                | uint128 | The liquidity of the position                                                    |
| `feeGrowthInside0LastX128` | uint256 | The fee growth of token0 as of the last action on the individual position        |
| `feeGrowthInside1LastX128` | uint256 | The fee growth of token1 as of the last action on the individual position        |
| `tokensOwed0`              | uint128 | The uncollected amount of token0 owed to the position as of the last computation |
| `tokensOwed1`              | uint128 | The uncollected amount of token1 owed to the position as of the last computation |

### mint

```solidity theme={null}
  function mint(
    struct IRamsesV3PositionManager.MintParams params
  ) external payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
```

Creates a new position wrapped in a NFT

Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized
a method does not exist, i.e. the pool is assumed to be initialized.

#### Parameters:

| Name     | Type                                       | Description                                                                  |
| :------- | :----------------------------------------- | :--------------------------------------------------------------------------- |
| `params` | struct IRamsesV3PositionManager.MintParams | The params necessary to mint a position, encoded as `MintParams` in calldata |

#### Return Values:

| Name        | Type    | Description                                             |
| :---------- | :------ | :------------------------------------------------------ |
| `tokenId`   | uint256 | The ID of the token that represents the minted position |
| `liquidity` | uint128 | The amount of liquidity for this position               |
| `amount0`   | uint256 | The amount of token0                                    |
| `amount1`   | uint256 | The amount of token1                                    |

### tokenURI

```solidity theme={null}
  function tokenURI(
    uint256 tokenId
  ) public view returns (string)
```

Returns a URI describing a particular token ID

#### Parameters:

| Name      | Type    | Description                                             |
| :-------- | :------ | :------------------------------------------------------ |
| `tokenId` | uint256 | The ID of the token that represents the minted position |

#### Return Values:

A base64 string with the URI data.

### increaseLiquidity

```solidity theme={null}
  function increaseLiquidity(
    struct IRamsesV3PositionManager.IncreaseLiquidityParams params
  ) external payable returns (uint128 liquidity, uint256 amount0, uint256 amount1)
```

Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`

#### Parameters:

| Name     | Type                                                    | Description                                                         |
| :------- | :------------------------------------------------------ | :------------------------------------------------------------------ |
| `params` | struct IRamsesV3PositionManager.IncreaseLiquidityParams | tokenId The ID of the token for which liquidity is being increased, |

#### Return Values:

| Name        | Type    | Description                                          |
| :---------- | :------ | :--------------------------------------------------- |
| `liquidity` | uint128 | The new liquidity amount as a result of the increase |
| `amount0`   | uint256 | The amount of token0 to achieve resulting liquidity  |
| `amount1`   | uint256 | The amount of token1 to achieve resulting liquidity  |

### decreaseLiquidity

```solidity theme={null}
  function decreaseLiquidity(
    struct IRamsesV3PositionManager.DecreaseLiquidityParams params
  ) external payable returns (uint256 amount0, uint256 amount1)
```

Decreases the amount of liquidity in a position and accounts it to the position

#### Parameters:

| Name     | Type                                                    | Description                                                         |
| :------- | :------------------------------------------------------ | :------------------------------------------------------------------ |
| `params` | struct IRamsesV3PositionManager.DecreaseLiquidityParams | tokenId The ID of the token for which liquidity is being decreased, |

#### Return Values:

| Name      | Type    | Description                                                  |
| :-------- | :------ | :----------------------------------------------------------- |
| `amount0` | uint256 | The amount of token0 accounted to the position's tokens owed |
| `amount1` | uint256 | The amount of token1 accounted to the position's tokens owed |

### collect

```solidity theme={null}
  function collect(
    struct IRamsesV3PositionManager.CollectParams params
  ) external payable returns (uint256 amount0, uint256 amount1)
```

Collects up to a maximum amount of fees owed to a specific position to the recipient

#### Parameters:

| Name     | Type                                          | Description                                                     |
| :------- | :-------------------------------------------- | :-------------------------------------------------------------- |
| `params` | struct IRamsesV3PositionManager.CollectParams | tokenId The ID of the NFT for which tokens are being collected, |

recipient The account that should receive the tokens,
amount0Max The maximum amount of token0 to collect,
amount1Max The maximum amount of token1 to collect

#### Return Values:

| Name      | Type    | Description                            |
| :-------- | :------ | :------------------------------------- |
| `amount0` | uint256 | The amount of fees collected in token0 |
| `amount1` | uint256 | The amount of fees collected in token1 |

### burn

```solidity theme={null}
  function burn(
    uint256 tokenId
  ) external payable
```

Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens
must be collected first.

#### Parameters:

| Name      | Type    | Description                              |
| :-------- | :------ | :--------------------------------------- |
| `tokenId` | uint256 | The ID of the token that is being burned |

### getReward

```solidity theme={null}
  function getReward(
    uint256 tokenId,
    address[] tokens
  ) external
```

Claims gauge rewards for a given position NFT. Ramses-specific addition for collecting emissions from GaugeV3.

#### Parameters:

| Name      | Type       | Description                                    |
| :-------- | :--------- | :--------------------------------------------- |
| `tokenId` | uint256    | The ID of the token for which to claim rewards |
| `tokens`  | address\[] | The reward token addresses to claim            |

### setVoter

```solidity theme={null}
  function setVoter(
    address _voter
  ) external
```

Sets the Voter contract address for gauge integration. Ramses-specific.

#### Parameters:

| Name     | Type    | Description                       |
| :------- | :------ | :-------------------------------- |
| `_voter` | address | The address of the Voter contract |
