# PoolVoting

&#x20;This contract manages meshswap's liquidity pool voting, pool-wide voting information, and pool voting rankings. As a reward for pool voters, 50% of pool transaction fees are distributed according to their voting stake.

## Code

Github Link: (Will be updated after official launch)

## Address

* Polygon Mainnet : [0x705b40af8cecd59406cf630ab7750055c9b137b9](https://polygonscan.com/address/0x705b40af8cecd59406cf630ab7750055c9b137b9)

## Events, Read-Only Functions, and State-Changing Functions

{% tabs %}
{% tab title="Events" %}

## Events

**AddVoting**

```solidity
event AddVoting(address user, address exchange, uint amount);
```

* Event log of voting vMESH for pool
* The amount can be entered in integer units&#x20;

**RemoveVoting**

```solidity
event RemoveVoting(address user, address exchange, uint amount);
```

* Event log of remove voting vMESH for pool&#x20;
* The amount can be entered in integer units within the voting limit.

**GiveReward**

```solidity
event GiveReward(address user, address exchange, address token, uint amount, uint lastIndex, uint rewardSum);
```

* Event that occurs when a transaction fee reward is paid to voters

**SetValidToken**

```solidity
event SetValidToken(address token, bool valid);
```

* Event that occurs when the token level is set to B through voting

**SetBoostingToken**

```solidity
event SetBoostingToken(address token, bool valid);
```

* Event that occurs when the token level is set to A through voting or through contract owner
  {% endtab %}

{% tab title="Read-Only Functions" %}

## Read-Only Functions

**isValidPool**

* Returns if the pool is MESH paid reward pool

**MAX\_VOTING\_POOL\_COUNT**

* Maximum number of pools where users can vote&#x20;

**poolAmount**

* Total number of vMESH per LP

**poolCount**

* Total number of LP

**poolRanking**

* LP Ranking

**userVotingPoolCount**

* Total number of pools voted by user

**validPoolCount**

* Number of voting pools

**boostingPowerMESH\_A**

* Voting Weights for MESH and grade A tokens

**boostingPowerMESH\_B**

* Voting Weights for MESH and grade B tokens

**boostingPowerA\_A**

* Voting Weights for grade A and grade A tokens

**boostingPowerA\_B**

* Voting Weights for grade A and grade B tokens

#### getPoolBoosting

```
function getPoolBosting(address pool) public view returns (uint)
```

* Voting Weights for target pool

#### prevPoolAmount

```
function prevPoolAmount(uint256 epoch, address pool) public view returns (uint)
```

* Previous pool voting amount by epoch

#### prevValidPool

```
function prevValidPool(uint256 epoch, address pool) public view returns (bool)
```

* Previous pool valid status by epoch

#### isBoostingToken

```
function isBoostingToken(address token) public view returns (bool)
```

* Returns whether it is a grade A token

#### isValidToken

```
function isValidToken(address token) public view returns (bool)
```

* Returns whether it is a grade A token

#### userVotingPoolAmount

```
function userVotingPoolAmount(address user, uint256 poolIndex) public view returns (uint256)
```

* Number of user votes for each PoolIndex

#### userVotingPoolAddress

```
function userVotingPoolAddress(address user, uint256 poolIndex) public view returns (address)
```

* Address of user votes for each PoolIndex
  {% endtab %}

{% tab title="State-Changing Functions" %}

## **State-Changing Functions**

**addVoting**

```solidity
function addVoting(address exchange, uint amount) public
```

* Method to voting vMESH for pool
* The amount can be entered in integer units &#x20;

**removeVoting**

```solidity
function removeVoting(address exchange, uint amount) public
```

* Method to remove voting vMESH for pool
* The amount can be entered in integer units within the voting limit

**claimReward**

```solidity
function claimReward(address exchange) public 
```

* Method of vote pool’s transaction fee reward&#x20;

**claimRewardAll**

```solidity
function claimRewardAll() public
```

* Method of all vote pool’s transaction fee reward&#x20;

**removeAllVoting**

```solidity
function removeAllVoting() public
```

* Method of remove vote pool’s

**delisting**

```solidity
function delisting(address token) public
```

* Method of converts a grade B token to a grade C token
* Automatically registered as a voting agenda after a set period of governance

**setBoostingToken**

```solidity
function setBoostingToken(address token, bool valid) public
```

* Method of token level set to A grade
* Only governance

**setValidToken**

```solidity
function setValidToken(address token, bool valid) public
```

* Method of token level set to B grade
* Only governance
  {% endtab %}
  {% endtabs %}


---

# 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://docs.meshswap.fi/developers/contract/poolvoting.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.
