@selenus/luna-sdk
v5.6.0
Published
The most comprehensive Helius Solana SDK for React Native - All APIs, maximum performance
Downloads
64
Maintainers
Readme
@selenus/luna-sdk
The most comprehensive Solana SDK for React Native - Complete Helius API coverage with Privacy-First features
Features
- Complete Helius API Coverage - All 100+ Helius endpoints
- Standard Solana RPC - Full JSON-RPC 2.0 support
- Digital Asset Standard (DAS) - NFT and token metadata APIs
- Privacy-First APIs - Stealth addresses, privacy pools, transaction graph privacy
- ZK Compression - Light Protocol integration
- WebSocket Subscriptions - Real-time blockchain events
- Smart Transactions - Automatic retry, priority fees, Jito bundles
- Type-Safe - Full TypeScript support with comprehensive types
Installation
npm install @selenus/luna-sdk
# or
yarn add @selenus/luna-sdk
# or
pnpm add @selenus/luna-sdkQuick Start
import { LunaHeliusClient } from '@selenus/luna-sdk';
// Initialize the client
const client = new LunaHeliusClient('your-helius-api-key');
// Get account balance
const balance = await client.solana.getBalance('So11111111111111111111111111111111111111112');
// Get NFTs for a wallet
const nfts = await client.das.getAssetsByOwner({
ownerAddress: 'wallet-address',
page: 1,
limit: 100,
});
// Parse a transaction
const parsed = await client.enhancedTransactions.parseTransaction('signature');API Reference
Core APIs
SolanaApi
Complete Solana JSON-RPC implementation:
client.solana.getAccountInfo(address)
client.solana.getBalance(address)
client.solana.getBlock(slot)
client.solana.getBlockHeight()
client.solana.getBlockTime(slot)
client.solana.getLatestBlockhash()
client.solana.getMinimumBalanceForRentExemption(dataSize)
client.solana.getSignaturesForAddress(address, options)
client.solana.getSlot()
client.solana.getTransaction(signature)
client.solana.sendTransaction(signedTx)
// ... 50+ more methodsDAS (Digital Asset Standard)
client.das.getAsset(assetId)
client.das.getAssetsByOwner(params)
client.das.getAssetsByCreator(params)
client.das.getAssetsByGroup(params)
client.das.searchAssets(params)
client.das.getAssetProof(assetId)
client.das.getAssetsBatch(assetIds)Enhanced Transactions
client.enhancedTransactions.parseTransaction(signature)
client.enhancedTransactions.parseTransactions(signatures)
client.enhancedTransactions.parseTransactionHistory(address)Privacy APIs (v5.2.0+)
Stealth Addresses
client.stealthAddress.generateStealthAddress(recipientViewKey)
client.stealthAddress.scanForPayments({ viewKey, startSlot })Privacy Pools
client.privacyPool.getAvailablePools()
client.privacyPool.calculateOptimalDeposit(amount)Transaction Graph Privacy
client.transactionGraphPrivacy.analyzeGraphPrivacy(address)
client.transactionGraphPrivacy.findConnectedAddresses(address, depth)Privacy Score
client.privacyScore.calculatePrivacyScore(address)
client.privacyScore.getPrivacyRecommendations(address)Additional APIs
ZK Compression
client.zkCompression.getCompressedAccount(address)
client.zkCompression.getCompressedAccountsByOwner(owner)
client.zkCompression.getCompressedTokenBalances(owner)
client.zkCompression.getValidityProof(hashes)Webhooks
client.webhook.createWebhook(config)
client.webhook.getWebhooks()
client.webhook.editWebhook(webhookId, config)
client.webhook.deleteWebhook(webhookId)Staking
client.staking.getStakeAccounts(address)
client.staking.createStakeTransaction(params)
client.staking.createUnstakeTransaction(params)Jupiter
client.jupiter.getQuote(params)
client.jupiter.swap(params)Jito
client.jito.sendBundle(transactions)
client.jito.getBundleStatuses(bundleIds)WebSocket Subscriptions
// Connect to WebSocket
await client.webSocket.connect();
// Subscribe to account changes
client.webSocket.accountSubscribe(accountId, (update) => {
console.log('Account updated:', update);
});
// Subscribe to program logs
client.webSocket.logsSubscribe(programId, (logs) => {
console.log('Program logs:', logs);
});
// Subscribe to slot updates
client.webSocket.slotSubscribe((slot) => {
console.log('New slot:', slot);
});
// Disconnect
client.webSocket.disconnect();Utilities
Base58 Encoding
import { base58 } from '@selenus/luna-sdk';
const encoded = base58.encode(bytes);
const decoded = base58.decode(encoded);Lamport Conversions
import { lamports } from '@selenus/luna-sdk';
const sol = lamports.lamportsToSol(1_000_000_000); // 1 SOL
const amount = lamports.solToLamports(1.5); // 1,500,000,000
const formatted = lamports.formatSolWithSymbol(1_000_000_000); // "◎ 1.0000"Retry with Backoff
import { retry, retryRpc } from '@selenus/luna-sdk';
const result = await retryRpc(() => client.solana.getBalance(address), {
maxRetries: 5,
initialDelay: 1000,
});Configuration
Custom Endpoints
const client = new LunaHeliusClient('api-key', {
rpcUrl: 'https://custom-rpc.example.com',
cluster: 'mainnet-beta',
});Network Selection
// Mainnet (default)
const mainnet = new LunaHeliusClient('api-key');
// Devnet
const devnet = new LunaHeliusClient('api-key', { cluster: 'devnet' });Error Handling
try {
const result = await client.das.getAsset(assetId);
if (result.error) {
console.error('RPC Error:', result.error.message);
} else {
console.log('Asset:', result.result);
}
} catch (error) {
console.error('Network error:', error);
}React Native Considerations
This SDK is designed for React Native and includes:
- No Node.js-specific dependencies
- Compatible with React Native's JavaScript engine
- Works with Hermes and JSC
- Supports Expo and bare React Native projects
Peer Dependencies
@solana/web3.js>= 1.95.0
TypeScript Support
Full TypeScript support with comprehensive type definitions:
import type {
Asset,
Transaction,
RpcResponse,
WebhookConfig,
PrivacyScore
} from '@selenus/luna-sdk';License
MIT © Selenus Labs
