> ## Documentation Index
> Fetch the complete documentation index at: https://docs.unvest.io/llms.txt
> Use this file to discover all available pages before exploring further.

# IFeeManager.sol

# IFeeManager

[Git Source](https://github.com/Unvest/protocol/blob/10af66632cb2249fdd76dc9760d2679b39ca2a8f/src/interfaces/IFeeManager.sol)

*Interface that describes the struct and accessor function for the data related to the collection of fees.*

## Functions

### creationFeeData

Exposes the creation fee for new `VestingToken`s deployments.

*Enabled custom fees overrides the global creation fee.*

```solidity theme={null}
function creationFeeData(address underlyingToken)
    external
    view
    returns (address feeCollector, uint64 creationFeeValue);
```

**Parameters**

| Name              | Type      | Description                       |
| ----------------- | --------- | --------------------------------- |
| `underlyingToken` | `address` | Address of the `underlyingToken`. |

### transferFeeData

Exposes the transfer fee for `VestingToken`s to consume.

*Enabled custom fees overrides the global transfer fee.*

```solidity theme={null}
function transferFeeData(address underlyingToken)
    external
    view
    returns (address feeCollector, uint64 transferFeePercentage);
```

**Parameters**

| Name              | Type      | Description                       |
| ----------------- | --------- | --------------------------------- |
| `underlyingToken` | `address` | Address of the `underlyingToken`. |

### claimFeeData

Exposes the claim fee for `VestingToken`s to consume.

*Enabled custom fees overrides the global claim fee.*

```solidity theme={null}
function claimFeeData(address underlyingToken) external view returns (address feeCollector, uint64 claimFeeValue);
```

**Parameters**

| Name              | Type      | Description                       |
| ----------------- | --------- | --------------------------------- |
| `underlyingToken` | `address` | Address of the `underlyingToken`. |

## Structs

### FeeData

*The `FeeData` struct is used to store fee configurations such as the collection address and fee amounts for
various transaction types in the contract.*

```solidity theme={null}
struct FeeData {
    address feeCollector;
    uint64 creationFee;
    uint64 transferFeePercentage;
    uint64 claimFee;
}
```

### UpcomingFeeData

*Stores global fee data upcoming change and timestamp for that change.*

```solidity theme={null}
struct UpcomingFeeData {
    uint64 nextValue;
    uint64 valueChangeAt;
}
```

### CustomFeeData

*Stores custom fee data, including its current state, upcoming changes, and the timestamps for those
changes.*

```solidity theme={null}
struct CustomFeeData {
    bool isEnabled;
    uint64 value;
    uint64 nextValue;
    uint64 valueChangeAt;
    bool nextEnableState;
    uint64 statusChangeAt;
}
```
