# TermVaultEventEmitter.sol#TermVaultEventEmitter

[Git Source](https://github.com/term-finance/yearn-v3-term-vault/blob/fdab68ac51eb0929f23686f72922fed45a3d7d1d/src/TermVaultEventEmitter.sol)

**Inherits:** Initializable, UUPSUpgradeable, AccessControlUpgradeable, [ITermVaultEvents](https://github.com/term-finance/term-finance-developer-docs/blob/main/src/interfaces/term/ITermVaultEvents.sol/interface.ITermVaultEvents.md)

## State Variables

### ADMIN\_ROLE

```solidity
bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE");
```

### DEVOPS\_ROLE

```solidity
bytes32 public constant DEVOPS_ROLE = keccak256("DEVOPS_ROLE");
```

### VAULT\_CONTRACT

```solidity
bytes32 public constant VAULT_CONTRACT = keccak256("VAULT_CONTRACT");
```

## Functions

### constructor

```solidity
constructor();
```

### initialize

Initializes the contract

*See: <https://docs.openzeppelin.com/contracts/4.x/upgradeable>*

```solidity
function initialize(address adminWallet_, address devopsWallet_) external initializer;
```

### pairVaultContract

```solidity
function pairVaultContract(address vaultContract) external onlyRole(ADMIN_ROLE);
```

### emitTermControllerUpdated

```solidity
function emitTermControllerUpdated(address oldController, address newController) external onlyRole(VAULT_CONTRACT);
```

### emitTimeToMaturityThresholdUpdated

```solidity
function emitTimeToMaturityThresholdUpdated(uint256 oldThreshold, uint256 newThreshold)
    external
    onlyRole(VAULT_CONTRACT);
```

### emitRequiredReserveRatioUpdated

```solidity
function emitRequiredReserveRatioUpdated(uint256 oldThreshold, uint256 newThreshold)
    external
    onlyRole(VAULT_CONTRACT);
```

### emitDiscountRateMarkupUpdated

```solidity
function emitDiscountRateMarkupUpdated(uint256 oldMarkup, uint256 newMarkup) external onlyRole(VAULT_CONTRACT);
```

### emitMinCollateralRatioUpdated

```solidity
function emitMinCollateralRatioUpdated(address collateral, uint256 minCollateralRatio)
    external
    onlyRole(VAULT_CONTRACT);
```

### emitRepoTokenConcentrationLimitUpdated

```solidity
function emitRepoTokenConcentrationLimitUpdated(uint256 oldLimit, uint256 newLimit) external onlyRole(VAULT_CONTRACT);
```

### emitDepositPaused

```solidity
function emitDepositPaused() external onlyRole(VAULT_CONTRACT);
```

### emitDepositUnpaused

```solidity
function emitDepositUnpaused() external onlyRole(VAULT_CONTRACT);
```

### emitDiscountRateAdapterUpdated

```solidity
function emitDiscountRateAdapterUpdated(address oldAdapter, address newAdapter) external onlyRole(VAULT_CONTRACT);
```

### emitRepoTokenBlacklistUpdated

```solidity
function emitRepoTokenBlacklistUpdated(address repoToken, bool blacklisted) external onlyRole(VAULT_CONTRACT);
```

### emitNewGovernor

```solidity
function emitNewGovernor(address newGovernor) external onlyRole(VAULT_CONTRACT);
```

### \_authorizeUpgrade

*required override by the OpenZeppelin UUPS module*

```solidity
function _authorizeUpgrade(address) internal view override onlyRole(DEVOPS_ROLE);
```


---

# 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://developers.term.finance/periphery-contracts/curated-vaults/solidity-api-latest/termvaulteventemitter.sol-termvaulteventemitter.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.
