Skip to main content
Example code snippets to stream from the indexer for Mito vault module related data using StreamManagerV2.

Using gRPC Stream with StreamManagerV2

Stream vault transfers

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { 
  StreamManagerV2,
  IndexerGrpcMitoStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcMitoStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'mito-transfers',
  streamFactory: () => stream.streamTransfers({ 
    vault: 'inj...', // optional
    account: 'inj...', // optional
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (transfers) => {
    console.log(transfers)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()

Stream vault updates

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { 
  StreamManagerV2,
  IndexerGrpcMitoStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcMitoStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'mito-vault',
  streamFactory: () => stream.streamVault({ 
    vault: 'inj...', // optional
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (vaultUpdate) => {
    console.log(vaultUpdate)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()

Stream vault holder subscriptions

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { 
  StreamManagerV2,
  IndexerGrpcMitoStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcMitoStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'mito-vault-holder-subscriptions',
  streamFactory: () => stream.streamVaultHolderSubscriptions({ 
    holderAddress: 'inj...',
    vaultAddress: 'inj...', // optional
    stakingContractAddress: 'inj...', // optional
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (subscriptions) => {
    console.log(subscriptions)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()

Stream staking rewards by account

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { 
  StreamManagerV2,
  IndexerGrpcMitoStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcMitoStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'mito-staking-rewards',
  streamFactory: () => stream.streamStakingRewardsByAccount({ 
    staker: 'inj...',
    stakingContractAddress: 'inj...',
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (rewards) => {
    console.log(rewards)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()

Stream historical staking

import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
import { 
  StreamManagerV2,
  IndexerGrpcMitoStreamV2 
} from '@injectivelabs/sdk-ts/client/indexer'

const endpoints = getNetworkEndpoints(Network.Testnet)
const stream = new IndexerGrpcMitoStreamV2(endpoints.indexer)

const streamManager = new StreamManagerV2({
  id: 'mito-historical-staking',
  streamFactory: () => stream.streamHistoricalStaking({ 
    staker: 'inj...',
    stakingContractAddress: 'inj...',
    callback: (response) => {
      streamManager.emit('data', response)
    }
  }),
  onData: (historicalStaking) => {
    console.log(historicalStaking)
  },
  retryConfig: { enabled: true }
})

streamManager.on('connect', () => console.log('Stream connected'))
streamManager.start()