# FlashStrategySushiSwap









## Methods

### burnFToken

```solidity
function burnFToken(uint256 _amount, uint256 _minimumReturned, address _yieldTo) external nonpayable returns (uint256)
```

This is the function the user will be calling when performing a FlashBurn.

*It is responsible for burning the fToken supplied by the user and returning yield to the user.*

#### Parameters

| Name | Type | Description |
|---|---|---|
| _amount | uint256 | undefined |
| _minimumReturned | uint256 | undefined |
| _yieldTo | address | undefined |

#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | uint256 | undefined |

### depositPrincipal

```solidity
function depositPrincipal(uint256 _amount) external nonpayable returns (uint256)
```

This function will be called whenever a user stakes via the Flash Protocol.

*The Strategy owner can choose to implement a fee but the resulting &quot;locked&quot; principal the user should expect  after the stake has ended must be returned.*

#### Parameters

| Name | Type | Description |
|---|---|---|
| _amount | uint256 | undefined |

#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | uint256 | undefined |

### fToken

```solidity
function fToken() external view returns (address)
```

address of fERC20 for this strategy




#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |

### factory

```solidity
function factory() external view returns (address)
```






#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |

### flashProtocol

```solidity
function flashProtocol() external view returns (address)
```

address of FlashProtocol




#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |

### flpToken

```solidity
function flpToken() external view returns (address)
```

address of FarmingLPToken




#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |

### getMaxStakeDuration

```solidity
function getMaxStakeDuration() external pure returns (uint256)
```






#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | uint256 | undefined |

### getPrincipalAddress

```solidity
function getPrincipalAddress() external view returns (address)
```






#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | address | address of LP Token |

### getPrincipalBalance

```solidity
function getPrincipalBalance() external view returns (uint256)
```






#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | uint256 | amount of principal tokens that are currently deposited |

### getYieldBalance

```solidity
function getYieldBalance() external view returns (uint256)
```






#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | uint256 | amount of yield tokens that can be rewarded in SUSHI |

### initialize

```solidity
function initialize(address _flashProtocol, address _flpToken) external nonpayable
```





#### Parameters

| Name | Type | Description |
|---|---|---|
| _flashProtocol | address | undefined |
| _flpToken | address | undefined |

### quoteBurnFToken

```solidity
function quoteBurnFToken(uint256 _amount) external view returns (uint256)
```





#### Parameters

| Name | Type | Description |
|---|---|---|
| _amount | uint256 | undefined |

#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | uint256 | how many aLP rewards should be returned if _amount fERC20 tokens are burned |

### quoteMintFToken

```solidity
function quoteMintFToken(uint256 _amount, uint256 _duration) external pure returns (uint256 amountFToken)
```



*called by flashProtocol*

#### Parameters

| Name | Type | Description |
|---|---|---|
| _amount | uint256 | undefined |
| _duration | uint256 | undefined |

#### Returns

| Name | Type | Description |
|---|---|---|
| amountFToken | uint256 | how many fTokens should be minted for a given _amount and _duration (in seconds) |

### setFTokenAddress

```solidity
function setFTokenAddress(address _fTokenAddress) external nonpayable
```



*called by flashProtocol*

#### Parameters

| Name | Type | Description |
|---|---|---|
| _fTokenAddress | address | undefined |

### sushi

```solidity
function sushi() external view returns (address)
```

address of SUSHI token




#### Returns

| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |

### withdrawPrincipal

```solidity
function withdrawPrincipal(uint256 _amount) external nonpayable
```

This function should withdraw principal from the underlying strategy.



#### Parameters

| Name | Type | Description |
|---|---|---|
| _amount | uint256 | undefined |



## Events

### BurnedFToken

```solidity
event BurnedFToken(address indexed _address, uint256 _tokenAmount, uint256 _yieldReturned)
```





#### Parameters

| Name | Type | Description |
|---|---|---|
| _address `indexed` | address | undefined |
| _tokenAmount  | uint256 | undefined |
| _yieldReturned  | uint256 | undefined |

### Initialized

```solidity
event Initialized(uint8 version)
```





#### Parameters

| Name | Type | Description |
|---|---|---|
| version  | uint8 | undefined |



## Errors

### AmountTooLow

```solidity
error AmountTooLow()
```






### Forbidden

```solidity
error Forbidden()
```






### InsufficientTotalSupply

```solidity
error InsufficientTotalSupply()
```






### InsufficientYield

```solidity
error InsufficientYield()
```






### InvalidVault

```solidity
error InvalidVault()
```







