🚀 DAY 4 OF LAUNCH WEEK:Introducing Socket Scanning for OpenVSX Extensions.Learn more →
Socket
Book a DemoInstallSign in
Socket

@exodus/balances

Package Overview
Dependencies
Maintainers
1
Versions
78
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@exodus/balances

Tracks crypto balances across enabled wallet accounts.

latest
Source
npmnpm
Version
13.13.1
Version published
Weekly downloads
1.5K
-12.8%
Maintainers
1
Weekly downloads
 
Created
Source

@exodus/balances

This Exodus SDK feature tracks the crypto-denominated balances for all enabled wallet accounts. For fiat-denominated balances, check out @exodus/fiat-balances.

Install

yarn add @exodus/balances

Usage

This feature is designed to be used together with @exodus/headless. See using the sdk.

Play with it

  • Open the playground https://exodus-hydra.pages.dev/
  • Run selectors.balances.byAsset(store.getState()) in the Dev Tools Console to get balances by asset aggregated across enabled wallet accounts.
  • Try out some other selectors from selectors.balances. See example usage in tests.
  • Mock an address with a balance, tick the blockchain monitor and check your balance.
// mock your ethereum address with one that has a balance
await exodus.debug.addressProvider.mockAddress({
  assetName: 'ethereum',
  walletAccount: 'exodus_0',
  address: '0x1111111111111111111111111111111111111111',
})
// force tick the ethereum monitor, or wait a while
await exodus.txLogMonitors.update({ assetName: 'ethereum', refresh: true })
// check your balance
selectors.balances
  .createTotal({ assetName: 'ethereum', walletAccount: 'exodus_0' })(store.getState())
  .toString()

API Side

See using the sdk for more details on how features plug into the SDK. Note that the balances feature currently doesn't provide a top level API and is meant to be used purely through selectors.

If you're building a feature that requires balances, add a dependency on the balancesAtom as below. See also the available balance fields.

const myModuleDefinition = {
  id: 'myModule',
  type: 'module',
  factory: ({ balancesAtom }) => {
    const doSomethingSpecial = async () => {
      // {
      //   [walletAccount]: {
      //     [assetName]: {
      //       // e.g. 'total', 'spendable', 'unconfirmedSent', 'unconfirmedReceived'
      //       [balanceField]: NumberUnit, // see @exodus/currency
      //     }
      //   }
      // }
      const { balances } = await balancesAtom.get()
      // ...
    }

    return {
      doSomethingSpecial,
    }
  },
  dependencies: ['balancesAtom'],
}

UI Side

See using the sdk for more details on basic UI-side setup.

import { selectors } from '~/ui/flux'

const MyComponent = () => {
  const bitcoinBalance = useSelector(
    selectors.balances.createSpendable({
      assetName: 'bitcoin',
      walletAccount: 'exodus_0',
    })
  ) // returns a NumberUnit
}

Contributing

WARNING: no asset specifics!

Do NOT introduce any asset specifics like if (assetName === 'dogicorn') balance = balance.mul(2). All asset-specifics belong in asset.api.getBalances or other APIs inside the asset libraries.

FAQs

Package last updated on 22 Aug 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts