# 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

* Cypress : 0x29990aaF04f3D5Ac7d8C88beab1A009C1Ab4936e

## 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 (KSP) 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

**createKlayDistribution**

```solidity
function createKlayDistribution(uint blockAmount, uint blockNumber, address[] memory targets, uint[] memory rates) public payable
```

* Method of KLAY distribution create
* only Operator

**createTokenDistribution**

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

* Method of KIP7 distribution create
* only Operator

**depositKlay**

```solidity
function depositKlay() public payable
```

* Method of KLAY deposit to airdrop
* only Operator

**depositToken**

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

* Method of KIP7 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 %}
