# PoolAddressesProvider

The `PoolAddressesProvider` contract is the main registry of addresses that are part of or connected to the Fathom protocol, including permissioned roles. It acts as a factory of proxies and an admin of those proxies, with the right to change their implementations. The contract is owned by the Fathom Governance.

### **Storage Variables**

* **\_marketId**: The identifier of the Fathom Market.
* **\_addresses**: A mapping of registered addresses (`bytes32 identifier` => `address registeredAddress`).

### **Constants**

* **POOL**: The identifier for the pool address.
* **POOL\_CONFIGURATOR**: The identifier for the pool configurator address.
* **PRICE\_ORACLE**: The identifier for the price oracle address.
* **ACL\_MANAGER**: The identifier for the ACL manager address.
* **ACL\_ADMIN**: The identifier for the ACL admin address.
* **PRICE\_ORACLE\_SENTINEL**: The identifier for the price oracle sentinel address.
* **DATA\_PROVIDER**: The identifier for the data provider address.

### Functions

### **Getters**

* **getMarketId()**: Returns the identifier of the Fathom Market.
* **getAddress(bytes32 id)**: Returns the registered address associated with the given identifier.
* **getPool()**: Returns the address of the pool.
* **getPoolConfigurator()**: Returns the address of the pool configurator.
* **getPriceOracle()**: Returns the address of the price oracle.
* **getACLManager()**: Returns the address of the ACL manager.
* **getACLAdmin()**: Returns the address of the ACL admin.
* **getPriceOracleSentinel()**: Returns the address of the price oracle sentinel.
* **getPoolDataProvider()**: Returns the address of the pool data provider.

### **Setters**

* **setMarketId(string memory newMarketId)**: Sets a new market identifier. Callable only by the owner.
* **setAddress(bytes32 id, address newAddress)**: Registers a new address with the given identifier. Callable only by the owner.
* **setAddressAsProxy(bytes32 id, address newImplementationAddress)**: Updates the implementation address of a proxy. Callable only by the owner.
* **setPoolImpl(address newPoolImpl)**: Sets a new pool implementation. Callable only by the owner.
* **setPoolConfiguratorImpl(address newPoolConfiguratorImpl)**: Sets a new pool configurator implementation. Callable only by the owner.
* **setPriceOracle(address newPriceOracle)**: Sets a new price oracle address. Callable only by the owner.
* **setACLManager(address newAclManager)**: Sets a new ACL manager address. Callable only by the owner.
* **setACLAdmin(address newAclAdmin)**: Sets a new ACL admin address. Callable only by the owner.
* **setPriceOracleSentinel(address newPriceOracleSentinel)**: Sets a new price oracle sentinel address. Callable only by the owner.
* **setPoolDataProvider(address newDataProvider)**: Sets a new pool data provider address. Callable only by the owner.

### **Events**

* **MarketIdSet(string indexed oldMarketId, string indexed newMarketId)**: Emitted when the market identifier is updated.
* **AddressSet(bytes32 indexed id, address indexed oldAddress, address indexed newAddress)**: Emitted when an address is registered or updated.
* **AddressSetAsProxy(bytes32 indexed id, address indexed proxyAddress, address indexed oldImplementationAddress, address newImplementationAddress)**: Emitted when a proxy address is set or updated.
* **PoolUpdated(address indexed oldPoolImpl, address indexed newPoolImpl)**: Emitted when the pool implementation is updated.
* **PoolConfiguratorUpdated(address indexed oldPoolConfiguratorImpl, address indexed newPoolConfiguratorImpl)**: Emitted when the pool configurator implementation is updated.
* **PriceOracleUpdated(address indexed oldPriceOracle, address indexed newPriceOracle)**: Emitted when the price oracle address is updated.
* **ACLManagerUpdated(address indexed oldAclManager, address indexed newAclManager)**: Emitted when the ACL manager address is updated.
* **ACLAdminUpdated(address indexed oldAclAdmin, address indexed newAclAdmin)**: Emitted when the ACL admin address is updated.
* **PriceOracleSentinelUpdated(address indexed oldPriceOracleSentinel, address indexed newPriceOracleSentinel)**: Emitted when the price oracle sentinel address is updated.
* **PoolDataProviderUpdated(address indexed oldDataProvider, address indexed newDataProvider)**: Emitted when the pool data provider address is updated.
* **ProxyCreated(bytes32 indexed id, address indexed proxyAddress, address indexed implementationAddress)**: Emitted when a new proxy is created.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fathom.fi/lending/interfaces/pooladdressesprovider.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
