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

# Position Locks

> Freeze LP principal withdrawal

A position lock prevents principal withdrawal from an LP position until an expiry timestamp or indefinitely. The lock commits capital to the pool; it does not change custody of the position.

## What a lock does

A lock blocks these operations on the locked position:

* `removeLiquidity` (constant-product pools)
* `decreaseLiquidity` (concentrated pools)
* `rebalancePosition` when the source range is the locked range

Only the position owner can set or extend a lock. Every request is signed by the owner's key.

## What a lock does not do

Fee collection and free-balance withdrawals stay available while a lock is active. The lock commits deposited capital, not the yield it accrues. The following operations continue to work on a locked position:

* `collectFees` (concentrated pools)
* `withdrawConcentratedBalance` (concentrated pools)
* `addLiquidity` and `increaseLiquidity` (a lock does not cap position size)
* Swaps against the pool (swaps operate on pool reserves, not LP positions)

## Duration model

Lock duration is encoded as a Unix-seconds string passed to the SDK.

* **Bounded**: a future Unix timestamp string (for example `"1793836800"`). The lock expires when the server's current time passes the timestamp. The record is removed lazily on the next read; no explicit action is required from the owner.
* **Indefinite**: the sentinel `"0"`. The lock has no expiry. Once a position is set indefinite, it cannot be converted to a bounded duration.

The maximum accepted bounded value is `"4102444800"` (2100-01-01 UTC). Anything longer must use the `"0"` sentinel.

Locks can be extended but not shortened. A request to set an earlier expiry than the current one is rejected and no state changes.

## Scoping: V2 vs V3

| Pool type             | Unit                | Lock covers                                           |
| --------------------- | ------------------- | ----------------------------------------------------- |
| Constant-product (V2) | Entire LP share     | All LP tokens the owner holds in the pool             |
| Concentrated (V3)     | Specific tick range | Only the position at exactly `(tickLower, tickUpper)` |

A V3 owner with multiple positions in the same pool can lock each range independently. Locking one range has no effect on another range in the same pool.

## Next steps

* [Create a lock](/products/flashnet-amm/lock-create)
* [Read lock state](/products/flashnet-amm/lock-query)
* [Transfer a locked position](/products/flashnet-amm/transfer-overview)
