> For the complete documentation index, see [llms.txt](https://docs.valantis.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.valantis.xyz/amms-and-vaults/design-space/modules/pool-manager.md).

# Pool Manager

<figure><img src="https://986147118-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1hNJeG4CApeBcE2NlR61%2Fuploads%2Fgit-blob-975af2781df6a2870fdec206b6be9a50f34950da%2FPool%20Manager%20Fig.%201_V2%20(1).jpg?alt=media" alt=""><figcaption><p>Pool Manager in context</p></figcaption></figure>

`poolManager` is the role responsible for assembling the most fundamental modules in the pool. The `poolManager` also has the ability to update certain pool-level parameters, such as applying an optional Pool Manager Fee.

Only `poolManager` can call the following functions in Sovereign Pool:

* `setALM` Sets the Liquidity Module. To be called only once.
* `setSwapFeeModule` Sets the Swap Fee Module. This can be called once every 3 days.
* `setSovereignOracle` Sets the Oracle Module. This can be called only once.
* `setPoolManager` can assign the Pool Manager role to another address, or revoke the manager altogether to create an immutable Sovereign Pool implementation. In this case the `poolManager` is reset to the zero address, manager fees are set to 0, and any unclaimed manager fees are transferred to `msg.sender`.
* `setPoolManagerFeeBips` Sets basis point amount of swap fees to be assigned to `poolManager`. This is represented as a percentage of the fees calculated by the Swap Fee Module. Pool Manager Fees cannot exceed 50% of fees earned by LPs.
* `claimPoolManagerFees` Claim all portion of trading fees which are due for `poolManager`. Upon calling this function, the `poolManager` can optionally share a portion of the claimable fees to the pool's `gauge`. There will be a Valantis Protocol `gauge` implementation that allows a pool to participate in VAL-incentive mechanisms. Custom gauges implementations allows the pool to participate in any external scheme that relies on fee collection/measurement. **NOTE: This method works differently in case of rebase tokens:**
  * If reserves are not meant to be stored in the pool (`sovereignVault ≠ address(this)`, and the token to be claimed is a rebase token, this method will not work since earned swap fees are not tracked in the pool. In this scenario, `sovereignVault` would need to implement a custom method to allow `poolManager` to claim due amount of rebase token fees.
  * If reserves are meant to be stored in the pool (`sovereignVault == address(this)`), the pool manager fees would be transferred on every swap, hence no need to use a claim function.
