> For the complete documentation index, see [llms.txt](https://docs.lnfi.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.lnfi.network/sdk-api/sdk.md).

# SDK

## LNSDK SDK Guide

Link to Github: <https://github.com/lnfi-network/nasdk>

## Introduction

Welcome to the LNSDK (Lnfi Network SDK) guide! LNSDK is an SDK library developed on Nostr. It facilitates connecting plugin wallets supporting Nostr, executing transactions, and managing orders seamlessly.

## Features

* Connect plugin wallets supporting Nostr
* Execute transactions
* Place orders in the market

***

## Support Method List

### lnsdk

* `getConfig()`: Retrieve configuration.
* `getNostrPool()`: Get information about the Nostr pool.

### lnsdk.market

* `listOrder(options)`: List orders in the market.
* `takeOrder(orderId)`: Take an order in the market.
* `cancelOrder(orderId)`: Cancel an order in the market.
* `repairOrder(orderId, amount, price, buyOrSellTokenName, payTokenName)`: Repair an order in the market.

### lnsdk.token

* `approve(options)`: Approve token transfer.
* `transfer(options)`: Transfer tokens.
* `addAddressBook(options)`: Add an address to the address book.
* `deposit(options)`: Deposit tokens.
* `withdraw(options)`: Withdraw tokens.

### lnsdk.provider

* `supportedProviderList`: Retrieve a list of supported providers.
* `connect(providerName)`: Connect to a provider.
* `getProvider(providerName)`: Get information about a provider.

#### lnsdk.utils

* `nip04()`: NIP04 utilities.
* `nip19()`: NIP19 utilities.
* `generatePrivateKey()`: Generate a private key.
* `getPublicKey(privateKey)`: Get a public key from a private key.
* `getEventHash(event)`: Get the hash of an event.

***

## Setup

### React

**Install**

```
yarn add nasdk

//import bolt11min.js to public/index.html through script src
<script src=`${yourpath}/bolt11.min.js``></script>
```

**Code**

```javascript
import {useCallback} from 'react
import NASDK from 'lnsdk'
const lnsdk = new LNSDK({ env: 'development'}) // env: development | production
const onTransfer = useCallback(async()=>{
    const res = await lnsdk.token.transfer({ tokenName: 'NOSTR', amount: 1, to: 'npub1zptcf2v9ms5dgd8mgulsckk04l9upr3lnerk6ckh9zyntzu0ness753zx8' })
},[])
return <>
{your code}
</>


```

***

### Node.js

**Installation**

```
yarn add websocket-polyfill bolt11 nasdk
```

**Code**

```javascript
import 'websocket-polyfill'
import 'bolt11'
import LNSDK from 'lnsdk'

const privateKey='45d914aef9c2f85a47b242ef684245c02e0af93d6f9031fcc3444ede8ac0a295'
const lnsdk = new LNSDK({ env: 'development', privateKey, poolOptions:{getTimeout:10*1000} })

 const res = await nasdk.market.listOrder({ side:'sell',amount:'100',price:'101',buyOrSellTokenName:'TRICK',payTokenName:'SATS'})

 // You can see more examples in the tests directory
```

#### HTML

```html
<scrpt src=`${youpath}/nasdk.umd.js`>
<script src=`${yourpath}/bolt11.min.js``></script>
<script>
     const lnsdk = new LNSDK({ env: 'development' })
     const supportedProviderNames = Object.keys(lnsdk.provider.supportedProviderList)
     async function onConnect(providerName='alby') {
        const res = await lnsdk.provider.connect(providerName)
     }
</script>
```

## Example

Check out examples in the `src/tests` directory.

## Running Tests

To run the test suite:

```bash
yarn node --experimental-vm-modules $(yarn bin jest) --detectOpenHandles
```

***

Start integrating NASDK into your project and unlock the potential of the NOSTR ASSET protocol!
