# xWin Single Asset Ola

### xWinSingleAssetOla

#### swapEngine

```solidity
contract IxWinSwap swapEngine
```

#### xWinPriceMaster

```solidity
contract IxWinPriceMaster xWinPriceMaster
```

#### \_OlaFinance

```solidity
contract OlaFinance _OlaFinance
```

#### \_rainMaker

```solidity
contract RainMakerForOlaLens _rainMaker
```

#### lendingRewardToken

```solidity
contract IERC20Upgradeable lendingRewardToken
```

#### smallRatio

```solidity
uint256 smallRatio
```

#### executors

```solidity
mapping(address => bool) executors
```

#### SwitchProtocol

```solidity
event SwitchProtocol(address fromProtocol, address toProtocol)
```

#### onlyExecutor

```solidity
modifier onlyExecutor()
```

#### initialize

```solidity
function initialize(string name, string symbol, address _baseToken, address _USDTokenAddr, uint256 _managerFee, uint256 _performanceFee, uint256 _collectionPeriod, address _managerAddr) external
```

#### init

```solidity
function init(address _swapEngine, address _lendingRewardToken, address _xWinPriceMaster) external
```

#### updateProperties

```solidity
function updateProperties(address olaFinance_, address rainMaker_) external
```

#### getUserBalance

```solidity
function getUserBalance(address _user) public view returns (uint256)
```

#### getSupplyRatePerBlock

```solidity
function getSupplyRatePerBlock() public view returns (uint256)
```

#### getBorrowRatePerBlock

```solidity
function getBorrowRatePerBlock() public view returns (uint256)
```

#### getUnitPrice

```solidity
function getUnitPrice() public view returns (uint256)
```

The unitprice of a share of this fund in baseToken

#### \_getUnitPrice

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

#### \_getUnitPrice

```solidity
function _getUnitPrice(uint256 fundvalue) internal view returns (uint256)
```

#### getUnitPriceInUSD

```solidity
function getUnitPriceInUSD() public view returns (uint256)
```

The unitprice of a share of this fund, in stablecoinUSDAddr

#### deposit

```solidity
function deposit(uint256 _amount) external returns (uint256)
```

#### deposit

```solidity
function deposit(uint256 _amount, uint32 _slippage) public returns (uint256)
```

#### \_deposit

```solidity
function _deposit(uint256 _amount, uint32 _slippage) internal returns (uint256)
```

#### withdraw

```solidity
function withdraw(uint256 _amount) external returns (uint256)
```

#### withdraw

```solidity
function withdraw(uint256 _amount, uint32 _slippage) public returns (uint256)
```

#### \_withdraw

```solidity
function _withdraw(uint256 _amount, uint32 _slippage) internal returns (uint256)
```

#### getVaultValues

```solidity
function getVaultValues() external view returns (uint256 vaultValue)
```

Gets the total value of the tokens within the fund, value shown in baseToken

#### getVaultValuesInUSD

```solidity
function getVaultValuesInUSD() external view returns (uint256 vaultValue)
```

Gets the total value of the tokens within the fund, value shown in stablecoinUSDAddr

#### \_getVaultValues

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

#### \_getVaultValuesInUSD

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

#### canReclaimRainMaker

```solidity
function canReclaimRainMaker() public view returns (bool)
```

#### canSystemDeposit

```solidity
function canSystemDeposit() public view returns (bool)
```

#### systemDeposit

```solidity
function systemDeposit() external
```

#### emergencyUnWindPosition

```solidity
function emergencyUnWindPosition() external
```

#### reinvestClaimComp

```solidity
function reinvestClaimComp() public
```

#### getAccruedComp

```solidity
function getAccruedComp() public view returns (uint256)
```

#### getStrategyInfo

```solidity
function getStrategyInfo() external view returns (address targetaddress, address rewardaddress)
```

#### \_depositOla

```solidity
function _depositOla() internal
```

#### \_removeOla

```solidity
function _removeOla(uint256 _amount) internal
```

#### setExecutor

```solidity
function setExecutor(address _wallet, bool _allow) external
```

#### updateSmallRatio

```solidity
function updateSmallRatio(uint256 _ratio) external
```

*update small ratio*

#### setSwapEngine

```solidity
function setSwapEngine(address _newSwapEngine) external
```

#### setPriceMaster

```solidity
function setPriceMaster(address _newPriceMaster) external
```

#### setLendingRewardToken

```solidity
function setLendingRewardToken(address _newRewardToken) public
```

#### setRainMaker

```solidity
function setRainMaker(address rainMaker_) public
```
