# Lendpool Address Provider

An Immutable contract address that stores the addresses of the main contracts in the protocol.

{% hint style="info" %}
If you are searching for a smart contract address, we recommend fetching it from the LendPoolAddressProvider.&#x20;
{% endhint %}

The source can be found on [GitHub](https://github.com/UnlockdFinance/unlockd-protocol-v1/blob/master/contracts/protocol/LendPoolAddressesProvider.sol).

## View Methods

### getMarketId

`function getMarketId() external view override returns (string memory)`

Returns the id of the associated Unlockd Market.

#### Return Values

| Type     | Description                              |
| -------- | ---------------------------------------- |
| `string` | a string representation of the market id |

### getAddress

`function getAddress(bytes32 id) public view override returns (address)`

Returns the latest deployed address of a protocol smart contract stored at a given id.&#x20;

#### Call Params

| Name | Type    | Description                                         |
| ---- | ------- | --------------------------------------------------- |
| `id` | bytes32 | id. Example, the Protocol Data Provider uses id 0x1 |

#### Return Values

| Type    | Description                                             |
| ------- | ------------------------------------------------------- |
| address | The address associated with the given bytes32 variable. |

```
// Get the address of the NFTX vault factory
import { utils } from '@ethers/lib/utils';

const id =  utils.keccak256(utils.toUtf8Bytes("NFTX_VAULT_FACTORY"));
const address = poolAddressProvider.getAddress(id);
```

### getLendPool

`function getLendPool() external view override returns (address)`

Returns the proxy address of the lendpool deployed.

#### Return Values

| Type    | Description                            |
| ------- | -------------------------------------- |
| address | The address of the associated LendPool |

### getLendPoolConfigurator

`function getLendPoolConfigurator() external view override returns (address)`

Returns the proxy address of the LendPoolConfigurator deployed.&#x20;

#### Return Values

| Type    | Description                                        |
| ------- | -------------------------------------------------- |
| address | The address of the associated LendPoolConfigurator |

### getPoolAdmin

`function getPoolAdmin() external view override returns (address)`

Returns the address of the LendPool Admin (wallet or contract).

#### Return Values

| Type    | Description                                  |
| ------- | -------------------------------------------- |
| address | The address of the associated LendPool Admin |

### getEmergencyAdmin

`function getEmergencyAdmin() external view override returns (address)`

Returns the address of the Emergency LendPool Admin (wallet or contract).

#### Return Values

| Type    | Description                                            |
| ------- | ------------------------------------------------------ |
| address | The address of the associated Emergency LendPool Admin |

### `getReserveOracle`

`function getReserveOracle() external view override returns (address)`

Returns the proxy address of the ReserveOracle (Will be used for reserves ERC20).

#### Return Values

| Type    | Description                                  |
| ------- | -------------------------------------------- |
| address | The address of the associated Reserve Oracle |

### getNFTOracle

`function getNFTOracle() external view override returns (address)`

Returns the proxy address of the NFTOracle (Will be used for collateral ERC721)

#### Return Values

| Type    | Description                              |
| ------- | ---------------------------------------- |
| address | The address of the associated NFT Oracle |

### getLendPoolLoan

`function getLendPoolLoan() external view override returns (address)`

Returns the proxy address of the LendPoolLoan (Contract associated with the collaterals - loans).

#### Return Values

| Type    | Description                                |
| ------- | ------------------------------------------ |
| address | The address of the associated LendPoolLoan |

### getUNFTRegistry

`function getUNFTRegistry() external view override returns (address)`

Returns the proxy address of the UNFTRegistry.

#### Return Values

| Type    | Description                                |
| ------- | ------------------------------------------ |
| address | The address of the associated UNFTRegistry |

### getIncentivesController

`function getIncentivesController() external view override returns (address)`

Returns the latest deployed address of the IncentivesController.

#### Return Values

| Type    | Description                                          |
| ------- | ---------------------------------------------------- |
| address | The address of the associated Incentives Controller. |

### getUIDataProvider

`function getUIDataProvider() external view override returns (address)`

Returns the proxy address of the UIDataProvider.

#### Return Values

| Type    | Description                                   |
| ------- | --------------------------------------------- |
| address | The address of the associated UIDataProvider. |

### getUnlockdDataProvider

`function getUnlockdDataProvider() external view override returns (address)`

Returns the proxy address of the UnlockdDataProvider.

#### Return Values

| Type    | Description                                        |
| ------- | -------------------------------------------------- |
| address | The address of the associated UnlockdDataProvider. |

### getWalletBalanceProvider

`function getWalletBalanceProvider() external view override returns (address)`

Returns the latest deployed address of the WalletBalanceProvider.

#### Return Values

| Type    | Description                                          |
| ------- | ---------------------------------------------------- |
| address | The address of the associated WalletBalanceProvider. |

### getImplementation

`function getImplementation(address proxyAddress) external view onlyOwner returns (address)`

Returns the latest deployed Implementation address for the given proxy address.

#### Call Params

| Name         | Type    | Description                                                           |
| ------------ | ------- | --------------------------------------------------------------------- |
| proxyAddress | address | the proxy address will return the associated implementation contract. |

#### Return Values

| Type    | Description                                                 |
| ------- | ----------------------------------------------------------- |
| address | The implementation address of the associated proxy Address. |

## Write Methods

### setMarketId

`function setMarketId(string memory marketId) external override onlyOwner`

Set/update the id (Identifier) of the Unlockd market.

#### Call Params

| Name     | Type   | Description              |
| -------- | ------ | ------------------------ |
| marketId | string | the new id of the market |

### setAddressAsProxy

`function setAddressAsProxy(bytes32 id, address implementationAddress, bytes memory encodedDataCall) external override onlyOwner`

Set/update the implementation address of a specified proxied protocol contract

#### Call Params

| Name                  | Type    | Description                                                             |
| --------------------- | ------- | ----------------------------------------------------------------------- |
| id                    | bytes32 | the id of Proxy contract                                                |
| implementationAddress | address | the address of the new implementation contract for the specified proxy. |
| encodedDataCall       | bytes   | \[]                                                                     |

### setAddress

`function setAddress(bytes32 id, address newAddress) external override onlyOwner`

Sets the address of a protocol contract stored at a given id.

#### Call Params

| Name       | Type    | Description                                              |
| ---------- | ------- | -------------------------------------------------------- |
| id         | bytes32 | keccak256 hash of UTF8Bytes string representing Contract |
| newAddress | address | The new address to be set corresponding to the id        |

### setLendPoolImpl

`function setLendPoolImpl(address pool, bytes memory encodedCallData) external override onlyOwner`

Sets/Update the implementation address of the LendPool proxy contract.

#### Call Params

| Name            | Type    | Description                             |
| --------------- | ------- | --------------------------------------- |
| pool            | address | the new lendpool implementation address |
| encodedCallData | bytes   | \[]                                     |

### setLendPoolConfiguratorImpl

`function setLendPoolConfiguratorImpl(address configurator, bytes memory encodedCallData) external override onlyOwner`

Sets/updates the implementation address of the LendPoolConfigurator proxy contract.

#### Call Params

| Name            | Type    | Description                                         |
| --------------- | ------- | --------------------------------------------------- |
| configurator    | address | the new lendPoolConfigurator implementation address |
| encodedCallData | bytes   | \[]                                                 |

### setPoolAdmin

`function setPoolAdmin(address admin) external override onlyOwner`

Sets/updates the LendPoolAdmin wallet or contract address.

#### Call Params

| Name  | Type    | Description                                      |
| ----- | ------- | ------------------------------------------------ |
| admin | address | the new LendPoolAdmin wallet or contract address |

### setEmergencyAdmin

`function setEmergencyAdmin(address emergencyAdmin) external override onlyOwner`

Sets/updates the EmergencyAdmin wallet or contract address.

#### Call Params

| Name           | Type    | Description                                       |
| -------------- | ------- | ------------------------------------------------- |
| emergencyAdmin | address | the new EmergencyAdmin wallet or contract address |

### setReserveOracle

`function setReserveOracle(address reserveOracle) external override onlyOwner`

Sets/updates the ReserveOracle implementation address.

#### Call Params

| Name          | Type    | Description                                   |
| ------------- | ------- | --------------------------------------------- |
| reserveOracle | address | the new Reserve Oracle implementation address |

### setNFTOracle

`function setNFTOracle(address nftOracle) external override onlyOwner`

Sets/updates the NFTOracle implementation address.

#### Call Params

| Name      | Type    | Description                                |
| --------- | ------- | ------------------------------------------ |
| nftOracle | address | the new NFT Oracle implementation address. |

### setLendPoolLoanImpl

`function setLendPoolLoanImpl(address loanAddress, bytes memory encodedCallData) external override onlyOwner`

Sets/updates the LendPoolLoan implementation address.

#### Call Params

| Name            | Type    | Description                                  |
| --------------- | ------- | -------------------------------------------- |
| loanAddress     | address | the new LendPool Loan implementation address |
| encodedCallData | bytes   | \[]                                          |

### setUNFTRegistry

`function setUNFTRegistry(address factory) external override onlyOwner`

Sets/updates the new unftRegisty contract address.

#### Call Params

| Name    |         |                                       |
| ------- | ------- | ------------------------------------- |
| factory | address | the new UNFT Registy contract address |

### setIncentivesController

`function setIncentivesController(address controller) external override onlyOwner`

Sets/updates the new Incentives Controller wallet or contract address.

#### Call Params

| Name       | Type    | Description                                               |
| ---------- | ------- | --------------------------------------------------------- |
| controller | address | the new Incentives Controller wallet or contract address. |

### setUIDataProvider

`function setUIDataProvider(address provider) external override onlyOwner`

Sets/updates the new UIDataProvider contract address.

#### Call Params

| Name     | Type    | Description                               |
| -------- | ------- | ----------------------------------------- |
| provider | address | the new UI Data Provider contract address |

### setUnlockdDataProvider

`function setUnlockdDataProvider(address provider) external override onlyOwner`

Sets/updates the new Unlockd Data Provider contract address.

#### Call Params

| Name     | Type    | Description                                    |
| -------- | ------- | ---------------------------------------------- |
| provider | address | the new Unlockd Data Provider contract address |

### setWalletBalanceProvider

`function setWalletBalanceProvider(address provider) external override onlyOwner`

Sets/updates the new WalletBalanceProvider wallet or contract address.

#### Call Params

| Name     | Type    | Description                                                 |
| -------- | ------- | ----------------------------------------------------------- |
| provider | address | the new Wallet Balance Provider wallet or contract address. |


---

# 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://devs.unlockd.finance/unlockd-for-devs-v1/the-core-protocol/lendpool-address-provider.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.
