# xWin BuddyChef (Legacy)

### xWinBuddyChef

#### UserInfo

```solidity
struct UserInfo {
  uint256 amount;
  uint256 rewardDebt;
}
```

#### PoolInfo

```solidity
struct PoolInfo {
  contract IERC20Upgradeable lpToken;
  contract IERC20Upgradeable rewardToken;
  uint256 endPeriod;
  uint256 lastRewardBlock;
  uint256 accCakePerShare;
  uint256 tokenPerBlock;
  uint256 totalStaked;
  uint256 totalBuddyTokens;
}
```

#### xWinPriceMaster

```solidity
contract IxWinPriceMaster xWinPriceMaster
```

#### usdtToken

```solidity
address usdtToken
```

#### devAddress

```solidity
address devAddress
```

#### poolInfo

```solidity
struct xWinBuddyChef.PoolInfo[] poolInfo
```

#### devFee

```solidity
uint256 devFee
```

#### startBlock

```solidity
uint256 startBlock
```

#### BONUS\_MULTIPLIER

```solidity
uint256 BONUS_MULTIPLIER
```

#### blocksPerDay

```solidity
uint256 blocksPerDay
```

#### userInfo

```solidity
mapping(uint256 => mapping(address => struct xWinBuddyChef.UserInfo)) userInfo
```

mapping of a nft token to its current properties

#### Deposit

```solidity
event Deposit(address user, uint256 pid, uint256 amount)
```

#### Withdraw

```solidity
event Withdraw(address user, uint256 pid, uint256 amount)
```

#### EmergencyWithdraw

```solidity
event EmergencyWithdraw(address user, uint256 pid, uint256 amount)
```

#### Received

```solidity
event Received(address, uint256)
```

#### initialize

```solidity
function initialize(address _devAddress, address _xWinPriceMaster, address _usdtToken, uint256 _blocksPerDay) public
```

#### poolLength

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

#### stopPool

```solidity
function stopPool(uint256 _pid) public
```

#### updateDevAddress

```solidity
function updateDevAddress(address _devAdd) public
```

#### \_stopPool

```solidity
function _stopPool(uint256 _pid) internal
```

#### add

```solidity
function add(contract IERC20Upgradeable _lpToken, contract IERC20Upgradeable _rewardToken, uint256 _duration, uint256 _totalBuddyTokens) public
```

#### set

```solidity
function set(uint256 _pid, uint256 _newDuration, uint256 _totalBuddyTokens, uint256 _amountToAdd) public
```

#### pendingRewards

```solidity
function pendingRewards(uint256 _pid, address _user) public view returns (uint256)
```

#### getMultiplier

```solidity
function getMultiplier(uint256 _from, uint256 _to, uint256 _endBlock) public view returns (uint256)
```

#### massUpdatePools

```solidity
function massUpdatePools() public
```

#### updatePool

```solidity
function updatePool(uint256 _pid) public
```

#### harvestAll

```solidity
function harvestAll() public
```

#### deposit

```solidity
function deposit(uint256 _pid, uint256 _amount) public
```

#### \_deposit

```solidity
function _deposit(uint256 _pid, uint256 _amount) internal
```

#### withdraw

```solidity
function withdraw(uint256 _pid, uint256 _amount) public
```

#### safeTokenTransfer

```solidity
function safeTokenTransfer(contract IERC20Upgradeable rewardToken, address _to, uint256 _amount) internal
```

#### emergencyWithdraw

```solidity
function emergencyWithdraw(uint256 _pid) public
```

#### setPriceMaster

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

#### setUSDToken

```solidity
function setUSDToken(address _newUSDAddr) external
```

#### setDevFee

```solidity
function setDevFee(uint256 _newDevFee) external
```

#### setBonusMultiplier

```solidity
function setBonusMultiplier(uint256 _newMultiplier) external
```

#### setBlocksPerDay

```solidity
function setBlocksPerDay(uint256 _newBlocksPerDay) external
```
