# Interface

**Staking**

```jsx

// stake sei and get spSei
// input isDonation = false
function stake(bool isDonation) public payable

// burn spSei and start unbonding sei
function unstake(uint256 amount) public 

// check your current claimable balance for unstake
mapping(address => uint256) public claimableBalance

// claim sei when unbonding is finished
function claim() public whenNotPaused 

// burn spSei and retrieve sei immediately
function instantUnstake(uint256 amount) public whenNotPaused 

// calcualte the buffer fee for instantUnstake
// return (success, fee)
// success: true if the buffer has enough liquidity
// fee: fee will be deducted when unstake  
function getFeeWithBuffer(uint256 withdrawAmount) public view returns (bool, uint256) 

// exchangeRatio = totalSei / spSei
// display in 18 decimals
function getExchangeRatio() public view returns (uint256) 

```
