Skip to content
This repository was archived by the owner on Mar 17, 2019. It is now read-only.
This repository was archived by the owner on Mar 17, 2019. It is now read-only.

Typescript Typings #5

@cavanmflynn

Description

@cavanmflynn

I wrote some Typescript typings for this library, which I am using in my local project. I would be more than happy to open a PR against DefinitelyTyped so they can be published under the npm @types org. Alternatively, they could live in this project.

Let me know your thoughts. Thanks!

Types:

declare module 'lightnode-invoice' {
  /**
   * Decodes a bech32 encoded lightning invoice. Exceptions are thrown for invalid invoices.
   * @param invoice The bech32 encoded lightning invoice.
   */
  function decode(invoice: string): Invoice;

  /**
   * Encodes an invoice into a bech32 encoded lightning invoice.
   * @param invoice The invoice class instance.
   * @param privKey The private key used to sign the invoice.
   */
  function encode(invoice: Invoice, privKey: string): string;

  /**
   * Represents a payment invoice.
   */
  class Invoice {
    /**
     * Network prefix.
     */
    public network: 'bc' | 'tb' | 'crt' | 'sm';

    /**
     * Amount in bitcoin.
     */
    public amount: number;

    /**
     * Timestamp of the invoice.
     */
    public timestamp: number;

    /**
     * Raw fields that are known in BOLT 11.
     */
    public fields: any[];

    /**
     * Raw fields that are unknown in BOLT 11.
     */
    public unknownFields: any[];

    /**
     * Signature that was used to sign the invoice.
     */
    public signature: Signature;

    /**
     * Pubkey that was recovered from the signature or provided in an n field.
     */
    public pubkey: Pubkey

    /**
     * SHA256 of the data that was signed.
     */
    public hashData: Buffer;

    /**
     * Expiry time in seconds, defaults to 3600 (per BOLT 11).
     */
    public readonly expiry: number;

    /**
     * SHA256 of the payment_preimage provided in return for payment.
     */
    public paymentHash: Buffer;

    /**
     * Short description.
     */
    public shortDesc: string;

    /**
     * Hash of the long description.
     */
    public hashDesc: Buffer;

    /**
     * Optional pubkey of the payee node.
     */
    public payeeNode: Buffer;

    /**
     * min_final_cltv_expiry to use for the last node, defaults to 9 (per BOLT 11).
     */
    public minFinalCltvExpiry: number;

    /**
     * List of on-chain addresses to fall back if payment fails. Supports version 0, 17, 18 addresses.
     */
    public readonly fallbackAddresses: FallbackAddress[];

    /**
     * List of routes that should be used.
     */
    public readonly routes: Route[];

    /**
     * Add a P2PKH or P2SH address in base58check or bech32 encoding.
     * @param addrStr The address string.
     */
    public addFallbackAddress(addrStr: string): void;

    /**
     * Adds a new private route
     * @param routes The private routes
     */
    public addRoute(routes: Route[]): void;
  }

  export interface Signature {
    r: Buffer;
    s: Buffer;
    recoveryFlag: number;
  }

  export interface Pubkey {
    x: Buffer;
    y: Buffer;
  }

  export interface FallbackAddress {
    version: number;
    address: Buffer;
  }

  export interface Route {
    pubkey: Buffer;
    short_channel_id: Buffer;
    fee_base_msat: number;
    fee_proportional_millionths: number;
    cltv_expiry_delta: number;
  }

  export {
    decode,
    encode,
    Invoice,
  };
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions