1.2.1 • Published 9 months ago

@cashu/cashu-ts v1.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

Cashu TS

GitHub Workflow Status GitHub issues GitHub package.json version npm npm type definitions npm bundle size code coverage

⚠️ Don't be reckless: This project is in early development, it does however work with real sats! Always use amounts you don't mind losing.

Cashu TS is a JavaScript library for Cashu wallets written in Typescript.

Wallet Features:

  • connect to mint (load keys)
  • request minting tokens
  • minting tokens
  • sending tokens (get encoded token for chosen value)
  • receiving tokens
  • melting tokens
  • check if tokens are spent
  • ...

Implemented NUTs:

Supported token formats:

  • v1 read
  • v2 read (deprecated)
  • v3 read/write
  • v4 read/write

Usage

Go to the docs for detailed usage, or have a look at the integration tests for examples on how to implement a wallet.

Install

npm i @cashu/cashu-ts

Examples

Mint tokens

import { CashuMint, CashuWallet, MintQuoteState } from '@cashu/cashu-ts';
const mintUrl = 'http://localhost:3338'; // the mint URL
const mint = new CashuMint(mintUrl);
const wallet = new CashuWallet(mint);
const mintQuote = await wallet.createMintQuote(64);
// pay the invoice here before you continue...
const mintQuoteChecked = await wallet.checkMintQuote(mintQuote.quote);
if (mintQuoteChecked.state == MintQuoteState.PAID) {
	const { proofs } = await wallet.mintTokens(64, mintQuote.quote);
}

Melt tokens

import { CashuMint, CashuWallet } from '@cashu/cashu-ts';
const mintUrl = 'http://localhost:3338'; // the mint URL
const mint = new CashuMint(mintUrl);
const wallet = new CashuWallet(mint);

const invoice = 'lnbc......'; // Lightning invoice to pay
const meltQuote = await wallet.createMeltQuote(invoice);
const amountToSend = meltQuote.amount + meltQuote.fee_reserve;

// in a real wallet, we would coin select the correct amount of proofs from the wallet's storage
// instead of that, here we swap `proofs` with the mint to get the correct amount of proofs
const { returnChange: proofsToKeep, send: proofsToSend } = await wallet.send(amountToSend, proofs);
// store proofsToKeep in wallet ..

const meltResponse = await wallet.meltTokens(meltQuote, proofsToSend);
// store meltResponse.change in wallet ..

Contribute

Contributions are very welcome.

If you want to contribute, please open an Issue or a PR. If you open a PR, please do so from the development branch as the base branch.

Version

* `main`
|\
|\ \
| | * `hotfix`
| |
| * `staging`
| |\
| |\ \
| | | * `bugfix`
| | |
| | * `development`
| | |\
| | | * `feature1`
| | | |
| | |/
| | *
| | |\
| | | * `feature2`
| | |/
| |/
|/ (create new version)
2.0.0-rc1

9 months ago

1.2.1

9 months ago

1.2.1-rc.0

9 months ago

1.1.0-3

11 months ago

1.1.0-2

11 months ago

1.1.0

10 months ago

1.0.1

12 months ago

1.0.0

12 months ago

1.0.0-rc.9

1 year ago

1.0.0-rc.7

1 year ago

1.0.0-rc.8

1 year ago

1.0.0-rc.6

1 year ago

1.0.0-rc.12

12 months ago

1.1.0-1

11 months ago

1.0.0-rc.5

1 year ago

1.0.0-rc.4

1 year ago

1.0.0-rc.3

1 year ago

1.0.0-rc.2

1 year ago

1.0.0-rc.1

1 year ago

1.0.0-rc.0

1 year ago

0.9.0

1 year ago

0.8.0-rc.6

2 years ago

0.8.0-rc.5

2 years ago

0.8.2-rc.6

2 years ago

0.8.2-rc.7

2 years ago

0.8.2-rc.2

2 years ago

0.8.2-rc.3

2 years ago

0.8.2-rc.4

2 years ago

0.8.2-rc.5

2 years ago

0.8.2-rc.1

2 years ago

0.8.1

2 years ago

0.6.1-rc4

2 years ago

0.6.1-rc3

2 years ago

0.6.1-rc6

2 years ago

0.6.1-rc5

2 years ago

0.8.0-rc.2

2 years ago

0.8.0-rc.3

2 years ago

0.8.0-rc.0

2 years ago

0.6.1-rc2

2 years ago

0.6.1-rc1

2 years ago

0.7.2

2 years ago

0.8.0-rc.4

2 years ago

0.7.0

2 years ago

0.6.1

2 years ago

0.6.0-rc3

2 years ago

0.6.0-rc2

2 years ago

0.6.0-rc1

2 years ago

0.6.0

2 years ago

0.5.3-rc2

2 years ago

0.5.3-rc1

2 years ago

0.5.2

2 years ago

0.5.2-rc1

2 years ago

0.5.1

2 years ago