# TermRepoLocker.sol

## TermRepoLocker

This is the contract in which Term Servicer locks collateral and purchase tokens

*This contract belongs to the Term Servicer group of contracts and is specific to a Term Repo deployment*

### ADMIN\_ROLE

```solidity
bytes32 ADMIN_ROLE
```

### DEVOPS\_ROLE

```solidity
bytes32 DEVOPS_ROLE
```

### INITIALIZER\_ROLE

```solidity
bytes32 INITIALIZER_ROLE
```

### SERVICER\_ROLE

```solidity
bytes32 SERVICER_ROLE
```

### termRepoId

```solidity
bytes32 termRepoId
```

### transfersPaused

```solidity
bool transfersPaused
```

### termContractPaired

```solidity
bool termContractPaired
```

### emitter

```solidity
contract ITermEventEmitter emitter
```

### whileTransfersNotPaused

```solidity
modifier whileTransfersNotPaused()
```

### notTermContractPaired

```solidity
modifier notTermContractPaired()
```

### constructor

```solidity
constructor() public
```

### initialize

```solidity
function initialize(string termRepoId_, address termInitializer_) external
```

### pairTermContracts

```solidity
function pairTermContracts(address termRepoCollateralManager_, address termRepoServicer_, contract ITermEventEmitter emitter_, address devopsMultisig_, address adminWallet_) external
```

### transferTokenFromWallet

```solidity
function transferTokenFromWallet(address originWallet, address token, uint256 amount) external
```

Locks tokens from origin wallet Reverts if caller doesn't have SERVICER\_ROLE

#### Parameters

| Name         | Type    | Description                              |
| ------------ | ------- | ---------------------------------------- |
| originWallet | address | The wallet from which to transfer tokens |
| token        | address | The address of token being transferred   |
| amount       | uint256 | The amount of tokens to transfer         |

### transferTokenToWallet

```solidity
function transferTokenToWallet(address destinationWallet, address token, uint256 amount) external
```

Unlocks tokens to destination wallet

*Reverts if caller doesn't have SERVICER\_ROLE*

#### Parameters

| Name              | Type    | Description                         |
| ----------------- | ------- | ----------------------------------- |
| destinationWallet | address | The wallet to unlock tokens into    |
| token             | address | The address of token being unlocked |
| amount            | uint256 | The amount of tokens to unlock      |

### pauseTransfers

```solidity
function pauseTransfers() external
```

### unpauseTransfers

```solidity
function unpauseTransfers() external
```

### \_authorizeUpgrade

```solidity
function _authorizeUpgrade(address impl) internal
```

*required override by the OpenZeppelin UUPS module*

#### Parameters

| Name | Type    | Description                        |
| ---- | ------- | ---------------------------------- |
| impl | address | new impl address for proxy upgrade |
