# IPoolAddressesProvider

Defines the basic interface for a Pool Addresses Provider.

## MarketIdSet

```solidity
event MarketIdSet(string oldMarketId, string newMarketId)
```

*Emitted when the market identifier is updated.*

### Parameters

| Name        | Type   | Description              |
| ----------- | ------ | ------------------------ |
| oldMarketId | string | The old id of the market |
| newMarketId | string | The new id of the market |

## PoolUpdated

```solidity
event PoolUpdated(address oldAddress, address newAddress)
```

*Emitted when the pool is updated.*

### Parameters

| Name       | Type    | Description                 |
| ---------- | ------- | --------------------------- |
| oldAddress | address | The old address of the Pool |
| newAddress | address | The new address of the Pool |

## PoolConfiguratorUpdated

```solidity
event PoolConfiguratorUpdated(address oldAddress, address newAddress)
```

*Emitted when the pool configurator is updated.*

### Parameters

| Name       | Type    | Description                             |
| ---------- | ------- | --------------------------------------- |
| oldAddress | address | The old address of the PoolConfigurator |
| newAddress | address | The new address of the PoolConfigurator |

## PriceOracleUpdated

```solidity
event PriceOracleUpdated(address oldAddress, address newAddress)
```

*Emitted when the price oracle is updated.*

### Parameters

| Name       | Type    | Description                        |
| ---------- | ------- | ---------------------------------- |
| oldAddress | address | The old address of the PriceOracle |
| newAddress | address | The new address of the PriceOracle |

## ACLManagerUpdated

```solidity
event ACLManagerUpdated(address oldAddress, address newAddress)
```

*Emitted when the ACL manager is updated.*

### Parameters

| Name       | Type    | Description                       |
| ---------- | ------- | --------------------------------- |
| oldAddress | address | The old address of the ACLManager |
| newAddress | address | The new address of the ACLManager |

## ACLAdminUpdated

```solidity
event ACLAdminUpdated(address oldAddress, address newAddress)
```

*Emitted when the ACL admin is updated.*

### Parameters

| Name       | Type    | Description                     |
| ---------- | ------- | ------------------------------- |
| oldAddress | address | The old address of the ACLAdmin |
| newAddress | address | The new address of the ACLAdmin |

## PriceOracleSentinelUpdated

```solidity
event PriceOracleSentinelUpdated(address oldAddress, address newAddress)
```

*Emitted when the price oracle sentinel is updated.*

### Parameters

| Name       | Type    | Description                                |
| ---------- | ------- | ------------------------------------------ |
| oldAddress | address | The old address of the PriceOracleSentinel |
| newAddress | address | The new address of the PriceOracleSentinel |

## PoolDataProviderUpdated

```solidity
event PoolDataProviderUpdated(address oldAddress, address newAddress)
```

*Emitted when the pool data provider is updated.*

### Parameters

| Name       | Type    | Description                             |
| ---------- | ------- | --------------------------------------- |
| oldAddress | address | The old address of the PoolDataProvider |
| newAddress | address | The new address of the PoolDataProvider |

## ProxyCreated

```solidity
event ProxyCreated(bytes32 id, address proxyAddress, address implementationAddress)
```

*Emitted when a new proxy is created.*

### Parameters

| Name                  | Type    | Description                                |
| --------------------- | ------- | ------------------------------------------ |
| id                    | bytes32 | The identifier of the proxy                |
| proxyAddress          | address | The address of the created proxy contract  |
| implementationAddress | address | The address of the implementation contract |

## AddressSet

```solidity
event AddressSet(bytes32 id, address oldAddress, address newAddress)
```

*Emitted when a new non-proxied contract address is registered.*

### Parameters

| Name       | Type    | Description                     |
| ---------- | ------- | ------------------------------- |
| id         | bytes32 | The identifier of the contract  |
| oldAddress | address | The address of the old contract |
| newAddress | address | The address of the new contract |

## AddressSetAsProxy

```solidity
event AddressSetAsProxy(bytes32 id, address proxyAddress, address oldImplementationAddress, address newImplementationAddress)
```

*Emitted when the implementation of the proxy registered with id is updated*

### Parameters

| Name                     | Type    | Description                                    |
| ------------------------ | ------- | ---------------------------------------------- |
| id                       | bytes32 | The identifier of the contract                 |
| proxyAddress             | address | The address of the proxy contract              |
| oldImplementationAddress | address | The address of the old implementation contract |
| newImplementationAddress | address | The address of the new implementation contract |

## getMarketId

```solidity
function getMarketId() external view returns (string)
```

Returns the id of the Aave market to which this contract points to.

### Return Values

| Name | Type   | Description   |
| ---- | ------ | ------------- |
| \[0] | string | The market id |

## setMarketId

```solidity
function setMarketId(string newMarketId) external
```

Associates an id with a specific PoolAddressesProvider.

*This can be used to create an onchain registry of PoolAddressesProviders to*\
*identify and validate multiple Aave markets.*

### Parameters

| Name        | Type   | Description   |
| ----------- | ------ | ------------- |
| newMarketId | string | The market id |

## getAddress

```solidity
function getAddress(bytes32 id) external view returns (address)
```

Returns an address by its identifier.

*The returned address might be an EOA or a contract, potentially proxied*\
*It returns ZERO if there is no registered address with the given id*

### Parameters

| Name | Type    | Description |
| ---- | ------- | ----------- |
| id   | bytes32 | The id      |

### Return Values

| Name | Type    | Description                                        |
| ---- | ------- | -------------------------------------------------- |
| \[0] | address | The address of the registered for the specified id |

## setAddressAsProxy

```solidity
function setAddressAsProxy(bytes32 id, address newImplementationAddress) external
```

General function to update the implementation of a proxy registered with\
certain `id`. If there is no proxy registered, it will instantiate one and\
set as implementation the `newImplementationAddress`.

*IMPORTANT Use this function carefully, only for ids that don't have an explicit*\
*setter function, in order to avoid unexpected consequences*

### Parameters

| Name                     | Type    | Description                           |
| ------------------------ | ------- | ------------------------------------- |
| id                       | bytes32 | The id                                |
| newImplementationAddress | address | The address of the new implementation |

## setAddress

```solidity
function setAddress(bytes32 id, address newAddress) external
```

Sets an address for an id replacing the address saved in the addresses map.

*IMPORTANT Use this function carefully, as it will do a hard replacement*

### Parameters

| Name       | Type    | Description        |
| ---------- | ------- | ------------------ |
| id         | bytes32 | The id             |
| newAddress | address | The address to set |

## getPool

```solidity
function getPool() external view returns (address)
```

Returns the address of the Pool proxy.

### Return Values

| Name | Type    | Description            |
| ---- | ------- | ---------------------- |
| \[0] | address | The Pool proxy address |

## setPoolImpl

```solidity
function setPoolImpl(address newPoolImpl) external
```

Updates the implementation of the Pool, or creates a proxy\
setting the new `pool` implementation when the function is called for the first time.

### Parameters

| Name        | Type    | Description                 |
| ----------- | ------- | --------------------------- |
| newPoolImpl | address | The new Pool implementation |

## getPoolConfigurator

```solidity
function getPoolConfigurator() external view returns (address)
```

Returns the address of the PoolConfigurator proxy.

### Return Values

| Name | Type    | Description                        |
| ---- | ------- | ---------------------------------- |
| \[0] | address | The PoolConfigurator proxy address |

## setPoolConfiguratorImpl

```solidity
function setPoolConfiguratorImpl(address newPoolConfiguratorImpl) external
```

Updates the implementation of the PoolConfigurator, or creates a proxy\
setting the new `PoolConfigurator` implementation when the function is called for the first time.

### Parameters

| Name                    | Type    | Description                             |
| ----------------------- | ------- | --------------------------------------- |
| newPoolConfiguratorImpl | address | The new PoolConfigurator implementation |

## getPriceOracle

```solidity
function getPriceOracle() external view returns (address)
```

Returns the address of the price oracle.

### Return Values

| Name | Type    | Description                    |
| ---- | ------- | ------------------------------ |
| \[0] | address | The address of the PriceOracle |

## setPriceOracle

```solidity
function setPriceOracle(address newPriceOracle) external
```

Updates the address of the price oracle.

### Parameters

| Name           | Type    | Description                        |
| -------------- | ------- | ---------------------------------- |
| newPriceOracle | address | The address of the new PriceOracle |

## getACLManager

```solidity
function getACLManager() external view returns (address)
```

Returns the address of the ACL manager.

### Return Values

| Name | Type    | Description                   |
| ---- | ------- | ----------------------------- |
| \[0] | address | The address of the ACLManager |

## setACLManager

```solidity
function setACLManager(address newAclManager) external
```

Updates the address of the ACL manager.

### Parameters

| Name          | Type    | Description                       |
| ------------- | ------- | --------------------------------- |
| newAclManager | address | The address of the new ACLManager |

## getACLAdmin

```solidity
function getACLAdmin() external view returns (address)
```

Returns the address of the ACL admin.

### Return Values

| Name | Type    | Description                  |
| ---- | ------- | ---------------------------- |
| \[0] | address | The address of the ACL admin |

## setACLAdmin

```solidity
function setACLAdmin(address newAclAdmin) external
```

Updates the address of the ACL admin.

### Parameters

| Name        | Type    | Description                      |
| ----------- | ------- | -------------------------------- |
| newAclAdmin | address | The address of the new ACL admin |

## getPriceOracleSentinel

```solidity
function getPriceOracleSentinel() external view returns (address)
```

Returns the address of the price oracle sentinel.

### Return Values

| Name | Type    | Description                            |
| ---- | ------- | -------------------------------------- |
| \[0] | address | The address of the PriceOracleSentinel |

## setPriceOracleSentinel

```solidity
function setPriceOracleSentinel(address newPriceOracleSentinel) external
```

Updates the address of the price oracle sentinel.

### Parameters

| Name                   | Type    | Description                                |
| ---------------------- | ------- | ------------------------------------------ |
| newPriceOracleSentinel | address | The address of the new PriceOracleSentinel |

## getPoolDataProvider

```solidity
function getPoolDataProvider() external view returns (address)
```

Returns the address of the data provider.

### Return Values

| Name | Type    | Description                     |
| ---- | ------- | ------------------------------- |
| \[0] | address | The address of the DataProvider |

## setPoolDataProvider

```solidity
function setPoolDataProvider(address newDataProvider) external
```

Updates the address of the data provider.

### Parameters

| Name            | Type    | Description                         |
| --------------- | ------- | ----------------------------------- |
| newDataProvider | address | The address of the new DataProvider |


---

# 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.mangrove.exchange/dev/strat-lib/technical-references/api-preferences/strats/src/strategies/vendor/aave/v3/contracts/interfaces/ipooladdressesprovider.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.
