Selendra

Documentation

SDK Status

Production reality - what works, what doesn't

Current implementation status. No roadmaps, no promises.

TypeScript SDK

Published: @selendrajs/sdk on npm

Production Ready (Use in Production)

Substrate Features:

  • ✓ Staking operations (bond, nominate, validate, chill, unbond)
  • ✓ Treasury (propose spend, query proposals, query approvals)
  • ✓ Validator queries (current era, next era, reserved)
  • ✓ Council governance (query members, proposals, voting)
  • ✓ Democracy (referendums, public proposals, voting, delegation)
  • ✓ Council elections (members, candidates, voting, candidacy)
  • ✓ Preimage support (for governance proposals)
  • ✓ Account management (balance, account info, transfer)
  • ✓ Unified accounts (Substrate ↔ EVM conversion)
  • ✓ Aleph consensus queries

React Integration:

  • ✓ 15 production hooks
  • ✓ Provider component
  • ✓ Wallet connector
  • ✓ Balance display components
  • ✓ Transaction buttons
  • ✓ Event listeners
  • ✓ Block subscriptions

Test Coverage:

  • 129 tests written
  • 70 passing
  • Known failures in network-dependent tests

Beta (Use with Caution)

EVM Features:

  • Beta: getBalance() - Works
  • Beta: getBlockNumber() - Works
  • Beta: getTransactionCount() - Works
  • Beta: Basic transfers - Works
  • Beta: Contract calls - Limited
  • ✗ Contract deployment - Not implemented (5 TODO methods)
  • ✗ Gas estimation - Not implemented (2 TODO methods)
  • ✗ Transaction history - Not implemented
  • ✗ Event filtering - Not implemented
  • ✗ EIP-712 signing - Not implemented

Known Issues:

  • 17 TODOs in EVM client
  • No SEL price oracle integration
  • No cross-chain bridge support

Not Ready

Features Not Implemented:

  • Contract metadata parsing (incomplete)
  • Advanced contract interaction patterns
  • Batch transactions (utility pallet needs work)
  • Multi-signature operations
  • Identity pallet integration

Rust SDK

Development Only (Do Not Use)

Status: 58% complete

What Exists:

  • Basic wrapper around selendra_client v1.0.1
  • Keypair generation
  • Connection management
  • Staking methods (newly implemented)
  • Governance methods (newly implemented)
  • Account info queries (newly implemented)

What Doesn't Work:

  • Examples fail to compile (wasmtime conflicts)
  • Limited testing
  • No production deployments
  • Documentation incomplete

Current State:

  • Library compiles with 0 errors
  • 68 documentation warnings
  • Not published to crates.io yet
  • Use TypeScript SDK instead

Implementation Percentages

ComponentCompletionNotes
TypeScript Substrate100%Production ready
TypeScript EVM30%Basic ops only
TypeScript React100%15 hooks working
TypeScript Unified100%Account conversion works
Rust Substrate60%Compiles, not tested
Rust EVM10%Minimal implementation
Rust Examples40%Wasmtime issues

What We're Not Doing

No Roadmap Published:

  • We don't promise future features
  • We don't commit to timelines
  • We don't speculate on capabilities

Use What Works:

  • TypeScript + Substrate = Production ready
  • TypeScript + EVM = Use web3.js instead
  • Rust = Wait or contribute

Known Limitations

TypeScript SDK

Substrate:

  • Single nominator only (utility batch not implemented)
  • No multi-sig support
  • No identity pallet
  • No proxy accounts

EVM:

  • Can't deploy contracts
  • Can't estimate gas accurately
  • No transaction history
  • No event log filtering
  • No ENS support

React:

  • Requires React ≥18.0.0
  • No React Native support
  • Bundle size: ~300KB (medium)

Rust SDK

Major Issues:

  • Wasmtime version conflict (6.0.2 vs 8.0.1)
  • Examples don't link
  • Limited real-world testing
  • No production users

Missing Features:

  • No async runtime flexibility (tokio only)
  • No error recovery
  • No connection pooling
  • No automatic reconnection

Performance

TypeScript SDK:

  • Initial connection: ~1-2 seconds
  • Query latency: ~100-300ms (network dependent)
  • Transaction submit: ~1 second + block time
  • Event subscription: ~50ms overhead

Rust SDK:

  • Not benchmarked
  • No performance guarantees

Breaking Changes History

v1.0.0 (Current):

  • First stable release
  • API may change in 1.x updates
  • Substrate features locked
  • EVM features may change

Migration Risk:

  • Substrate APIs: Low (stable)
  • EVM APIs: High (incomplete)
  • React hooks: Low (stable)

Support Level

What We Support:

  • TypeScript Substrate features
  • React hooks
  • Unified accounts
  • Bug fixes for production features

What We Don't Support:

  • EVM features (beta, use at own risk)
  • Rust SDK (development only)
  • Custom chain configurations
  • Non-standard pallets

Built on:

  • Polkadot.js for Substrate functionality
  • Ethers.js for EVM functionality
  • Substrate types and runtime

Testing Against Live Network

Testnet:

  • Substrate features: Tested
  • Staking operations: Tested
  • Governance: Tested
  • EVM: Partially tested

Mainnet:

  • Used in production: Unknown
  • Known issues: None reported
  • Monitoring: No official tracking

Decision Matrix

Use TypeScript SDK If:

You need:

  • Substrate staking
  • Governance tools
  • React integration
  • Unified accounts

Don't Use TypeScript SDK If:

You need:

  • Full EVM support (use web3.js)
  • Multi-sig operations
  • Identity management
  • Custom pallets

Don't Use Rust SDK:

✗ Not ready for any use case

Getting Help

Production Issues:

  • GitHub Issues (response: best effort)
  • GitHub Discussions (community Q&A)
  • No SLA, no guaranteed response time

Beta Features:

  • We may not fix issues
  • Use at own risk
  • Contribute fixes welcome

Development Features:

  • No support provided
  • Contributions welcome
  • No timeline for completion

Version Policy

Semantic Versioning:

  • Major (X.0.0): Breaking changes
  • Minor (1.X.0): New features (backward compatible)
  • Patch (1.0.X): Bug fixes

Current: v1.0.0
Next planned: Unknown

Reality Check

We built this for Substrate dApps. EVM support was added but not completed. Rust SDK exists but isn't production ready.

If you need:

  • Substrate features - Use this SDK
  • EVM features - Use web3.js or ethers.js
  • Both - Use both libraries, don't compromise

No marketing promises. Use what works.

Contribute

Found an issue or want to contribute?

Help us improve this documentation by editing this page on GitHub.

Edit this page on GitHub