# SommelierTurboGHOStrategy

## Overview

The SommelierTurboGHOStrategy contract is a strategy that supplies tokens into a Sommelier Vault to earn yield, with specific handling for GHO token conversions through Uniswap V3.

## Constants

```solidity
address constant gho = GHO_MAINNET;                                            // GHO token address
IUniswapV3Router constant router = IUniswapV3Router(UNISWAP_V3_ROUTER_MAINNET);  // Uniswap V3 router
```

## Functions

### Initialization Functions

#### initialize

```solidity
function initialize(
    IMaxApyVault _vault,
    address[] calldata _keepers,
    bytes32 _strategyName,
    address _strategist,
    ICellar _cellar
) public override initializer
```

Initializes the strategy with required components.

Parameters:

* `_vault`: MaxApy vault address
* `_keepers`: Array of keeper addresses
* `_strategyName`: Name of the strategy
* `_strategist`: Strategist address
* `_cellar`: Sommelier cellar address

### Core Functions

#### liquidateExact

```solidity
function liquidateExact(uint256 amountNeeded) external virtual override checkRoles(VAULT_ROLE) returns (uint256 loss)
```

Withdraws exactly amountNeeded to vault.

Parameters:

* `amountNeeded`: Amount to withdraw

Returns:

* `loss`: Amount of realized loss

### Internal Core Functions

#### \_divest

```solidity
function _divest(uint256 shares) internal override returns (uint256 withdrawn)
```

Withdraws assets from Cellar Vault.

Parameters:

* `shares`: Amount of shares to withdraw

Returns:

* `withdrawn`: Amount of assets received

#### \_swapGho

```solidity
function _swapGho(uint256 amountIn) internal returns (uint256)
```

Swaps GHO tokens to underlying using Uniswap V3.

Parameters:

* `amountIn`: Amount of GHO to swap

Returns:

* Amount received after swap

### Internal View Functions

#### \_ghoBalance

```solidity
function _ghoBalance() internal view returns (uint256)
```

Returns the contract's GHO balance.

Returns:

* Current GHO balance
