# 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!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.lnfi.network/sdk-api/sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
