# test-raydium-sdk-v2

> An SDK for building applications on top of Raydium.

Latest version **0.0.314-alpha** (published 2024-04-03) · GPL-3.0 license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install test-raydium-sdk-v2
pnpm add test-raydium-sdk-v2
yarn add test-raydium-sdk-v2
bun add test-raydium-sdk-v2
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 0.0.314-alpha |
| Published | 2024-04-03 |
| First published | 2022-09-20 |
| Weekly downloads | 0 |
| License | GPL-3.0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 12 |
| Unpacked size | 54.7 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 349 |
| Maintainers | cruzshia |
| Keywords | raydium, solana |

## Links

- npm: https://www.npmjs.com/package/test-raydium-sdk-v2
- Repository: https://github.com/raydium-io/raydium-sdk-V2
- npm.io page: https://npm.io/package/test-raydium-sdk-v2

## Dependencies (12)

- [axios](https://npm.io/package/axios.md) ^1.1.3
- [bn.js](https://npm.io/package/bn.js.md) ^5.2.1
- [dayjs](https://npm.io/package/dayjs.md) ^1.11.5
- [big.js](https://npm.io/package/big.js.md) ^6.2.1
- [buffer](https://npm.io/package/buffer.md) ^6.0.3
- [lodash](https://npm.io/package/lodash.md) ^4.17.21
- [toformat](https://npm.io/package/toformat.md) ^2.0.0
- [@solana/web3.js](https://npm.io/package/@solana/web3.js.md) ^1.75.3
- [decimal.js-light](https://npm.io/package/decimal.js-light.md) ^2.5.1
- [@solana/spl-token](https://npm.io/package/@solana/spl-token.md) ^0.3.7
- [@project-serum/serum](https://npm.io/package/@project-serum/serum.md) ^0.13.65
- [@solana/buffer-layout](https://npm.io/package/@solana/buffer-layout.md) 4.0.0

## Recent versions

- 0.0.314-alpha (latest) — 2024-04-03
- 0.0.312-alpha — 2024-04-02
- 0.0.311-alpha — 2024-04-02
- 0.0.310-alpha — 2024-04-01
- 0.0.309-alpha — 2024-04-01
- 0.0.308-alpha — 2024-04-01
- 0.0.307-alpha — 2024-03-25
- 0.0.306-alpha — 2024-03-25
- 0.0.305-alpha — 2024-03-25
- 0.0.304-alpha — 2024-03-21
- 0.0.303-alpha — 2024-03-21
- 0.0.302-alpha — 2024-03-21
- 0.0.301-alpha — 2024-03-21
- 0.0.300-alpha — 2024-03-21
- 0.0.299-alpha — 2024-03-20
- … 304 more at https://npm.io/package/test-raydium-sdk-v2/versions

## README

# Raydium SDK

[npm-image]: https://img.shields.io/npm/v/@raydium-io/raydium-sdk.svg?style=flat
[npm-url]: https://www.npmjs.com/package/@raydium-io/raydium-sdk

[![npm][npm-image]][npm-url]

An SDK for building applications on top of Raydium.

## Usage Guide

### Installation

```
$ yarn add @raydium-io/raydium-sdk
```

### Enable special logger

```javascript
import { setLoggerLevel } from "@raydium-io/raydium-sdk";

setLoggerLevel("Common.Api", "debug");
```

## Features

### Initialization

```
import { Raydium } from '@raydium-io/raydium-sdk'
const raydium = await Raydium.load({
  connection,
  owner, // key pair or publicKey
  signAllTransactions, // optional - provide sign functions provided by @solana/wallet-adapter-react
  tokenAccounts, // optional, if dapp handle it by self can provide to sdk
  tokenAccountRowInfos // optional, if dapp handle it by self can provide to sdk
})
```

#### how to transform token account data

```
import { parseTokenAccountResp } from '@raydium-io/raydium-sdk'

const solAccountResp = await connection.getAccountInfo(ownerPubKey);
const tokenAccountResp = await connection.getTokenAccountsByOwner(
  ownerPubKey,
  { programId: TOKEN_PROGRAM_ID },
);

const { tokenAccounts, tokenAccountRawInfos } = parseTokenAccountResp({
  solAccountResp,
  tokenAccountResp,
})
```

#### data after initialization

```
# token
raydium.token.allTokens
raydium.token.allTokenMap
raydium.token.tokenMints
raydium.token.tokenPrices

# liquidity pool
raydium.liquidity.allPools
raydium.liquidity.allPoolIdSet
raydium.liquidity.allPoolMap
raydium.liquidity.allPairs
raydium.liquidity.allPairsMap
raydium.liquidity.lpTokenMap
raydium.liquidity.lpPriceMap

# clmm pool
raydium.ammv3.pools.data
raydium.ammv3.pools.dataMap
raydium.ammv3.pools.sdkParsedData
raydium.ammv3.pools.sdkParsedDataMap
raydium.ammv3.pools.hydratedData
raydium.ammv3.pools.hydratedDataData

# farm pool
raydium.farm.allFarms
raydium.farm.allParsedFarms
raydium.farm.allHydratedFarms
raydium.farm.allHydratedFarmMap

# token account
raydium.account.tokenAccounts
raydium.account.tokenAccountRawInfos
```

### Liquidity

```
import { Raydium, Token, Percent, TokenAmount } from '@raydium-io/raydium-sdk'
import BN from 'bn.js'

const raydium = await Raydium.load({
  connection,
  owner // please provide key pair, if want to handle tx by yourself, just provide publicKey
  signAllTransactions // optional - provide sign functions provided by @solana/wallet-adapter-react
})

// Raydium.load call raydium.liquidity.load() automatically, also can call raydium.liquidity.load() manually

// if need trading pair info, call await raydium.liquidity.loadPairs()

const { transaction, signers, execute } = raydium.liquidity.createPool({
  version: 4,
  baseMint: new PublicKey(),
  quoteMint: new PublicKey(),
  marketId: new PublicKey() // https://docs.projectserum.com/serum-ecosystem/build-on-serum/add-a-market-on-serum-serum-academy
})

const { transaction, signers, execute } = raydium.liquidity.initPool({
  version: 4,
  baseMint: new PublicKey(),
  quoteMint: new PublicKey(),
  marketId: new PublicKey(),
  baseAmount: raydium.mintToTokenAmount({ mint, amount: "10" }),
  quoteAmount: raydium.mintToTokenAmount({ mint, amount: "20" }),
})
const { transaction, signers, execute } = raydium.liquidity.addLiquidity({
  poolId: new PublicKey(pool),
  payer: new PublicKey(payer), // optional
  amountInA: raydium.mintToTokenAmount({ mint, amount: "20" }),
  amountInB: raydium.mintToTokenAmount({ mint, amount: "30" }),
  fixedSide: "a", // "a" or "b"
})
const { transaction, signers, execute } = raydium.liquidity.removeLiquidity({
  poolId: new PublicKey(pool),
  payer: new PublicKey(payer), // optional
  amountIn: raydium.mintToTokenAmount({ mint, amount: "20" }),
})

const txId = execute()
```

### Liquidity

```
import { Raydium, Token, Percent, TokenAmount } from '@raydium-io/raydium-sdk'
import BN from 'bn.js'

const raydium = await Raydium.load({
  connection,
  owner // please provide key pair, if want to handle tx by yourself, just provide publicKey
  signAllTransactions // optional - provide sign functions provided by @solana/wallet-adapter-react
})

await raydium.ammV3.load() // load all clmm pool data

```

### Farm

```
import { Raydium, Token, Percent, TokenAmount } from '@raydium-io/raydium-sdk'
import BN from 'bn.js'

const raydium = await Raydium.load({
  connection,
  owner // please provide key pair, if want to handle tx by yourself, just provide publicKey
  signAllTransactions // optional - provide sign functions provided by @solana/wallet-adapter-react
})

await raydium.farm.load() // default load farms data
await raydium.farm.loadHydratedFarmInfo // load farms data width apr and detail info

```

#### Farm methods

```
raydium.farm.create({
  poolId, // oneOf liquidity pool id in https://api.raydium.io/v2/sdk/liquidity/mainnet.json
  rewardInfos // reward info array
})
const { transaction, signers, execute } = raydium.farm.restartReward({ farmId, rewardInfos })
const { transaction, signers, execute } = raydium.farm.addNewRewardToken({ poolId, newRewardInfo })
const { transaction, signers, execute } = raydium.farm.deposit({ farmId, amount })
const { transaction, signers, execute } = raydium.farm.withdraw({ farmId, amount })
const { transaction, signers, execute } = raydium.farm.withdraw({ farmId, withdrawMint: new PublicKey(xxx) })
const txId = execute()
```

#### Reward info example

```
const startTime = new BN(new Date("2022-08-20 15:00").getTime() / 1000)
const endTime = new BN(new Date("2022-08-30 15:00").getTime() / 1000)
const rewardPerSecond = new BN(totalAmount / (endTime - startTime))

const rewardInfo = {
  poolId: "13uCPybNakXHGVd2DDVB7o2uwXuf9GqPFkvJMVgKy6UJ",
  rewardInfos:[{
    rewardOpenTime: startTime,
    rewardEndTime: endTime,
    rewardMint: new PublicKey("So11111111111111111111111111111111111111112"),
    rewardPerSecond: rewardPerSecond.
  }]
}
```

### Swap

#### direct swap with automatically routes

```
import { Raydium, Token, Percent, TokenAmount } from '@raydium-io/raydium-sdk'
import BN from 'bn.js'

const raydium = Raydium.load({
  connection,
  owner // please provide key pair, if want to handle tx by yourself, just provide publicKey
  signAllTransactions // optional - provide sign functions provided by @solana/wallet-adapter-react
})

const { transaction, signers, execute } = await raydium.trade.directSwap({
  inputMint: ${rayMint},
  outputMint: PublicKey.default, // PublicKey as sol mint
  amountIn: "1.2345",
  slippage: new Percent(5, 100),
  fixedSide: "in"
})

const txId = execute()
```

#### custom controlled route swap

```
const { availablePools, best, routedPools } = await raydium.trade.getAvailablePools({
  inputMint: ${rayMint},
  outputMint: "sol",
})

const inputToken = raydium.mintToToken("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6Rdecimals")
// or use new Token({ mint: "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6Rdecimals: 6, name: "Raydium", symbol: "RAY" })
const outToken = raydium.mintToToken(PublicKey.default)
// or use new Token({ mint: PublicKey.default }) <= sdk will generate wsol token automatically

const { amountOut, minAmountOut, routes, routeType } =
  await raydium.swap.getBestAmountOut({
  pools: routedPools, // optional, if not passed, will auto choose best route
  inputToken: inputToken,
  outputToken: outToken,
  amountIn: '1.2345', // or new BN("1,2345");
  slippage: new Percent(10, 100) // 10%
})

const { transaction, signers, execute } = await raydium.trade.swap({
  routes,
  routeType,
  amountIn: raydium.mintToTokenAmount({ mint: ${rayMint}), amount: "1.2345" }),
  amountOut: minAmountOut,
  fixedSide: "in"
})

const txId = execute()
```

## Reference

- https://github.com/coral-xyz/anchor/tree/master/ts
- https://github.com/ethers-io/ethers.js/tree/master/packages/bignumber
- https://github.com/pancakeswap/pancake-swap-sdk
- https://github.com/project-serum/serum-ts
- https://yarnpkg.com/advanced/lifecycle-scripts

---
_Source: https://npm.io/package/test-raydium-sdk-v2 · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
