lnd_grpc_tonic_client/
lib.rs

1/**
2! Rust binding for the lnd grpc client.
3!
4! Example: <https://github.com/doitian/lnd-grpc-tonic-client/tree/main/examples>
5*/
6pub mod invoicesrpc;
7#[allow(clippy::large_enum_variant)]
8pub mod lnrpc;
9pub mod routerrpc;
10
11pub mod channel;
12pub use channel::connect_lnd;
13
14pub use hyper::Uri;
15
16pub type LightningClient = lnrpc::lightning_client::LightningClient<channel::Channel>;
17pub type RouterClient = routerrpc::router_client::RouterClient<channel::Channel>;
18pub type InvoicesClient = invoicesrpc::invoices_client::InvoicesClient<channel::Channel>;
19
20pub async fn create_lightning_client(
21    uri: Uri,
22    cert: Option<&[u8]>,
23    macaroon: Option<&[u8]>,
24) -> Result<LightningClient, channel::Error> {
25    connect_lnd(uri, cert, macaroon)
26        .await
27        .map(LightningClient::new)
28}
29
30pub async fn create_router_client(
31    uri: Uri,
32    cert: Option<&[u8]>,
33    macaroon: Option<&[u8]>,
34) -> Result<RouterClient, channel::Error> {
35    connect_lnd(uri, cert, macaroon)
36        .await
37        .map(RouterClient::new)
38}
39
40pub async fn create_invoices_client(
41    uri: Uri,
42    cert: Option<&[u8]>,
43    macaroon: Option<&[u8]>,
44) -> Result<InvoicesClient, channel::Error> {
45    connect_lnd(uri, cert, macaroon)
46        .await
47        .map(InvoicesClient::new)
48}