Asset
Contract presenting LP tokens in a pool.
contracts/wombat-core/asset/Asset.sol
Title: Asset
Notice: Contract presenting an asset in a pool
Details: Expect to be owned by Timelock for management, and pool links to Pool for coordination
constructor
constructor(underlyingToken_, name_, symbol_)
Arguments
name
type
description
underlyingToken_
address
name_
string
symbol_
string
event Approval
***Asset.Approval(owner, spender, value) ***
Arguments
name
type
description
owner
address
indexed
spender
address
indexed
value
uint256
not indexed
event OwnershipTransferred
***Asset.OwnershipTransferred(previousOwner, newOwner) ***
Arguments
name
type
description
previousOwner
address
indexed
newOwner
address
indexed
event SetMaxSupply
***Asset.SetMaxSupply(previousMaxSupply, newMaxSupply) ***
Notice: An event thats emitted when max supply is updated
Arguments
name
type
description
previousMaxSupply
uint256
not indexed
newMaxSupply
uint256
not indexed
event SetPool
***Asset.SetPool(previousPoolAddr, newPoolAddr) ***
Notice: An event thats emitted when pool address is updated
Arguments
name
type
description
previousPoolAddr
address
not indexed
newPoolAddr
address
not indexed
event Transfer
***Asset.Transfer(from, to, value) ***
Arguments
name
type
description
from
address
indexed
to
address
indexed
value
uint256
not indexed
stateVariable cash
Asset.cash() view
Notice: Cash balance, normally it should align with IERC20(underlyingToken).balanceOf(address(this))
Details: 18.18 fixed point decimals
Outputs
name
type
description
uint120
stateVariable liability
Asset.liability() view
Notice: Total liability, equals to the sum of deposit and dividend
Details: 18.18 fixed point decimals
Outputs
name
type
description
uint120
stateVariable maxSupply
Asset.maxSupply() view
Notice: maxSupply the maximum amount of asset the pool is allowed to mint. The unit is the same as the underlying token
Details: if 0, means asset has no max
Outputs
name
type
description
uint256
function DOMAIN_SEPARATOR
Asset.DOMAIN_SEPARATOR() view
Details: See {IERC20Permit-DOMAIN_SEPARATOR}.
Outputs
name
type
description
bytes32
function addCash
***Asset.addCash(amount) ***
Notice: Adds cash, expects actual ERC20 underlyingToken got transferred in. Can only be called by Pool.
Arguments
name
type
description
amount
uint256
amount to add
function addLiability
***Asset.addLiability(amount) ***
Notice: Adds deposit or dividend, expect LP underlyingToken minted in case of deposit. Can only be called by Pool.
Arguments
name
type
description
amount
uint256
amount to add
function allowance
Asset.allowance(owner, spender) view
Details: See {IERC20-allowance}.
Arguments
name
type
description
owner
address
spender
address
Outputs
name
type
description
uint256
function approve
***Asset.approve(spender, amount) ***
Details: See {IERC20-approve}. Requirements: -
spender
cannot be the zero address.
Arguments
name
type
description
spender
address
amount
uint256
Outputs
name
type
description
bool
function balanceOf
Asset.balanceOf(account) view
Details: See {IERC20-balanceOf}.
Arguments
name
type
description
account
address
Outputs
name
type
description
uint256
function burn
***Asset.burn(to, amount) ***
Notice: Burn ERC20 Asset LP Token, expect pool coordinates other state updates. Can only be called by Pool.
Arguments
name
type
description
to
address
address holding the tokens
amount
uint256
amount to burn
function decimals
Asset.decimals() view
Notice: Returns the decimals of Asset, fixed to 18 decimals
Outputs
name
type
description
uint8
decimals for asset
function decreaseAllowance
***Asset.decreaseAllowance(spender, subtractedValue) ***
Details: Atomically decreases the allowance granted to
spender
by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: -spender
cannot be the zero address. -spender
must have allowance for the caller of at leastsubtractedValue
.
Arguments
name
type
description
spender
address
subtractedValue
uint256
Outputs
name
type
description
bool
function increaseAllowance
***Asset.increaseAllowance(spender, addedValue) ***
Details: Atomically increases the allowance granted to
spender
by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: -spender
cannot be the zero address.
Arguments
name
type
description
spender
address
addedValue
uint256
Outputs
name
type
description
bool
function mint
***Asset.mint(to, amount) ***
Notice: Mint ERC20 Asset LP Token, expect pool coordinates other state updates. Can only be called by Pool.
Arguments
name
type
description
to
address
address to transfer the token to
amount
uint256
amount to transfer
function name
Asset.name() view
Details: Returns the name of the token.
Outputs
name
type
description
string
function nonces
Asset.nonces(owner) view
Details: See {IERC20Permit-nonces}.
Arguments
name
type
description
owner
address
Outputs
name
type
description
uint256
function owner
Asset.owner() view
Details: Returns the address of the current owner.
Outputs
name
type
description
address
function permit
***Asset.permit(owner, spender, value, deadline, v, r, s) ***
Details: See {IERC20Permit-permit}.
Arguments
name
type
description
owner
address
spender
address
value
uint256
deadline
uint256
v
uint8
r
bytes32
s
bytes32
function pool
Asset.pool() view
Notice: The Pool
Outputs
name
type
description
address
function removeCash
***Asset.removeCash(amount) ***
Notice: Deducts cash, expect actual ERC20 got transferred out (by transferUnderlyingToken()). Can only be called by Pool.
Arguments
name
type
description
amount
uint256
amount to remove
function removeLiability
***Asset.removeLiability(amount) ***
Notice: Removes deposit and dividend earned, expect LP underlyingToken burnt. Can only be called by Pool.
Arguments
name
type
description
amount
uint256
amount to remove
function renounceOwnership
***Asset.renounceOwnership() ***
Details: Leaves the contract without owner. It will not be possible to call
onlyOwner
functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.
function setMaxSupply
***Asset.setMaxSupply(maxSupply_) ***
Notice: Changes asset max supply. Can only be set by the contract owner. 18 decimals
Arguments
name
type
description
maxSupply_
uint256
the new asset's max supply
function setPool
***Asset.setPool(pool_) ***
Notice: TODO: move pool address setup within contract initializationChanges the pool. Can only be set by the contract owner.
Arguments
name
type
description
pool_
address
new pool's address
function symbol
Asset.symbol() view
Details: Returns the symbol of the token, usually a shorter version of the name.
Outputs
name
type
description
string
function totalSupply
Asset.totalSupply() view
Details: See {IERC20-totalSupply}.
Outputs
name
type
description
uint256
function transfer
***Asset.transfer(recipient, amount) ***
Details: See {IERC20-transfer}. Requirements: -
recipient
cannot be the zero address. - the caller must have a balance of at leastamount
.
Arguments
name
type
description
recipient
address
amount
uint256
Outputs
name
type
description
bool
function transferFrom
***Asset.transferFrom(sender, recipient, amount) ***
Details: See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: -
sender
andrecipient
cannot be the zero address. -sender
must have a balance of at leastamount
. - the caller must have allowance forsender
's tokens of at leastamount
.
Arguments
name
type
description
sender
address
recipient
address
amount
uint256
Outputs
name
type
description
bool
function transferOwnership
***Asset.transferOwnership(newOwner) ***
Details: Transfers ownership of the contract to a new account (
newOwner
). Can only be called by the current owner.
Arguments
name
type
description
newOwner
address
function transferUnderlyingToken
***Asset.transferUnderlyingToken(to, amount) ***
Notice: Transfers ERC20 underlyingToken from this contract to another account. Can only be called by Pool.
Details: Not to be confused with transferring Wombat Assets.
Arguments
name
type
description
to
address
address to transfer the token to
amount
uint256
amount to transfer
function underlyingToken
Asset.underlyingToken() view
Notice: The underlying underlyingToken represented by this asset
Outputs
name
type
description
address
function underlyingTokenBalance
Asset.underlyingTokenBalance() view
Notice: Get underlying Token Balance
Outputs
name
type
description
uint256
Returns the actual balance of ERC20 underlyingToken
function underlyingTokenDecimals
Asset.underlyingTokenDecimals() view
Outputs
name
type
description
uint8
Last updated