Rewards
Last updated
Last updated
This document aims to allow external developers to integrate with Mito's LP Staking Rewards from within their dApps. We will only show the message examples, how will you integrate them within your dApp is your own choice. Documentation on broadcasting the transactions containing these messages can be found .
import { IndexerGrpcMitoApi } from '@injectivelabs/sdk-ts'
const MITO_API_ENDPOINT = 'https://k8s.mainnet.mito.grpc-web.injective.network' /** for mainnet */
const mitoApi = new IndexerGrpcMitoApi(MITO_API_ENDPOINT)
const address = 'inj1..'
const STAKING_CONTRACT_ADDRESS = `inj1gtze7qm07nky47n7mwgj4zatf2s77xqvh3k2n8` /** staking contract address for mainnet */
const { rewards } = await mitoApi.fetchStakingRewardsByAccount({
stakingContractAddress: STAKING_CONTRACT_ADDRESS,
accountAddress: address
})
console.log(rewards)
import { IndexerGrpcMitoApi } from '@injectivelabs/sdk-ts'
const MITO_API_ENDPOINT = 'https://k8s.mainnet.mito.grpc-web.injective.network' /** for mainnet */
const mitoApi = new IndexerGrpcMitoApi(MITO_API_ENDPOINT)
const address = 'inj1..'
const STAKING_CONTRACT_ADDRESS = `inj1gtze7qm07nky47n7mwgj4zatf2s77xqvh3k2n8` /** staking contract address for mainnet */
const { pools } = await mitoApi.fetchStakingPools({
stakingContractAddress: STAKING_CONTRACT_ADDRESS
})
console.log(pools)
import {
MsgExecuteContractCompat,
spotQuantityToChainQuantityToFixed
} from '@injectivelabs/sdk-ts'
const sender = `inj1...`
const amount = 0.01 /** staking 0.01 QUNT/INJ LP */
const vaultLpDenom = 'factory...' /** Can be fetched from the vault's information */
const vaultTokenDecimals = 18
const STAKING_CONTRACT_ADDRESS = `inj1gtze7qm07nky47n7mwgj4zatf2s77xqvh3k2n8` /** staking contract address for mainnet */
const message = MsgExecuteContractCompat.fromJSON({
sender,
funds: [
{
denom: vaultLpDenom,
amount: spotQuantityToChainQuantityToFixed({
value: amount,
baseDecimals: vaultTokenDecimals
})
}
],
contractAddress: STAKING_CONTRACT_ADDRESS,
exec: {
action: 'stake',
msg: {}
}
})
/** (Prepare) Broadcast the transaction */
import {
MsgExecuteContractCompat,
spotQuantityToChainQuantityToFixed
} from '@injectivelabs/sdk-ts'
const sender = `inj1...`
const amount = 0.01 /** unstaking 0.01 QUNT/INJ LP */
const vaultLpDenom = 'factory...' /** Can be fetched from the vault's information */
const vaultTokenDecimals = 18
const STAKING_CONTRACT_ADDRESS = `inj1gtze7qm07nky47n7mwgj4zatf2s77xqvh3k2n8` /** staking contract address for mainnet */
const message = MsgExecuteContractCompat.fromJSON({
sender,
contractAddress: STAKING_CONTRACT_ADDRESS,
exec: {
action: 'unstake',
msg: {
coin: {
denom: vault.lpDenom,
amount: spotQuantityToChainQuantityToFixed({
value: amount,
baseDecimals: vaultTokenDecimals
})
}
}
}
})
/** (Prepare) Broadcast the transaction */
import {
MsgExecuteContractCompat
} from '@injectivelabs/sdk-ts'
const sender = `inj1...`
const vaultLpDenom = 'factory...' /** Can be fetched from the vault's information */
const STAKING_CONTRACT_ADDRESS = `inj1gtze7qm07nky47n7mwgj4zatf2s77xqvh3k2n8` /** staking contract address for mainnet */
const message = MsgExecuteContractCompat.fromJSON({
sender,
contractAddress: STAKING_CONTRACT_ADDRESS,
exec: {
action: 'claim_stake',
msg: {
lp_token: vaultLpDenom
}
}
})
/** (Prepare) Broadcast the transaction */
import {
MsgExecuteContractCompat
} from '@injectivelabs/sdk-ts'
const sender = `inj1...`
const vaultLpDenom = 'factory...' /** Can be fetched from the vault's information */
const STAKING_CONTRACT_ADDRESS = `inj1gtze7qm07nky47n7mwgj4zatf2s77xqvh3k2n8` /** staking contract address for mainnet */
const message = MsgExecuteContractCompat.fromJSON({
sender,
contractAddress: STAKING_CONTRACT_ADDRESS,
exec: {
action: 'claim_rewards',
msg: {
lp_token: vaultLpDenom
}
}
})
Note: The users need to 24 hours after they unstaked their LP.