lightning-rpc
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

Lightning RPC

Statically generated Lightning gRPC library for Node.js, written in TypeScript.

Enviroment Variables

  • LND_HOST
  • LND_PORT
  • LND_CERT_PATH
  • LND_MACAROON_PATH
  • LND_WALLET_PASSWORD

Useage

import {
  GetInfoRequest,
  GetInfoResponse,
  Invoice,
  InvoiceSubscription,
  LightningRpcConfig,
  UnlockWalletRequest,
  UnlockWalletResponse,
  WalletBalanceRequest,
  WalletBalanceResponse,
  createLightning,
  createWalletUnlocker,
} from 'lightning-rpc';
 
const config = {
  host: String(process.env.LND_HOST),
  port: String(process.env.LND_PORT),
  certPath: String(process.env.LND_CERT_PATH),
  macaroonPath: String(process.env.LND_MACAROON_PATH),
};
 
const walletUnlocker = createWalletUnlocker(config);
 
walletUnlocker.waitForReady(Infinity, (error: Error | null) => {
  if (error) {
    console.error(error);
  }
 
  const unlockWalletRequest = new UnlockWalletRequest();
 
  if (!process.env.LND_WALLET_PASSWORD) {
    throw 'No wallet password. Set the LND_WALLET_PASSWORD enviroment variable.';
  }
 
  unlockWalletRequest.setWalletPassword(
    Buffer.from(process.env.LND_WALLET_PASSWORD),
  );
 
  walletUnlocker.unlockWallet(
    unlockWalletRequest,
    (error: ServiceError | null, response: UnlockWalletResponse) => {
      if (error) {
        console.error(error);
      }
      console.log('Wallet unlocked')
      const lightning = await createLightning(config);
 
      lightning.waitForReady(Infinity, (error: Error | null) => {
        if (error) {
          throw error;
        }
        const getInfoRequest = new GetInfoRequest();
        lightning.getInfo(
          getInfoRequest,
          (error: ServiceError | null, response: GetInfoResponse) => {
            if (error) {
              console.error(error);
            }
            console.log(response);
          },
        );
 
        const invoiceSubscription = new InvoiceSubscription();
        const stream: ClientReadableStream<Invoice> = lightning.subscribeInvoices(
          invoiceSubscription,
        );
        stream.on('data', (invoice: Invoice) => {
          console.log('invoice', invoice);
        })
      })
    }
  )
});
 

Compile from source

Requirements: protoc

git clone https://github.com/matthewlilley/lightning-rpc.git
 
cd lightning-rpc
 
yarn generate

Docs

https://matthewlilley.github.io/lightning-rpc

Contributing

Want to contribute? Awesome! Feel free to create an issue and/or pull request.

Licence

MIT

Package Sidebar

Install

npm i lightning-rpc

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

1.52 MB

Total Files

14

Last publish

Collaborators

  • matthewlilley