Skip to main content

ClayManager.sol

Main csMATIC contract for Polygon staking.

getExchangeRate()

Returns the current exchange rate accounting for any slashing or donations and a boolean value indicating whether a slashing event has occurred (Note: Slashing is not currently enabled on Polygon).

function getExchangeRate() returns (uint256, bool)

getLiquidityCsToken()

Returns total liquidity of csToken available for Flash Exit without considering external pools.

function getLiquidityCsToken() returns (uint256)

fees()

Returns all types protocol's fees. Protocol uses 2 point decimal precision(i.e base unit is 10000)

function fees() returns (Fees)

Fees Structure:

NameTypeDescription
depositFeeuint256Fee percent on deposit
withdrawFeeuint256Fee percent on withdraw
earlyClaimFeeuint256Fee percentage on early claims
instantWithdrawFeeuint256Fee percentage on instant withdraw

bridgeFee()

Fee to manually trigger the bridge by user

function bridgeFee() returns (uint256)

getUserOrders()

Returns paginated list of user's withdraw orders in descending order of creation.

function getUserOrders(address user, uint256 page) returns (WithdrawOrder)

UserWithdrawOrder Structure:

NameTypeDescription
orderIduint256Unique order Id
amountuint256Total amount unstaked from from ethereum.
feeuint256Fee percentage to be paid by the user at claim time.
batchIduint256Id of the batch process to be sent to ethereum.
claimableAtuint256timestamp when batch claims can be processed.
isClaimableboolIf order can be claimed standard method.
isEarlyClaimableuint256If order can be claimed early before standard period.

deposit()

Sends underlying tokens to contract and mints csToken to msg.sender.

function deposit(uint256 amountToken) returns (bool)

Note: Requirements:

  • msg.sender must have approved amountToken of Token to this contract.

Parameters:

NameTypeDescription
_amountTokenuint256Amount of underlying tokens sent from msg.sender to this contract

Returns:

Bool confirmation of transaction.

depositDelegate()

Sends Token to contract and mints csToken to delegator.

function deposit(uint256 amountToken, uint256 delegator) returns (bool)

Note: Requirements:

  • msg.sender must have approved amountToken of Token to this contract.

Parameters:

NameTypeDescription
amountTokenuint256Amount of Token sent from msg.sender to this contract
delegatoraddressAddress of entity receiving csToken

Returns:

Bool confirmation of transaction.

depositETH()

Sends native to chain tokens msg.value to contract and mints csToken to msg.sender.

function depositETH() returns (bool)

withdraw()

Burns csToken from user and creates a withdraw order.

function withdraw(uint256 amountCs) returns (uint256)

Note: Requirements:

  • msg.sender must have approved amountCs of csToken to this contract.

Parameters:

NameTypeDescription
amountCsuint256Amount of csToken to be withdrawn

Returns:

Withdraw Order ID.

claim()

Checks the validity of given orderIds, claims tokens and transfers the amount to user.

function claim(uint256[] orderIds) returns (bool)

Note: Requirements:

  • All orderIds must have fulfilled the un-bonding period.

Parameters:

NameTypeDescription
orderIdsuint256[]Array of withdraw order ids issued at withdraw()

Returns:

Bool confirmation of transaction.

instantWithdraw()

Burns csToken from user and instantly returns Token to user.

function instantWithdraw(uint256 amountCs) returns (bool)

Note: Requirements:

  • msg.sender must have approved amountCs of csToken to this contract.
  • Contract must have sufficient liquidity.

Parameters:

NameTypeDescription
amountCsuint256Amount of csToken to be withdrawn

Returns:

Bool confirmation of transaction.

earlyClaim()

Checks the validity of given orderId, claims tokens and transfers the amount to user.

function earlyClaim(uint256 orderId) returns (bool)

Note: Requirements:

  • Order must be early claimable eligible and no slashing occurred within batch.

Parameters:

NameTypeDescription
orderIdsuint256[]Array of withdraw order ids issued at withdraw()

Returns:

Bool confirmation of transaction.

autoBalance()

Initiates transfer process to Ethereum while sends a message on expected tokens. A minimum amount or time is required for it to execute unless paid fee by the caller msg.value must exceed the bridge fee.

function autoBalance() returns (bool)

Returns:

Bool confirmation of transaction.