# ConfigurationManager

The **ConfigurationManager** is the management layer of the protocol; it sets global or specific vault's parameters as a cap, withdraws fee, migration destination, and the `vaultController` role for each vault.

src: <https://github.com/pods-finance/yield-contracts/blob/main/contracts/configuration/ConfigurationManager.sol>

## View Methods

### getParameter

<https://github.com/pods-finance/yield-contracts/blob/main/contracts/configuration/ConfigurationManager.sol#L34>

```solidity
function getParameter(address target, bytes32 name) external view returns (uint256);
```

Retrieves the value of a parameter set to contract. If the value is not a uint256, you will need to perform encoding/decoding operations

**Parameters**

| Name   | Type    | Description                 |
| ------ | ------- | --------------------------- |
| target | address | The contract target address |
| name   | bytes32 | The parameter name          |

**Returns**

| Name | Type    | Description          |
| ---- | ------- | -------------------- |
| \_0  | uint256 | The stored parameter |

### getGlobalParameter

[https://github.com/pods-finance/yield-contracts/blob/main/contracts/configuration/ConfigurationManager.sol#L](https://github.com/pods-finance/yield-contracts/blob/main/contracts/configuration/ConfigurationManager.sol#L34)[40](https://github.com/pods-finance/yield-contracts/blob/main/contracts/configuration/ConfigurationManager.sol#L41)

```solidity
function getGlobalParameter(bytes32 name) external view returns (uint256);
```

Retrieves the value of a global parameter. If the value is not a uint256, you will need to perform encoding/decoding operations

**Parameters**

| Name | Type    | Description        |
| ---- | ------- | ------------------ |
| name | bytes32 | The parameter name |

**Returns**

| Name | Type    | Description          |
| ---- | ------- | -------------------- |
| \_0  | uint256 | The stored parameter |

### getCap

<https://github.com/pods-finance/yield-contracts/blob/main/contracts/configuration/ConfigurationManager.sol#L57>

```solidity
function getCap(address target) external view returns (uint256);
```

Retrieves the value of the cap set to a contract. If the value is not a uint256, you will need to perform encoding/decoding operations

**Parameters**

| Name   | Type    | Description                 |
| ------ | ------- | --------------------------- |
| target | address | The contract target address |

**Returns**

| Name | Type    | Description    |
| ---- | ------- | -------------- |
| \_0  | uint256 | The stored cap |

### getVaultMigration

<https://github.com/pods-finance/yield-contracts/blob/main/contracts/configuration/ConfigurationManager.sol#L73>

```solidity
function getVaultMigration(address oldVault) external view returns (address);
```

Retrieves the value of the destination contract of an original vault.

**Parameters**

| Name     | Type    | Description      |
| -------- | ------- | ---------------- |
| oldVault | address | The origin vault |

**Returns**

| Name | Type    | Description           |
| ---- | ------- | --------------------- |
| \_0  | address | The destination vault |

## Write Methods

### setParameter

<https://github.com/pods-finance/yield-contracts/blob/main/contracts/configuration/ConfigurationManager.sol#L22>

```solidity
function setParameter(address target, bytes32 name, uint256 value) external onlyOwner;
```

Set specific parameters to a contract or globally across multiple contracts. Use `address(0)` to set a global parameter.

**Parameters**

| Name   | Type    | Description                 |
| ------ | ------- | --------------------------- |
| target | address | The contract target address |
| name   | bytes32 | The parameter name          |
| value  | uint256 | The parameter value         |

### setCap

<https://github.com/pods-finance/yield-contracts/blob/main/contracts/configuration/ConfigurationManager.sol#L48>

```solidity
function setCap(address target, uint256 value) external onlyOwner;
```

Set the cap of a target vault.

**Parameters**

| Name   | Type    | Description                 |
| ------ | ------- | --------------------------- |
| target | address | The contract target address |
| value  | uint256 | The cap value               |

### setVaultMigration

<https://github.com/pods-finance/yield-contracts/blob/main/contracts/configuration/ConfigurationManager.sol#L64>

```solidity
function setVaultMigration(address oldVault, address newVault) external onlyOwner;
```

Sets the allowance to migrate to a `vault` address.

**Parameters**

| Name     | Type    | Description                                        |
| -------- | ------- | -------------------------------------------------- |
| oldVault | address | The current vault address                          |
| newVault | address | The vault where assets are going to be migrated to |


---

# 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.pods.finance/developers/smart-contracts-overview/configurationmanager.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.
