Skip to main content

Nara SDK

naracli is not only a command-line tool but also a TypeScript/JavaScript SDK. You can import it directly into your code to interact with Nara Chain programmatically.

Installation

npm install naracli

Basic Usage

Connect to Nara Chain

import { NaraSDK } from 'naracli';

const sdk = new NaraSDK({
rpcUrl: 'https://mainnet-api.nara.build/',
});

const connection = sdk.getConnection();
const slot = await connection.getSlot();
console.log('Current Slot:', slot);

Using Solana Web3.js

Since Nara is fully Solana-compatible, you can also use @solana/web3.js directly:

import { Connection, PublicKey } from '@solana/web3.js';

const connection = new Connection('https://mainnet-api.nara.build/');

// Check balance
const balance = await connection.getBalance(
new PublicKey('your-address')
);
console.log('Balance:', balance / 1e9, 'NARA');

Exported Modules

The SDK exports the following main modules:

// SDK core
import { NaraSDK, type NaraSDKConfig } from 'naracli';

// Constants
import { DEFAULT_RPC_URL, DEFAULT_QUEST_PROGRAM_ID } from 'naracli';

// Quest (PoMI) functions
import {
getQuestInfo,
hasAnswered,
generateProof,
submitAnswer,
submitAnswerViaRelay,
parseQuestReward,
type QuestInfo,
type ZkProof,
type SubmitAnswerResult,
type SubmitRelayResult,
type QuestOptions,
} from 'naracli';

// Solana base types (convenience re-exports)
import { PublicKey, Keypair, Transaction } from 'naracli';
import BN from 'naracli';

Constants

ConstantValueDescription
DEFAULT_RPC_URLhttps://mainnet-api.nara.build/Mainnet RPC URL
DEFAULT_QUEST_PROGRAM_IDQuest program addressPoMI program ID

Next Steps