0.0.36 • Published 8 days ago

beignet v0.0.36

Weekly downloads
-
License
MIT
Repository
github
Last release
8 days ago

Beignet

:warning: This is pre-alpha software and not suitable for production apps yet.

Description

An instant, self-custodial Bitcoin wallet for JS devs.

This Typescript library offers JS developers a way to incorporate an on-chain, self-custodial Bitcoin wallet into their projects.

Table of Contents

  1. Getting Started
  2. Running Tests & Examples
  1. Implementation
  2. Advanced Usage
  3. Documentation
  4. Support

Getting Started

# Using Yarn
yarn add beignet

# Or, using NPM
npm i -S beignet

Running Tests & Examples

Clone the Repository

git clone git@github.com:synonymdev/beignet.git && cd beignet

Install Dependencies & Build

npm i && npm run build

Run tests:

npm run test

Run example project:

npm run example

Implementation

import { Wallet, generateMnemonic } from 'beignet';

// Generate a mnemonic phrase
const mnemonic = generateMnemonic();

// Create a wallet instance
const createWalletRes = await Wallet.create({ mnemonic });
if (createWalletRes.isErr()) return;
const wallet = createWalletRes.value;

// View wallet data (addresses, indexes, utxos, transactions, etc.)
const walletData = wallet.data;
  
// Get receiving address
const address = await wallet.getAddress();

// Get address balance
const addressBalanceRes = await wallet.getAddressBalance(address);
if (addressBalance.isErr()) return;
const addressBalance = addressBalanceRes.value;

// Get wallet balance
const walletBalance = wallet.getBalance();

// Refresh Wallet
const walletRefresh = await wallet.refreshWallet();

// Get fee information to perform a transaction.
const feeInfo = wallet.getFeeInfo();

// Send sats
const sendRes = await wallet.send({ address: 'address to send sats to', amount: 1000, satPerByte: 2 });

// Send all sats to an address
const sendMaxRes = await wallet.sendMax({ address: 'address to send sats to', satPerByte: 2 });

Advanced Usage

import { Wallet, generateMnemonic } from 'beignet';
import { TStorage } from './wallet';

// Generate a mnemonic phrase
const mnemonic = generateMnemonic();

// Add a bip39 passphrase
const passphrase = 'passphrase';

// Connect to custom electrum server
const servers: TServer = {
	host: '35.233.47.252',
	ssl: 18484,
	tcp: 18483,
	protocol: EProtocol.ssl,
};

// Use a specific network (Defaults to mainnet)
const network = ENetworks.mainnet;

// Use a specific address type. (Defaults to EAddressType.p2wpkh)
const addressType = EAddressType.p2tr;

// Monitor certain address types. (Defaults to Object.values(EAddressType))
const addressTypesToMonitor = [EAddressType.p2tr, EAddressType.p2wpkh];

// Subscribe to server messages (TOnMessage)
const onMessage: TOnMessage = (id, data) => {
	console.log(id);
	console.dir(data, { depth: null });
}

// Disable startup messages. Messages resume once startup is complete. (Defaults to false)
const disableMessagesOnCreate = true;

// Persist sessions by getting and setting data from storage
const storage: TStorage = {
	async getData<K extends keyof IWalletData>(
		key: string
	): Promise<Result<IWalletData[K]>> {
		// Add your logic here
	},
	async setData<K extends keyof IWalletData>(
		key: string,
		value: IWalletData[K]
	): Promise<Result<boolean>> {
		// Add your logic here
	}
};

// Create a wallet instance
const createWalletRes = await Wallet.create({
	mnemonic,
	passphrase,
	electrumOptions: { servers },
	network,
	onMessage,
	storage, 
    addressType,
	addressTypesToMonitor,
	disableMessagesOnCreate
});
if (createWalletRes.isErr()) return;
const wallet = createWalletRes.value;

// List UTXO's
const utxos = wallet.listUtxos();

// Send sats to multiple outputs
const txs = [
	{ address: 'address1', amount: 1000 },
	{ address: 'address2', amount: 2000 },
	{ address: 'address3', amount: 3000 },
];
const sendManyRes = await wallet.sendMany({ txs });

// Sweep from a private key
const sweepPrivateKeyRes = await wallet.sweepPrivateKey({
	privateKey: 'privateKey',
	toAddress: 'toAddress',
	satsPerByte: 5,
	broadcast: false
});

// Get tx history for a given address. { tx_hash: string; height: number; }[]
const history = await wallet.getAddressHistory('address');

// Get transaction details for a given transaction id. TTxDetails
const txDetails = await wallet.getTransactionDetails('txid');

Documentation

Support

If you are experiencing any problems, please open an issue or reach out to us on Telegram.

0.0.36

8 days ago

0.0.35

15 days ago

0.0.33

16 days ago

0.0.34

16 days ago

0.0.31

22 days ago

0.0.32

22 days ago

0.0.30

1 month ago

0.0.29

1 month ago

0.0.28

1 month ago

0.0.27

2 months ago

0.0.26

2 months ago

0.0.25

2 months ago

0.0.24

3 months ago

0.0.23

3 months ago

0.0.22

3 months ago

0.0.20

3 months ago

0.0.21

3 months ago

0.0.19

3 months ago

0.0.17

3 months ago

0.0.18

3 months ago

0.0.16

3 months ago

0.0.15

4 months ago

0.0.13

4 months ago

0.0.14

4 months ago

0.0.12

4 months ago

0.0.11

4 months ago

0.0.10

4 months ago

0.0.9

4 months ago

0.0.8

4 months ago

0.0.7

4 months ago

0.0.5

4 months ago

0.0.6

4 months ago

0.0.3

4 months ago

0.0.4

4 months ago

0.0.2

4 months ago

0.0.1

5 months ago