# ReservesSetupHelper

{% hint style="info" %}
This contract is a **helper tool** for configuring multiple reserves in one call, instead of manually calling the PoolConfigurator asset by asset. It streamlines the process of setting **caps, LTV, liquidation parameters, borrowing rules, and flash loan support**.
{% endhint %}

#### Functions

* **configureReserves(PoolConfigurator configurator, ConfigureReserveInput\[] inputParams)** Sets up or updates the configuration of reserves in the protocol through the `PoolConfigurator`.
  * `configurator`: The PoolConfigurator contract that manages protocol reserve settings.
  * `inputParams`: Array of configuration objects containing:
    * `asset`: Address of the reserve (e.g., DAI, USDC).
    * `baseLTV`: Loan-to-Value ratio (how much can be borrowed against collateral).
    * `liquidationThreshold`: Percentage threshold before liquidation occurs.
    * `liquidationBonus`: Bonus given to liquidators.
    * `reserveFactor`: Portion of interest redirected to the protocol.
    * `borrowCap`: Maximum borrow limit.
    * `supplyCap`: Maximum supply limit.
    * `stableBorrowingEnabled`: If stable rate borrowing is allowed.
    * `borrowingEnabled`: If borrowing is enabled at all.
    * `flashLoanEnabled`: If flash loans are enabled for this asset.

***

* **owner() → address** Returns the current owner (admin) of the helper contract.
* **renounceOwnership()** Allows the current owner to give up control of the contract.
* **transferOwnership(address newOwner)** Transfers contract ownership to `newOwner`.

***

**Events**

* **OwnershipTransferred(previousOwner, newOwner)** Triggered when ownership of the contract is moved from one address to another.

```
[
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "inputs": [
      { "internalType": "contract PoolConfigurator", "name": "configurator", "type": "address" },
      {
        "components": [
          { "internalType": "address", "name": "asset", "type": "address" },
          { "internalType": "uint256", "name": "baseLTV", "type": "uint256" },
          { "internalType": "uint256", "name": "liquidationThreshold", "type": "uint256" },
          { "internalType": "uint256", "name": "liquidationBonus", "type": "uint256" },
          { "internalType": "uint256", "name": "reserveFactor", "type": "uint256" },
          { "internalType": "uint256", "name": "borrowCap", "type": "uint256" },
          { "internalType": "uint256", "name": "supplyCap", "type": "uint256" },
          { "internalType": "bool", "name": "stableBorrowingEnabled", "type": "bool" },
          { "internalType": "bool", "name": "borrowingEnabled", "type": "bool" },
          { "internalType": "bool", "name": "flashLoanEnabled", "type": "bool" }
        ],
        "internalType": "struct ReservesSetupHelper.ConfigureReserveInput[]",
        "name": "inputParams",
        "type": "tuple[]"
      }
    ],
    "name": "configureReserves",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": "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/reservessetuphelper.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.
