# PoolLogger

{% embed url="<https://github.com/pangea-protocol/pangea-core/blob/main/contracts/pool/PoolLogger.sol>" %}

## Overview

Contracts issue event information when a major transaction occurs. Pangea's pool also issues an event when the following major transactions occur :

* When swap takes place
* When liquidity is added or removed
* When fee is received
* When flash loan occurs

These events are not issued directly by the Pool contract, but are designed to be issued by delegating to the PoolLogger contract.

PoolLogger acts as a data hub for Pangea contracts. Through the Pool Logger contract, you can easily track all transactions without having to check every single contract.

Furthermore, Pangea's PoolLogger is designed to be upgradable. If a function such as Oracle is later required, it can be done by modifying PoolLogger without modifying the Pool contract.

## Events

### Burn

```solidity
event Burn(address indexed pool, int24 lower, int24 upper, uint256 amount0, uint256 amount1, uint256 liquidity)
```

### Collect

```solidity
event Collect(address indexed pool, uint256 amount0, uint256 amount1)
```

### Create

```solidity
event Create(address indexed pool, address token0, address token1, uint24 swapFee, uint160 price, uint24 tickSpacing)
```

### Flash

```solidity
event Flash(address indexed pool, address indexed sender, uint256 amount0, uint256 amount1, uint256 paid0, uint256 paid1)
```

### Mint

```solidity
event Mint(address indexed pool, int24 lower, int24 upper, uint256 amount0, uint256 amount1, uint256 liquidity)
```

### Swap

```solidity
event Swap(address indexed pool, bool zeroForOne, uint256 amountIn, uint256 amountOut)
```
