Skip to content

interledger-deprecated/five-bells-wallet-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DEPRECATED - Use the ilp module instead


Five Bells Wallet Client

A high-level JS library for sending and receiving Interledger payments.


npm standard circle

Installation

npm install five-bells-wallet-client --save

Usage

This is a client for the five-bells-wallet.

To use it with a hosted demo wallet, create an account on red.ilpdemo.org or blue.ilpdemo.org (it doesn't matter which because they're connected via the Interledger Protocol!).

Sending

const WalletClient = require('five-bells-wallet-client')

const sender = new WalletClient({
  address: '[email protected]',
  password: 'alice'
})

sender.on('connect', () => {
  console.log('Sender connected')
})

sender.send({
  destination: '[email protected]',
  destinationAmount: '0.01',
  message: 'Still love you!',
  onQuote: (payment) => {
    console.log('Received a quote; this will cost us: ' + payment.sourceAmount)
  }
}).then((payment) => {
  console.log('Sent payment:', payment)
  console.log('')
}).catch((err) => {
  console.error(err.stack)
})

Receiving

const WalletClient = require('five-bells-wallet-client')

const receiver = new WalletClient({
  address: '[email protected]',
  password: 'bobbob'
})

receiver.on('connect', () => {
  console.log('Receiver connected')
})

receiver.on('incoming', (payment) => {
  console.log('Received ' + payment.destinationAmount + ' bucks!')
  console.log(payment.sourceAccount + ' says: ' + payment.message)
})

Combined Example

const WalletClient = require('five-bells-wallet-client')

const sender = new WalletClient({
  address: '[email protected]',
  password: 'alice'
})

const receiver = new WalletClient({
  address: '[email protected]',
  password: 'bobbob'
})

sender.on('connect', () => {
  console.log('Sender connected')
})

receiver.on('connect', () => {
  console.log('Receiver connected')
})

receiver.on('incoming', (payment) => {
  console.log('Received ' + payment.destinationAmount + ' bucks!')
  console.log(payment.sourceAccount + ' says: ' + payment.message)
})

sender.send({
  destination: '[email protected]',
  destinationAmount: '0.01',
  message: 'Still love you!',
  onQuote: (payment) => {
    console.log('Received a quote; this will cost us: ' + payment.sourceAmount)
  }
}).then((payment) => {
  console.log('Sent payment:', payment)
  console.log('')
}).catch((err) => {
  console.error(err.stack)
})

API Reference

Client for connecting to the five-bells-wallet

WalletClient~WalletClient

Kind: inner class of WalletClient

new WalletClient(opts)

Param Type Default Description
opts Object WalletClient options
opts.address String Account at five-bells-wallet in the form [email protected]
opts.password String Account password for five-bells-wallet
[opts.autoConnect] Boolean true Subscribe to WebSocket notifications automatically when new event listeners are added

walletClient.connect() ⇒ Promise.<null>

Login to wallet and subscribe to WebSocket notifications

Kind: instance method of WalletClient
Returns: Promise.<null> - Resolves once client is subscribed

walletClient.isConnected() ⇒ Boolean

Check if the client is currently subscribed to wallet notifications

Kind: instance method of WalletClient

walletClient.getAccount() ⇒ Promise.<String>

Get the ledger account URI corresponding to the user's address

Kind: instance method of WalletClient

walletClient.disconnect() ⇒ null

Unsubscribe from wallet notifications

Kind: instance method of WalletClient

walletClient.payment(params) ⇒ Payment

Create a new Payment object

Kind: instance method of WalletClient

Param Type Description
params PaymentParams Payment parameters

walletClient.send(params) ⇒ Promise.<Object>

Create a new Payment object, get a quote, and send the payment. Resolves when the payment is complete.

Kind: instance method of WalletClient
Returns: Promise.<Object> - Payment result

Param Type Description
params PaymentParams Payment parameters
[params.onQuote] function Function to call when a quote is received
[params.onSent] function Function to call when payment is sent (before it is complete)

walletClient.convertAmount() ⇒ Promise.<BigNumber>

Convert the given destination amount into the local asset

Kind: instance method of WalletClient
Returns: Promise.<BigNumber> - Source amount as a BigNumber

Param Type Description
params.destinationAmount String | Number The destination amount to convert
params.destinationAccount String Destination account to convert amount for

Class for quoting and sending payments

Payment~Payment

Kind: inner class of Payment

new Payment(walletClient, params)

Param Type Description
walletClient WalletClient WalletClient instance used for quoting and sending
params PaymentParams Payment parameters

payment.quote() ⇒ Promise.<PaymentParams>

Get a quote to fill in either the sourceAmount or destinationAmount, whichever was not given.

Kind: instance method of Payment
Returns: Promise.<PaymentParams> - Original payment params with sourceAmount or destinationAmount filled in
Emits: quote

payment.send() ⇒ Promise.<Object>

Execute the payment

Kind: instance method of Payment
Returns: Promise.<Object> - Resolves when the payment is complete
Emits: sent

Payment~PaymentParams : Object

Kind: inner typedef of Payment

Param Type Default Description
destinationAccount String Receiver account URI
[sourceAmount] String | Number | BigNumber (quoted from destinationAmount) Either sourceAmount or destinationAmount must be supplied
[destinationAmount] String | Number | BigNumber (quoted from sourceAmount) Either sourceAmount or destinationAmount must be supplied
[message] String "" Message to send to recipient