Skip to main content

Interchain SDK

Interchain SDK The main Avalanche client SDK for interacting with Avalanche nodes and building blockchain applications. Features:
  • Type-safe ICM client for sending cross-chain messages
  • Works seamlessly with wallet clients
  • Built-in support for Avalanche C-Chain and custom subnets
  • Built-in support for Avalanche C-Chain and custom subnets
The SDK is currently available in TypeScript, with more languages coming soon. If you are interested in a language that is not listed, please reach out to us in the #dev-tools channel in the Avalanche Discord.

SDK Installation

npm add @avalanche-sdk/interchain

SDK Example Usage

import { createWalletClient, http } from "viem";
import { createICMClient } from "@avalanche-sdk/interchain";
import { privateKeyToAccount } from "viem/accounts";
import * as dotenv from 'dotenv';

// Load environment variables
dotenv.config();

// these will be made available in a separate SDK soon
import { avalancheFuji, dispatch } from "@avalanche-sdk/interchain/chains";

// Get private key from environment
const privateKey = process.env.PRIVATE_KEY;
if (!privateKey) {
  throw new Error("PRIVATE_KEY not found in environment variables");
}

// Load your signer/account
const account = privateKeyToAccount(privateKey as `0x${string}`);

// Create a viem wallet client connected to Avalanche Fuji
const wallet = createWalletClient({
  transport: http('https://api.avax-test.network/ext/bc/C/rpc'),
  account,
});

// Initialize the ICM client
const icmClient = createICMClient(wallet);

// Send a message across chains
async function main() {
  try {
    const hash = await icmClient.sendMsg({
      sourceChain: avalancheFuji,
      destinationChain: dispatch,
      message: 'Hello from Avalanche Fuji to Dispatch Fuji!',
    });
    console.log('Message sent with hash:', hash);
  } catch (error) {
    console.error('Error sending message:', error);
    process.exit(1);
  }
}

main();

Refer to the code samples provided for each route to see examples of how to use them in the SDK. Explore routes here Data API, Metrics API & Webhooks API.
I