# Registry

The Registry contract keeps a record of all valid contract addresses used by the protocol.

Registry.sol code can be [found on Github](https://github.com/APWine/core-v2/blob/main/src/Registry.sol).

## View Methods

### getFactory

```solidity
function getFactory() external view returns (address)
```

Returns the address of the associated [Factory](https://dev.spectra.finance/technical-reference/contract-functions/factory).

### getRouter

```solidity
function getRouter() external view returns (address)
```

Returns the address of the associated [Router](https://dev.spectra.finance/technical-reference/contract-functions/router).

### getPTBeacon

```solidity
function getPTBeacon() external view returns (address)
```

Returns the address of the PT Beacon that allows to upgrade the[ Principal Token](https://dev.spectra.finance/technical-reference/contract-functions/principal-token) implementation.

### getYTBeacon

```solidity
function getYTBeacon() external view returns (address)
```

Returns the address of the YT Beacon that allows to upgrade the[ Yield Token](https://dev.spectra.finance/technical-reference/contract-functions/principal-token) implementation.

### getTokenizationFee

```solidity
function getTokenizationFee() external view returns (uint256)
```

Return the tokenisation fee taken on deposited [IBTs](https://dev.spectra.finance/glossary#ibt) in the [Principal Token](https://dev.spectra.finance/technical-reference/contract-functions/principal-token) contract.

### getYieldFee

```solidity
function getYieldFee() external view returns (uint256)
```

Return the value of the fee taken on generated yield in the [Principal Token](https://dev.spectra.finance/technical-reference/contract-functions/principal-token) contract.

### getPTFlashLoanFee

```solidity
function getPTFlashLoanFee() external view returns (uint256)
```

Return the value of the fee taken for realizing a flash loan in the [Router](https://dev.spectra.finance/technical-reference/contract-functions/router) contract.

### getFeeCollector

```solidity
function getFeeCollector() external view returns (address)
```

Return the address allowed to claim the fees from the [PT](https://dev.spectra.finance/technical-reference/contract-functions/principal-token) contracts.

### getFeeReduction

```solidity
function getFeeReduction(address _pt, address _user) external view returns (uint256)
```

Get the fee reduction of the given `_user` for the given  `_pt` .

### isRegisteredPT

```solidity
function isRegisteredPT(address _future) external view returns (bool)
```

Returns true if an address is registered as a [PrincipalToken](https://dev.spectra.finance/technical-reference/contract-functions/principal-token).

### getPTAt

```solidity
function getPTAt(uint256 _index) external view returns (address)
```

Returns the address of the [PrincipalToken](https://dev.spectra.finance/technical-reference/contract-functions/principal-token) at `_index`.

### pTCount

```solidity
function pTCount() external view returns (uint256)
```

Returns the number of [PrincipalToken](https://dev.spectra.finance/technical-reference/contract-functions/principal-token) that are registered.
