> For the complete documentation index, see [llms.txt](https://balancer.gitbook.io/balancer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://balancer.gitbook.io/balancer/smart-contracts/smart-pools/component-libraries.md).

# Component Libraries

## This page has been deprecated. V1 documentation is partially maintained [here](https://docs.balancer.fi/v/v1/smart-contracts/smart-pools/component-libraries/)

## Component Libraries

The Configurable Rights Pool uses several externally linked libraries to implement all its functionality, detailed below.

* **BalancerConstants** - constant state variables used throughout
* **BalancerSafeMath** - similar to Open Zeppelin SafeMath, but normalized so that "1" = 10^18, to allow fractional arithmetic (e.g., on weights)
* **RightsManager** - defines a struct of boolean values, corresponding to each right; the Configurable Rights Pool stores this struct in storage.
* **SmartPoolManager** - factors out computationally intensive functions, mainly to reduce the bytecode size of the Configurable Rights Pool, to keep it deployable
* **SafeApprove** - an internal library (adapted from PieDAO) to enable pools to contain ERC20 tokens that require approve calls to be made from a base of 0 (e.g., KNC)

The Configurable Rights Pool contains getter functions that return the addresses of these libraries; a bit of future-proofing, so that clients can implement versioning.
