SimpleFi Subgraph Mapping Code Library
While developing subgraphs our team realized that there are a lot of common functionality that is used to manipulate entities of our common schema. While factoring out these common functions in mapping code we also found out that we can develop an API to manipulate our common schema entities so that developers don't need to worry about maintaining common entities data integrity. This gave birth to our subgraph mapping code library. This library currently has only two files -
- 1.
- 2.
This files defines constants used to populate Enum values in schema entities.
If you add a new value to Enum in schema then you also need to add it in constants.ts so that you can use it in mapping code and avoid common errors caused by typing mistakes.
This file implements high level functions to manipulate common schema entities. You can find reference doc for these function at <add link here>
We strongly recommend using these functions to populate common entities to avoid data integrity errors. You will find that these functions helpful in reducing your development time and code complexity. Below is description of functions exported by this library -
Fetch account entity, or create it if it doens't exist. Account can be either EOA or contract.
Kind: global function
Returns:
*
- {Account} Account entityParam | Type | Description |
address | Address | Address of the account to load/create |
Fetch token entity, or create it if not existing, for ERC20 token. Token name, symbol and decimals are fetched by contract calls.
Kind: global function
Returns:
*
- {Token} Token entityParam | Type | Description |
event | ethereum.Event | Event with block info for this token |
address | Address | Address of the ERC20 token |
Fetch market entity, or create it if it doesn't exist.
Kind: global function
Returns:
*
- {Market} Market entityParam | Type | Description |
event | ethereum.Event | Event contains block info |
address | Address | Address of the market |
protocolName | string | Name of the protocol based on ProtocolName enum |
protocolType | string | Type of the protocol based on ProtocolType enum |
inputTokens | Array.<Token> | List of tokens that can be deposited in this market as investment |
outputToken | Token | Token that is minted by the market to track the position of a user in the market (e.g. an LP token) |
rewardTokens | Array.<Token> | List of reward tokens given out by protocol as incentives |
Update market with new input token balances and new supply of output token. Before updating market create market snapshot and store it.
Kind: global function
Returns:
*
- {MarketSnapshot} Market snapshot entityParam | Type | Description |
event | ethereum.Event | Event which triggered the change |
market | Market | Market to be updated |
inputTokenBalances | Balances of the input tokens that can be redeemed by sending the outputTokenTotalSupply back to the market. | |
outputTokenTotalSupply | BigInt | Total supply of output token |
Store transaction and update user's position when user has invested in market (or received market output token). Before transaction is stored and position updated, snapshots of market and position are created for historical tracking. If new balance of user's market output tokens is 0, position is closed.
Kind: global function
Returns:
*
- {Position} User's updated position in the marketParam | Type | Description |
event | ethereum.Event | Event emitted after user's investment |
account | Account | Investor's account |
market | Market | Market in which user invested |
outputTokenAmount | BigInt | Amount of output token minted for user |
inputTokenAmounts | Amounts of input tokens that are deposited by user in this transaction | |
rewardTokenAmounts | Amounts of reward tokens that are claimed by user in this transaction | |
outputTokenBalance | BigInt | User's latest balance of the market's output token |
inputTokenBalances | Balances of the input tokens that can be redeemed by sending the outputTokenBalance back to the market | |
rewardTokenBalances | Amounts of market's reward tokens claimable by user (not counting already claimed tokens) | |
transferredFrom | string | null | Null if investment was made by user; or address of sender in case when market ouput tokens were transferred to user |
Store transaction and update user's position when user has withdrawn tokens from market (or sent out market output token). Before transaction is stored and position updated, snapshots of market and position are created for historical tracking. If new balance of user's market output tokens is 0, position is closed.
Kind: global function
Returns:
*
- {Position} User's updated position in the marketParam | Type | Description |
event | ethereum.Event | Event emitted after user's withdrawal |
account | Account | Investor's account |
market | Market | Market from which user withdrew |
outputTokenAmount | BigInt | Amount of output token transferred by user back to market or burned by market from user's balance |
inputTokenAmounts | Amounts of input tokens that are received by user in this transaction | |
rewardTokenAmounts | Amounts of reward tokens that are claimed by user in this transaction | |
outputTokenBalance | BigInt | User's latest balance of the market's output token |
inputTokenBalances | Balances of the input tokens that can be redeemed by sending the outputTokenBalance back to the market | |
rewardTokenBalances | Amounts of market's reward tokens claimable by user (not counting already claimed tokens) | |
transferredTo | string | null | Null if withdrawal was made by user; or address of receiver in case when user sent out marker output tokens |
Store transaction and update user's position when user has borrowed from market. Before transaction is stored and position updated, snapshots of market and position are created for historical tracking.
Kind: global function
Returns:
*
- {Position} User's updated position in the marketParam | Type | Description |
event | ethereum.Event | Event emitted after user's borrowing |
account | Account | Investor's account |
market | Market | Market from which user borrowed |
outputTokenAmount | BigInt | Change in user's output token balance as part of this transaction |
inputTokenAmounts | Amounts of input tokens borrowed by user in this transaction | |
rewardTokenAmounts | Amounts of reward tokens that are claimed by user in this transaction | |
outputTokenBalance | BigInt | Latest user's balance of the market's output token |
inputTokenBalances | Balances of the input tokens that can be redeemed by sending the outputTokenBalance back to the market | |
rewardTokenBalances | Amounts of market's reward tokens claimable by user (not counting already claimed tokens) |
Store transaction and update user's position when user has repayed debt to market. Before transaction is stored and position updated, snapshots of market and position are created for historical tracking.
Kind: global function
Returns:
*
- {Position} User's updated position in the marketParam | Type | Description |
event | ethereum.Event | Event emitted after user's repayment |
account | Account | Investor's account |
market | Market | Market to which user repayed |
outputTokenAmount | BigInt | Change in user's output token balance as part of this transaction |
inputTokenAmounts | Amounts of input tokens repayed by user in this transaction | |
rewardTokenAmounts | Amounts of reward tokens that are claimed by user in this transaction | |
outputTokenBalance | BigInt | Latest user's balance of the market's output token |
inputTokenBalances | Balances of the input tokens that can be redeemed by sending the outputTokenBalance back to the market | |
rewardTokenBalances | Amounts of market's reward tokens claimable by user (not counting already claimed tokens) |