# Treasury

This contract is a contract that manages airdrop operation. Operators with authority can set up and execute airdrops through Treasury Contract.

## Code

Github Link: (Will be updated after official launch)

## Address

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

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

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

## Events

**ChangeCreationFee**&#x20;

```solidity
event ChangeCreationFee(uint fee);
```

* Event that occurs when the creation fee (MESH) is changed

**SetOperator**

```solidity
event SetOperator(address operator, bool valid);
```

* Event that occurs when setting operator

**CreateDistribution**

```solidity
event CreateDistribution(address operator, address token, uint totalAmount, uint blockAmount, uint blockNumber, address[] targets, uint[] rates);
```

* Event that occurs when airdrop is set

**RemoveDistribution**

```solidity
event RemoveDistribution(address operator, address token);
```

* Event that occurs when airdrop is removed

**Deposit**

```solidity
event Deposit(address operator, address token, uint amount);
```

* Event that occurs when token deposit

**RefixBlockAmount**

```solidity
event RefixBlockAmount(address operator, address token, uint blockAmount);
```

* Event that occurs when airdrop distribution amount

**RefixDistributionRate**

```solidity
event RefixDistributionRate(address operator, address token, address[] targets, uint[] rates);
```

* Event that occurs when airdrop distribution rate

{% endtab %}

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

## Read-Only Functions

distributionCount&#x20;

* Number of airdrop&#x20;

distributionEntries

* mapping(address => mapping(uint => address))
* Number of distribution address each LP

distributionOperator

* mapping (address => address)
* Operator address each distribution address

fee

* Distribution create fee

owner

* owner
  {% endtab %}

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

## **State-Changing Functions**

**changeCreationFee**

```solidity
function changeCreationFee(uint _fee) public 
```

* Method of creation fee (KSP) change
* only Owner&#x20;

**claim**

```solidity
function claim(address target) public
```

* Method that a user calls to claim the claimable airdrop tokens that has accumulated for the pair
* Parameters
  * `target` : LP address

**createTokenDistribution**

```solidity
function createTokenDistribution(address token, uint amount, uint blockAmount, uint blockNumber, address[] memory targets, uint[] memory rates) public
```

* Method of ERC-20 distribution create
* only Operator

**depositToken**

```solidity
function depositToken(address token, uint amount) public
```

* Method of ERC-20 deposit to airdrop
* only Operator

**refixBlockAmount**

```solidity
function refixBlockAmount(address token, uint blockAmount) public
```

* Method of change the amount paid per block
* only Operator

**refixDistributionRate**

```solidity
function refixDistributionRate(address token, address[] memory targets, uint[] memory rates) public
```

* Method of airdrop distribution rate change
* only Operator

**removeDistribution**

```solidity
function removeDistribution(address operator, address token) public
```

* Method of airdrop distribution remove
* only Operator

{% endtab %}
{% endtabs %}
