Documentation Index
Fetch the complete documentation index at: https://mintlify.com/availproject/nexus-sdk/llms.txt
Use this file to discover all available pages before exploring further.
The Avail Nexus SDK supports multiple tokens across various blockchain networks. This page provides comprehensive information about supported tokens, their decimals, and contract addresses on each network.
Token Overview
| Token | Name | Decimals | Type | Networks |
|---|
| ETH | Ethereum | 18 | Native | All EVM chains |
| USDC | USD Coin | 6 | Stablecoin | 18 networks |
| USDT | Tether USD | 6 | Stablecoin | 12 networks |
| USDM | USDm | 18 | Stablecoin | MegaETH |
| MATIC | Polygon | 18 | Native | Polygon, Polygon Amoy |
| AVAX | Avalanche | 18 | Native | Avalanche |
| BNB | BNB | 18 | Native | BNB Smart Chain |
| MON | Monad | 18 | Native | Monad, Monad Testnet |
| KAIA | Kaia | 18 | Native | Kaia Mainnet |
| cBTC | Citrea BTC | 18 | Native | Citrea (mainnet & testnet) |
| HYPE | Hype | 18 | Native | Hyper EVM |
USDC Contract Addresses
USD Coin (USDC) is supported on the most networks with 6 decimal places.
Mainnet
| Network | Chain ID | Contract Address |
|---|
| Ethereum | 1 | 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 |
| Base | 8453 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Arbitrum One | 42161 | 0xaf88d065e77c8cc2239327c5edb3a432268e5831 |
| Optimism | 10 | 0x0b2c639c533813f4aa9d7837caf62653d097ff85 |
| Polygon | 137 | 0x3c499c542cef5e3811e1192ce70d8cc03d5c3359 |
| Avalanche | 43114 | 0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e |
| Scroll | 534352 | 0x06efdbff2a14a7c8e15944d1f4a48f9f95f663a4 |
| BNB Smart Chain | 56 | 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d |
| Hyper EVM | 999 | 0xb88339CB7199b77E23DB6E890353E22632Ba630f |
| Monad | 143 | 0x754704Bc059F8C67012fEd69BC8A327a5aafb603 |
| Citrea Mainnet | 4114 | 0xE045e6c36cF77FAA2CfB54466D71A3aEF7bbE839 |
Testnet
| Network | Chain ID | Contract Address |
|---|
| Sepolia | 11155111 | 0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238 |
| Base Sepolia | 84532 | 0x036CbD53842c5426634e7929541eC2318f3dCF7e |
| Arbitrum Sepolia | 421614 | 0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d |
| Optimism Sepolia | 11155420 | 0x5fd84259d66Cd46123540766Be93DFE6D43130D7 |
| Polygon Amoy | 80002 | 0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582 |
| Monad Testnet | 10143 | 0xf817257fed379853cDe0fa4F97AB987181B1E5Ea |
| Citrea Testnet | 5115 | 0xb669dC8cC6D044307Ba45366C0c836eC3c7e31AA |
USDT Contract Addresses
Tether USD (USDT) is available on multiple networks with 6 decimal places.
Mainnet
| Network | Chain ID | Contract Address |
|---|
| Ethereum | 1 | 0xdac17f958d2ee523a2206206994597c13d831ec7 |
| Arbitrum One | 42161 | 0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9 |
| Optimism | 10 | 0x94b008aa00579c1307b0ef2c499ad98a8ce58e58 |
| Polygon | 137 | 0xc2132d05d31c914a87c6611c10748aeb04b58e8f |
| Avalanche | 43114 | 0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7 |
| Scroll | 534352 | 0xf55bec9cafdbe8730f096aa55dad6d22d44099df |
| BNB Smart Chain | 56 | 0x55d398326f99059fF775485246999027B3197955 |
| Kaia Mainnet | 8217 | 0xd077a400968890eacc75cdc901f0356c943e4fdb |
| Hyper EVM | 999 | 0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb |
| Citrea Mainnet | 4114 | 0x9f3096Bac87e7F03DC09b0B416eB0DF837304dc4 |
| MegaETH | 4326 | 0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb |
Testnet
| Network | Chain ID | Contract Address |
|---|
| Arbitrum Sepolia | 421614 | 0xF954d4A5859b37De88a91bdbb8Ad309056FB04B1 |
| Optimism Sepolia | 11155420 | 0x6462693c2F21AC0E517f12641D404895030F7426 |
| Monad Testnet | 10143 | 0x1c56F176D6735888fbB6f8bD9ADAd8Ad7a023a0b |
USDM Contract Addresses
USDm is a stablecoin with 18 decimal places, currently only available on MegaETH.
| Network | Chain ID | Contract Address |
|---|
| MegaETH | 4326 | 0xFAfDdbb3FC7688494971a79cc65DCa3EF82079E7 |
Native Tokens
Native tokens are represented with the zero address (0x0000000000000000000000000000000000000000) in the SDK.
| Token | Symbol | Decimals | Networks |
|---|
| Ethereum | ETH | 18 | Ethereum, Base, Arbitrum, Optimism, Scroll, Sepolia, Base Sepolia, Arbitrum Sepolia, Optimism Sepolia, MegaETH |
| Polygon | MATIC | 18 | Polygon, Polygon Amoy |
| Avalanche | AVAX | 18 | Avalanche |
| BNB | BNB | 18 | BNB Smart Chain |
| Monad | MON | 18 | Monad, Monad Testnet |
| Kaia | KAIA | 18 | Kaia Mainnet |
| Citrea Bitcoin | cBTC | 18 | Citrea Mainnet, Citrea Testnet |
| Hype | HYPE | 18 | Hyper EVM |
Programmatic Access
Access token contract addresses programmatically:
import {
TOKEN_CONTRACT_ADDRESSES,
TOKEN_METADATA,
SUPPORTED_CHAINS
} from '@avail-project/nexus-core';
// Get USDC address on Ethereum
const usdcOnEth = TOKEN_CONTRACT_ADDRESSES.USDC[SUPPORTED_CHAINS.ETHEREUM];
console.log(usdcOnEth); // "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
// Get token metadata
const usdcMetadata = TOKEN_METADATA.USDC;
console.log(usdcMetadata);
// {
// symbol: 'USDC',
// name: 'USD Coin',
// decimals: 6,
// icon: 'https://...'
// coingeckoId: 'usd-coin'
// }
// Get USDT address on Polygon
const usdtOnPolygon = TOKEN_CONTRACT_ADDRESSES.USDT[SUPPORTED_CHAINS.POLYGON];
console.log(usdtOnPolygon); // "0xc2132d05d31c914a87c6611c10748aeb04b58e8f"
Bridge Operations
When using bridge operations, you specify tokens by their symbol:
await sdk.bridge({
token: 'USDC', // Use symbol, not address
amount: 100_000_000n, // 100 USDC (6 decimals)
toChainId: 137,
});
Swap Operations
For swap operations, you must use the contract address:
await sdk.swapWithExactIn({
from: [
{
chainId: 10,
amount: 1_000_000n,
tokenAddress: '0x0b2c639c533813f4aa9d7837caf62653d097ff85', // USDC on Optimism
},
],
toChainId: 8453,
toTokenAddress: '0x0000000000000000000000000000000000000000', // ETH (native)
});
Remember: Bridge operations use token symbols (e.g., 'USDC'), while swap operations use contract addresses.
Working with Decimals
Always use the correct decimal places when specifying amounts:
import { parseUnits } from '@avail-project/nexus-core';
// USDC/USDT (6 decimals)
const usdc100 = 100_000_000n; // 100 USDC
const usdc100Alt = parseUnits('100', 6); // Alternative
// ETH/Native tokens (18 decimals)
const eth1 = 1_000_000_000_000_000_000n; // 1 ETH
const eth1Alt = parseUnits('1', 18); // Alternative
// USDM (18 decimals)
const usdm50 = parseUnits('50', 18); // 50 USDM
Using incorrect decimal places will result in transferring the wrong amount. Always verify the token’s decimal count.