> For the complete documentation index, see [llms.txt](https://docs.ferra.ag/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ferra.ag/integration/dlmm/smart-contract/position-module.md).

# Position Module

#### Structs

**`LBPosition`**

```move
struct LBPosition has key, store {
    id: UID,
    pair_id: ID,
    coin_type_a: TypeName,
    coin_type_b: TypeName,
    lock_until: u64,
}
```

* **Purpose**: NFT representing liquidity position

**`LBPositionManager`**

```move
struct LBPositionManager has store {
    positions: Table<ID, LBPositionInfo>,
}
```

* **Purpose**: Manages all position data

**`LBPositionInfo`**

```move
struct LBPositionInfo has store {
    position_id: ID,
    bins: Table<u32, LBBinPosition>,
    fee_reward_info: FeeRewardInfo,
}
```

* **Purpose**: Detailed position data

**`LBBinPosition`**

```move
struct LBBinPosition has copy, drop, store {
    amount: u128,
    fee_growth_inside_last_x: u128,
    fee_growth_inside_last_y: u128,
}
```

* **Purpose**: Position data for specific price bin

**`FeeRewardInfo`**

```move
struct FeeRewardInfo has store {
    total_fees_generated: u128,        
    reward_per_fee_snapshot: vector<u128>,
}
```

* **Purpose**: Fee generation and reward tracking

#### Core Functions

**Position Lifecycle**

* **`open_position`**: Create new position NFT
* **`close_position`**: Destroy empty position
* **`lock_position`**: Apply time lock
* **`is_position_locked`**: Check lock status

**Liquidity Operations**

* **`increase_liquidity`**: Add liquidity to position
* **`decrease_liquidity`**: Remove liquidity (respects locks)

**Fee Management**

* **`collect_fees`**: Harvest accumulated fees
* **`get_pending_fees`**: View unclaimed fees
* **`update_fee_info`**: Update fee tracking (internal)

**Position Queries**

* **`position_token_amount`**: Liquidity in specific bin
* **`get_tokens_in_position`**: All position liquidity
* **`has_tokens_in_bins`**: Check if position has liquidity
