use serde_json::json;
fn main() -> anyhow::Result<()> {
println!("blvm-node Wallet Integration RPC Examples");
println!("============================================");
println!();
println!("This example shows the RPC calls wallets need to integrate with blvm-node.");
println!("All methods are Bitcoin Core-compatible.");
println!();
let rpc_url = "http://127.0.0.1:18332";
println!("RPC Endpoint: {rpc_url}");
println!();
println!("Example RPC Requests:");
println!();
println!("1. getblockchaininfo - Get chain state");
let request = json!({
"jsonrpc": "2.0",
"method": "getblockchaininfo",
"params": [],
"id": 1
});
println!(" Request: {}", serde_json::to_string_pretty(&request)?);
println!(" Use: Check chain state, block height, best block hash");
println!();
println!("2. gettxout - Get UTXO information");
let txid = "0000000000000000000000000000000000000000000000000000000000000000";
let vout = 0;
let request = json!({
"jsonrpc": "2.0",
"method": "gettxout",
"params": [txid, vout, true],
"id": 2
});
println!(" Request: {}", serde_json::to_string_pretty(&request)?);
println!(" Use: Check if UTXO exists, get value and confirmations");
println!(" Note: Replace txid/vout with actual values");
println!();
println!("3. getrawtransaction - Get transaction data");
let request = json!({
"jsonrpc": "2.0",
"method": "getrawtransaction",
"params": [txid, true],
"id": 3
});
println!(" Request: {}", serde_json::to_string_pretty(&request)?);
println!(" Use: Get transaction details for history");
println!();
println!("4. sendrawtransaction - Broadcast transaction");
let raw_tx =
"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff...";
let request = json!({
"jsonrpc": "2.0",
"method": "sendrawtransaction",
"params": [raw_tx],
"id": 4
});
println!(" Request: {}", serde_json::to_string_pretty(&request)?);
println!(" Use: Broadcast signed transaction to network");
println!(" Note: Wallet creates and signs transaction, node broadcasts");
println!();
println!("5. estimatesmartfee - Get fee estimation");
let request = json!({
"jsonrpc": "2.0",
"method": "estimatesmartfee",
"params": [6],
"id": 5
});
println!(" Request: {}", serde_json::to_string_pretty(&request)?);
println!(" Use: Get recommended fee rate for transaction");
println!();
println!("Integration Checklist:");
println!(" ✅ getblockchaininfo - Chain state");
println!(" ✅ gettxout - UTXO queries (balance checking)");
println!(" ✅ getrawtransaction - Transaction data");
println!(" ✅ sendrawtransaction - Transaction broadcasting");
println!(" ✅ estimatesmartfee - Fee estimation");
println!();
println!("To test with a running node:");
println!(" 1. Start node: blvm-node --network testnet");
println!(" 2. Use curl or your HTTP client to send these requests");
println!(" 3. Or use the blvm-sdk for Rust integration");
println!();
println!("Your wallet can now integrate with blvm-node!");
Ok(())
}