
The Problem
Haveno's existing client library (haveno-ts) was written in TypeScript — fine for web, but a dead end for native mobile development. The Haveno team wanted to expand to mobile platforms, but lacked the Dart/Flutter expertise to port their API layer. No one on the team had experience with Dart, let alone the complexity of compiling Protobuf schemas into a production-ready Dart SDK.
The Solution
I built a complete Dart/Flutter client SDK from scratch, compiled directly from Haveno's official Java/C++ core Protobuf schemas (
pb.proto and grpc.proto). The SDK wraps the raw, low-level gRPC Protocol Buffer definitions into a clean, developer-friendly unified architecture.
Haveno Dart SDK
Architecture Highlights
Full Protobuf Coverage — compiled directly from the official Haveno core schemas
15 gRPC Micro-Service Clients unified under a single
HavenoClient entry point:WalletsClient — Monero wallet balance, escrow operations, address trackingOffersClient — decentralized trade offer generation, cancellation, monitoringTradesClient — P2P dispute resolution and swap logic state machinesAccountClient, PriceClient, DisputesClient, GetVersionClient, and moreAsync Stream Support — built for reactive state management in Flutter apps
Linter-Shielded — pre-configured optimization maps for clean builds with zero warnings
Quick Start
import 'package:haveno_client_dart/haveno_client_dart.dart';
void main() async {
final client = HavenoClient(host: 'localhost', port: 9092);
final versionReply = await client.getVersion();
print('Haveno Daemon Version: ${versionReply.version}');
final balancesReply = await client.getBalances();
print('Available Balance: ${balancesReply.balances}');
await client.disconnect();
}
Result
A production-ready Dart SDK that gives the Haveno ecosystem a direct path from TypeScript web clients to native Flutter mobile applications. The package supports all 15 core Haveno daemon services through a single, cohesive API — ready to drop into any Dart or Flutter project via
pubspec.yaml.0 likes · 7 views · Jul 11, 2026
Timeline
May 25, 2026 - Jun 3, 2026