> For the complete documentation index, see [llms.txt](https://dev.abracadabra.money/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.abracadabra.money/token-related/mspell/mspellstaking.md).

# mSpellStaking

### `Constructor`[​](https://smart-docs.vercel.app/contract#constructor) <a href="#constructor" id="constructor"></a>

#### `nonpayable`[​](https://smart-docs.vercel.app/contract#constructor) <a href="#constructor" id="constructor"></a>

**Parameters**

| Name        | Type      |
| ----------- | --------- |
| **\_mim**   | `address` |
| **\_spell** | `address` |

### Functions[​](https://smart-docs.vercel.app/contract#functions) <a href="#functions" id="functions"></a>

* [ACC\_REWARD\_PER\_SHARE\_PRECISION](https://smart-docs.vercel.app/contract#ACC_REWARD_PER_SHARE_PRECISION)
* [accRewardPerShare](https://smart-docs.vercel.app/contract#accRewardPerShare)
* [claimOwnership](https://smart-docs.vercel.app/contract#claimOwnership)
* [deposit](https://smart-docs.vercel.app/contract#deposit)
* [emergencyWithdraw](https://smart-docs.vercel.app/contract#emergencyWithdraw)
* [lastRewardBalance](https://smart-docs.vercel.app/contract#lastRewardBalance)
* [mim](https://smart-docs.vercel.app/contract#mim)
* [owner](https://smart-docs.vercel.app/contract#owner)
* [pendingOwner](https://smart-docs.vercel.app/contract#pendingOwner)
* [pendingReward](https://smart-docs.vercel.app/contract#pendingReward)
* [spell](https://smart-docs.vercel.app/contract#spell)
* [toggleLockUp](https://smart-docs.vercel.app/contract#toggleLockUp)
* [toggleLockup](https://smart-docs.vercel.app/contract#toggleLockup)
* [transferOwnership](https://smart-docs.vercel.app/contract#transferOwnership)
* [updateReward](https://smart-docs.vercel.app/contract#updateReward)
* [userInfo](https://smart-docs.vercel.app/contract#userInfo)
* [withdraw](https://smart-docs.vercel.app/contract#withdraw)

***

#### `ACC_REWARD_PER_SHARE_PRECISIONview`[​](https://smart-docs.vercel.app/contract#ACC_REWARD_PER_SHARE_PRECISION) <a href="#acc_reward_per_share_precision" id="acc_reward_per_share_precision"></a>

**Parameters**

No parameters for this function.

**Return values**

| Name  | Type      |
| ----- | --------- |
| **/** | `uint256` |

#### `accRewardPerShareview`[​](https://smart-docs.vercel.app/contract#accRewardPerShare) <a href="#accrewardpershare" id="accrewardpershare"></a>

**Parameters**

No parameters for this function.

**Return values**

| Name  | Type      |
| ----- | --------- |
| **/** | `uint256` |

#### `claimOwnershipnonpayable`[​](https://smart-docs.vercel.app/contract#claimOwnership) <a href="#claimownership" id="claimownership"></a>

**Parameters**

No parameters for this function.

**Return values**

No return values for this function.

#### `depositnonpayable`[​](https://smart-docs.vercel.app/contract#deposit) <a href="#deposit" id="deposit"></a>

**Parameters**

| Name         | Type      |
| ------------ | --------- |
| **\_amount** | `uint256` |

**Return values**

No return values for this function.

#### `emergencyWithdrawnonpayable`[​](https://smart-docs.vercel.app/contract#emergencyWithdraw) <a href="#emergencywithdraw" id="emergencywithdraw"></a>

**Parameters**

No parameters for this function.

**Return values**

No return values for this function.

#### `lastRewardBalanceview`[​](https://smart-docs.vercel.app/contract#lastRewardBalance) <a href="#lastrewardbalance" id="lastrewardbalance"></a>

**Parameters**

No parameters for this function.

**Return values**

| Name  | Type      |
| ----- | --------- |
| **/** | `uint256` |

#### `mimview`[​](https://smart-docs.vercel.app/contract#mim) <a href="#mim" id="mim"></a>

**Parameters**

No parameters for this function.

**Return values**

| Name  | Type      |
| ----- | --------- |
| **/** | `address` |

#### `ownerview`[​](https://smart-docs.vercel.app/contract#owner) <a href="#owner" id="owner"></a>

**Parameters**

No parameters for this function.

**Return values**

| Name  | Type      |
| ----- | --------- |
| **/** | `address` |

#### `pendingOwnerview`[​](https://smart-docs.vercel.app/contract#pendingOwner) <a href="#pendingowner" id="pendingowner"></a>

**Parameters**

No parameters for this function.

**Return values**

| Name  | Type      |
| ----- | --------- |
| **/** | `address` |

#### `pendingRewardview`[​](https://smart-docs.vercel.app/contract#pendingReward) <a href="#pendingreward" id="pendingreward"></a>

**Parameters**

| Name       | Type      |
| ---------- | --------- |
| **\_user** | `address` |

**Return values**

| Name  | Type      |
| ----- | --------- |
| **/** | `uint256` |

#### `spellview`[​](https://smart-docs.vercel.app/contract#spell) <a href="#spell" id="spell"></a>

**Parameters**

No parameters for this function.

**Return values**

| Name  | Type      |
| ----- | --------- |
| **/** | `address` |

#### `toggleLockUpnonpayable`[​](https://smart-docs.vercel.app/contract#toggleLockUp) <a href="#togglelockup" id="togglelockup"></a>

**Parameters**

| Name       | Type   |
| ---------- | ------ |
| **status** | `bool` |

**Return values**

No return values for this function.

#### `toggleLockupview`[​](https://smart-docs.vercel.app/contract#toggleLockup) <a href="#togglelockup" id="togglelockup"></a>

**Parameters**

No parameters for this function.

**Return values**

| Name  | Type   |
| ----- | ------ |
| **/** | `bool` |

#### `transferOwnershipnonpayable`[​](https://smart-docs.vercel.app/contract#transferOwnership) <a href="#transferownership" id="transferownership"></a>

**Parameters**

| Name         | Type      |
| ------------ | --------- |
| **newOwner** | `address` |
| **direct**   | `bool`    |
| **renounce** | `bool`    |

**Return values**

No return values for this function.

#### `updateRewardnonpayable`[​](https://smart-docs.vercel.app/contract#updateReward) <a href="#updatereward" id="updatereward"></a>

**Parameters**

No parameters for this function.

**Return values**

No return values for this function.

#### `userInfoview`[​](https://smart-docs.vercel.app/contract#userInfo) <a href="#userinfo" id="userinfo"></a>

**Parameters**

| Name  | Type      |
| ----- | --------- |
| **/** | `address` |

**Return values**

| Name           | Type      |
| -------------- | --------- |
| **amount**     | `uint128` |
| **rewardDebt** | `uint128` |
| **lastAdded**  | `uint128` |

#### `withdrawnonpayable`[​](https://smart-docs.vercel.app/contract#withdraw) <a href="#withdraw" id="withdraw"></a>

**Parameters**

| Name         | Type      |
| ------------ | --------- |
| **\_amount** | `uint256` |

**Return values**

No return values for this function.

### Events (for EVM logging)[​](https://smart-docs.vercel.app/contract#events-for-evm-logging) <a href="#events-for-evm-logging" id="events-for-evm-logging"></a>

* [ClaimReward](https://smart-docs.vercel.app/contract#ClaimReward)
* [Deposit](https://smart-docs.vercel.app/contract#Deposit)
* [EmergencyWithdraw](https://smart-docs.vercel.app/contract#EmergencyWithdraw)
* [OwnershipTransferred](https://smart-docs.vercel.app/contract#OwnershipTransferred)
* [Withdraw](https://smart-docs.vercel.app/contract#Withdraw)

***

#### `ClaimReward`[​](https://smart-docs.vercel.app/contract#ClaimReward) <a href="#claimreward" id="claimreward"></a>

**Parameters**

| Name       | Type      | Indexed |
| ---------- | --------- | ------- |
| **user**   | `address` | `true`  |
| **amount** | `uint256` | `false` |

#### `Deposit`[​](https://smart-docs.vercel.app/contract#Deposit) <a href="#deposit" id="deposit"></a>

**Parameters**

| Name       | Type      | Indexed |
| ---------- | --------- | ------- |
| **user**   | `address` | `true`  |
| **amount** | `uint256` | `false` |

#### `EmergencyWithdraw`[​](https://smart-docs.vercel.app/contract#EmergencyWithdraw) <a href="#emergencywithdraw" id="emergencywithdraw"></a>

**Parameters**

| Name       | Type      | Indexed |
| ---------- | --------- | ------- |
| **user**   | `address` | `true`  |
| **amount** | `uint256` | `false` |

#### `OwnershipTransferred`[​](https://smart-docs.vercel.app/contract#OwnershipTransferred) <a href="#ownershiptransferred" id="ownershiptransferred"></a>

**Parameters**

| Name              | Type      | Indexed |
| ----------------- | --------- | ------- |
| **previousOwner** | `address` | `true`  |
| **newOwner**      | `address` | `true`  |

#### `Withdraw`[​](https://smart-docs.vercel.app/contract#Withdraw) <a href="#withdraw" id="withdraw"></a>

**Parameters**

| Name       | Type      | Indexed |
| ---------- | --------- | ------- |
| **user**   | `address` | `true`  |
| **amount** | `uint256` | `false` |
