# MockFeeManager v0.2.7 API Reference
Source: https://docs.chain.link/chainlink-local/api-reference/v0.2.7/mock-fee-manager

> For the complete documentation index, see [llms.txt](/llms.txt).

> **NOTE: Integrate Chainlink Local into your project**
>
> ### npm
>
> If you use [NPM](https://www.npmjs.com/), install the [@chainlink/local NPM
> package](https://www.npmjs.com/package/@chainlink/local):
>
> ```shell
> npm install @chainlink/local@0.2.7
> ```
>
> ### yarn
>
> If you use [Yarn](https://yarnpkg.com/), install the [@chainlink/local NPM
> package](https://www.npmjs.com/package/@chainlink/local):
>
> ```shell
> yarn add @chainlink/local@0.2.7
> ```
>
> ### foundry
>
> If you use [Foundry](https://book.getfoundry.sh/):
>
> ```shell
> forge install smartcontractkit/chainlink-local@v0.2.7
> ```
>
> and then set remappings to: `@chainlink/local/=lib/chainlink-local/` in either `remappings.txt` or `foundry.toml` file
>
> ### RemixIDE
>
> Import the `CCIPLocalSimulator` contract from the `@chainlink/local` package:
>
> ```solidity
> import {CCIPLocalSimulator} from "@chainlink/local@0.2.7/src/ccip/CCIPLocalSimulator.sol";
> ```

## MockFeeManager

Mock verifier fee manager.

[MockFeeManager](https://github.com/smartcontractkit/chainlink-local/blob/v0.2.7/src/data-streams/MockFeeManager.sol)

## Structs

### Asset

```solidity
struct Asset {
  address assetAddress;
  uint256 amount;
}
```

## Variables

### i\_linkAddress

```solidity
address i_linkAddress
```

### i\_nativeAddress

```solidity
address i_nativeAddress
```

### i\_proxyAddress

```solidity
address i_proxyAddress
```

### i\_rewardManager

```solidity
contract IRewardManager i_rewardManager
```

### s\_mockDiscounts

```solidity
mapping(address => uint256) s_mockDiscounts
```

### s\_nativeSurcharge

```solidity
uint256 s_nativeSurcharge
```

## Errors

### ExpiredReport

```solidity
error ExpiredReport()
```

### InvalidAddress

```solidity
error InvalidAddress()
```

### InvalidDeposit

```solidity
error InvalidDeposit()
```

### InvalidDiscount

```solidity
error InvalidDiscount()
```

### InvalidQuote

```solidity
error InvalidQuote()
```

### InvalidSurcharge

```solidity
error InvalidSurcharge()
```

### Unauthorized

```solidity
error Unauthorized()
```

## Functions

### \_processFee

```solidity
function _processFee(bytes payload, bytes parameterPayload, address subscriber) internal
```

### constructor

```solidity
constructor(address linkAddress, address nativeAddress, address proxyAddress, address rewardManager) public
```

### getFeeAndReward

```solidity
function getFeeAndReward(address subscriber, bytes report, address quoteAddress) public view returns (struct Common.Asset, struct Common.Asset, uint256)
```

### getMockDiscount

```solidity
function getMockDiscount(address subscriber) external view returns (uint256)
```

### processFee

```solidity
function processFee(bytes payload, bytes parameterPayload, address subscriber) external payable
```

### processFeeBulk

```solidity
function processFeeBulk(bytes[] payloads, bytes parameterPayload, address subscriber) external payable
```

### setMockDiscount

```solidity
function setMockDiscount(address subscriber, uint256 discount) external
```

### setNativeSurcharge

```solidity
function setNativeSurcharge(uint64 surcharge) external
```

### supportsInterface

```solidity
function supportsInterface(bytes4 interfaceId) external pure returns (bool)
```

\_Returns true if this contract implements the interface defined by
`interfaceId`. See the corresponding
[https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified\[EIP](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified\[EIP)
section] to learn more about how these ids are created.

This function call must use less than 30 000 gas.\_