LogoNAVI Protocol SDKS

Balance Module

The Balance Module provides comprehensive wallet balance management functionality, including token tracking, portfolio management, token transfers, and automatic balance updates.

Core Features

  • Balance Tracking: Real-time tracking of token balances in the wallet
  • Token Transfers: Send tokens to specified addresses
  • Object Transfers: Transfer NFTs and other objects
  • Auto Updates: Automatic balance updates through polling mechanism

Configuration Options

coinPollingInterval

Token balance polling interval (milliseconds), defaults to 6000ms.

Usage Example

import { WalletClient } from '@naviprotocol/wallet-client'

const walletClient = new WalletClient({
    configs: {
        balance: {
            coinPollingInterval: 6000
        }
    }
})

API Reference

coins

Get the current list of token objects in the wallet.

Usage Example

import { WalletClient } from '@naviprotocol/wallet-client'

const walletClient = new WalletClient()
const coins = walletClient.balance.coins

Result Example

[{
  coinObjectId: '0x1',
  balance: '1000000000',
  coinType: '0x2::sui::SUI',
  digest: '0x...',
  version: '123456'
}]

portfolio

Categorize and aggregate data based on coins. Supports querying balance for specified coins.

Usage Example

import { WalletClient } from '@naviprotocol/wallet-client'

const walletClient = new WalletClient()
const portfolio = walletClient.balance.portfolio
const suiBalance = portfolio.getBalance('0x2::sui::SUI')

Result Example

{
  amount: BigNumber('1000000000'),
  coins: [{
    coinObjectId: '0x1',
    balance: '1000000000',
    coinType: '0x2::sui::SUI'
  }]
}

sendCoinBatch

Batch send tokens to multiple addresses.

Usage Example

import { WalletClient } from '@naviprotocol/wallet-client'

const walletClient = new WalletClient()
const result = await walletClient.balance.sendCoinBatch(
  '0x2::sui::SUI', // Token type
  ['0x123...', '0x456...'], // Recipient addresses array
  [1000000000, 2000000000], // Send amounts array
  { dryRun: false } // Optional parameters
)

transferObject

Transfer a single object to a specified address.

Usage Example

import { WalletClient } from '@naviprotocol/wallet-client'

const walletClient = new WalletClient()
const result = await walletClient.module('balance').transferObject(
  '0x789...', // Object ID
  '0x123...', // Recipient address
  { dryRun: false } // Optional parameters
)

transferObjectBatch

Batch transfer objects to multiple addresses.

Usage Example

import { WalletClient } from '@naviprotocol/wallet-client'

const walletClient = new WalletClient()
const result = await walletClient.module('balance').transferObjectBatch(
  ['0x789...', '0xabc...'], // Object IDs array
  ['0x123...', '0x456...'], // Recipient addresses array
  { dryRun: false } // Optional parameters
)

updatePortfolio

Manually update user coins data.

The wallet-client SDK has built-in scheduled update logic, and all methods involving contract calls trigger updates upon successful execution.

Usage Example

import { WalletClient } from '@naviprotocol/wallet-client'

const walletClient = new WalletClient()
await walletClient.balance.updatePortfolio()

Events

balance:portfolio-updated

Event triggered when the portfolio is updated.

Usage Example

import { WalletClient } from '@naviprotocol/wallet-client'

const walletClient = new WalletClient()
walletClient.events.on('balance:portfolio-updated', () => {
  console.log('Portfolio has been updated')
})