@nekoproject/swap
Version:
Cross-chain Swap Token
118 lines (111 loc) • 3.01 kB
Markdown
# @nekoproject/swap
A complete crypto wallet base support for cross-chain
Table of contents
=================
<!--ts-->
* [Re-Build](#build)
* [Install](#install)
* [Documents](#documents)
* [Create SwapOrder](#create-swaporder)
* [Swap Token](#swap-token)
* [Notice](#notice)
<!--te-->
Build
========
Re-build project from scratch
- Clean project
```bash
npm run clean
```
- Build
```bash
npm run build
```
- Unit test
```bash
npm run test:cover
```
Install
=======
Install `@nekoproject/swap` with `npm`
```bash
npm i @nekoproject/swap
```
Import
```ts
import {SPLSwap, SwapConfig, SwapOrder, SwapResponse} from '@nekoproject/swap'
```
Documents
=========
Init and config SPLSwap instance
```ts
// address own fee
const fee = 'ykkvsfEtAhc7faxK3uJTYMPBmtrisGkU9Kv4SnuxzB7'
const setFee = {
feeOwner: fee,
fee: 2
}
const swapConfig: SwapConfig = {
cluster: 'mainnet-beta',
fee: setFee,
slippage: 1
}
const swap = new SPLSwap(SPLNetworkInstance, swapConfig)
const wallet = SPLWallet.generateWallet()
```
### SPLSwap methods
#### Create SwapOrder
- Config order
```ts
const order = {
inputToken: /Token/,
outputToken: /Token/,
amount: /amount number/,
slippage: /% slippage/,
}
```
- Example config order
```ts
const usdcInfo: TokenInfo = {
decimals: 6,
mintAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
}
const usdtInfo: TokenInfo = {
decimals: 6,
mintAddress: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
}
const usdcToken = new SPLToken(SPLNetworkInstance, usdcInfo)
const usdtToken = new SPLToken(SPLNetworkInstance, usdtInfo)
// order
const order = {
inputToken: usdcToken,
outputToken: usdtToken,
amount: 1,
slippage: 1,
}
```
- Execute create SwapOrder
```ts
const swapRequest = await swap.createSwapOrder(order, wallet)
```
#### Swap Token
- Swap Token
```ts
const response: SwapResponse = await swap.swapToken(swapRequest)
// example
const response = {
tx: '5Pz8C8YHBKkGTgSsDYJqzndS62ufTNsApHY3qzc1g14QfpXwGDJoAFLx8RJ2njVgD6pwYgtzHXgwz2AVcdYxtKhp',
inputAddress: '9xL3QEaqqPR4H67oUhzGLwQzokvMuxeDFuQeAf52GN8A',
outputAddress: '6T496kvjdFKXG1EgXTa4VKhsNfDeJLi5JBYpySUpEvkf',
inputAmount: 1000000,
outputAmount: 995903
}
// await transaction confirm
const confirmed = await SPLNetworkInstance.provider.confirmTransaction(response.tx)
console.log(confirmed)
// output example: { context: { slot: 126425365 }, value: { err: null } }
console.log(`https://solscan.io/tx/${output.tx}`)
```
Notice
========
# Ref