# PoolAddressesProvider

**🔹Constructor**

* **`constructor(string marketId, address owner)`** Initializes the contract by setting a `marketId` (text identifier for the market, e.g., `"AaveV3Ethereum"`) and assigning an `owner` with admin rights.

***

**🔹View (read-only) functions**

* **`getACLAdmin() → address`** Returns the current ACL Admin address (the account responsible for managing access control).
* **`getACLManager() → address`** Returns the current ACL Manager address (manages roles within the ACL system).
* **`getAddress(bytes32 id) → address`** Returns the stored address associated with a given identifier (`id`). Example: fetching the pool or oracle by ID.
* **`getMarketId() → string`** Returns the text identifier of the current market.
* **`getPool() → address`** Returns the Pool contract address.
* **`getPoolConfigurator() → address`** Returns the Pool Configurator contract address.
* **`getPoolDataProvider() → address`** Returns the Data Provider contract address.
* **`getPriceOracle() → address`** Returns the address of the current price oracle.
* **`getPriceOracleSentinel() → address`** Returns the address of the oracle sentinel (a contract that can pause operations when oracle feeds are unreliable).
* **`getPyth() → address`** Returns the address of the Pyth oracle integration (used for real-time price feeds).
* **`owner() → address`** Returns the current owner (administrator of the contract).

***

**🔹State-changing (admin) functions**

* **`setACLAdmin(address newAclAdmin)`** Updates the ACL Admin to a new address. Emits **ACLAdminUpdated** event.
* **`setACLManager(address newAclManager)`** Updates the ACL Manager to a new address. Emits **ACLManagerUpdated** event.
* **`setAddress(bytes32 id, address newAddress)`** Associates an `id` with a new raw address. Emits **AddressSet** event.
* **`setAddressAsProxy(bytes32 id, address newImplementationAddress)`** Deploys or updates a proxy for a given `id`, pointing to a new implementation. Emits **AddressSetAsProxy** event.
* **`setMarketId(string newMarketId)`** Updates the market identifier string. Emits **MarketIdSet** event.
* **`setPoolConfiguratorImpl(address newPoolConfiguratorImpl)`** Updates the Pool Configurator implementation. Emits **PoolConfiguratorUpdated** event.
* **`setPoolDataProvider(address newDataProvider)`** Updates the Pool Data Provider contract. Emits **PoolDataProviderUpdated** event.
* **`setPoolImpl(address newPoolImpl)`** Updates the Pool implementation. Emits **PoolUpdated** event.
* **`setPriceOracle(address newPriceOracle)`** Updates the price oracle contract. Emits **PriceOracleUpdated** event.
* **`setPriceOracleSentinel(address newPriceOracleSentinel)`** Updates the oracle sentinel contract. Emits **PriceOracleSentinelUpdated** event.
* **`setPyth(address newPyth)`** Updates the Pyth oracle contract. Emits **PythUpdated** event.
* **`transferOwnership(address newOwner)`** Transfers contract ownership to `newOwner`. Emits **OwnershipTransferred** event.
* **`renounceOwnership()`** Permanently removes the owner, leaving the contract without centralized admin control.

***

**🔹Events (for tracking changes)**

* **ACLAdminUpdated / ACLManagerUpdated** → fired when ACL roles change.
* **AddressSet / AddressSetAsProxy** → fired when addresses or proxies are updated.
* **MarketIdSet** → fired when the market ID changes.
* **OwnershipTransferred** → fired when contract ownership changes.
* **PoolConfiguratorUpdated / PoolDataProviderUpdated / PoolUpdated** → fired when pool-related components are updated.
* **PriceOracleUpdated / PriceOracleSentinelUpdated** → fired when oracle components are updated.
* **ProxyCreated** → fired when a new proxy contract is deployed.
* **PythUpdated** → fired when the Pyth oracle address changes.

Copy

```
[
  {
    "inputs": [
      { "internalType": "string", "name": "marketId", "type": "string" },
      { "internalType": "address", "name": "owner", "type": "address" }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
    ],
    "name": "ACLAdminUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
    ],
    "name": "ACLManagerUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "bytes32", "name": "id", "type": "bytes32" },
      { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
    ],
    "name": "AddressSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "bytes32", "name": "id", "type": "bytes32" },
      { "indexed": true, "internalType": "address", "name": "proxyAddress", "type": "address" },
      { "indexed": false, "internalType": "address", "name": "oldImplementationAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newImplementationAddress", "type": "address" }
    ],
    "name": "AddressSetAsProxy",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "string", "name": "oldMarketId", "type": "string" },
      { "indexed": true, "internalType": "string", "name": "newMarketId", "type": "string" }
    ],
    "name": "MarketIdSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
    ],
    "name": "PoolConfiguratorUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
    ],
    "name": "PoolDataProviderUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
    ],
    "name": "PoolUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
    ],
    "name": "PriceOracleSentinelUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
    ],
    "name": "PriceOracleUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "bytes32", "name": "id", "type": "bytes32" },
      { "indexed": true, "internalType": "address", "name": "proxyAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "implementationAddress", "type": "address" }
    ],
    "name": "ProxyCreated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
    ],
    "name": "PythUpdated",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "getACLAdmin",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getACLManager",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "bytes32", "name": "id", "type": "bytes32" }],
    "name": "getAddress",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getMarketId",
    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPool",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPoolConfigurator",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPoolDataProvider",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPriceOracle",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPriceOracleSentinel",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPyth",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newAclAdmin", "type": "address" }],
    "name": "setACLAdmin",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newAclManager", "type": "address" }],
    "name": "setACLManager",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "bytes32", "name": "id", "type": "bytes32" },
      { "internalType": "address", "name": "newAddress", "type": "address" }
    ],
    "name": "setAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "bytes32", "name": "id", "type": "bytes32" },
      { "internalType": "address", "name": "newImplementationAddress", "type": "address" }
    ],
    "name": "setAddressAsProxy",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "string", "name": "newMarketId", "type": "string" }],
    "name": "setMarketId",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newPoolConfiguratorImpl", "type": "address" }],
    "name": "setPoolConfiguratorImpl",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newDataProvider", "type": "address" }],
    "name": "setPoolDataProvider",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newPoolImpl", "type": "address" }],
    "name": "setPoolImpl",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newPriceOracle", "type": "address" }],
    "name": "setPriceOracle",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newPriceOracleSentinel", "type": "address" }],
    "name": "setPriceOracleSentinel",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newPyth", "type": "address" }],
    "name": "setPyth",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]



```


---

# 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://colend.gitbook.io/home/abi/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.
