> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Các chỉ thị CPMM

> Mọi chỉ thị trên chương trình CPMM, cùng với các đối số, danh sách tài khoản, điều kiện tiền/sau và các lỗi nó có thể trả về.

<Info>
  **Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.**

  [Xem bản tiếng Anh →](/products/cpmm/instructions)
</Info>

<Info>
  Trang này là tài liệu tham khảo chỉ thị có thẩm quyền. Để xem code thực tế tạo ra các chỉ thị này, xem [`products/cpmm/code-demos`](/vi/products/cpmm/code-demos). Để hiểu ý nghĩa mã lỗi, xem [`reference/error-codes`](/vi/reference/error-codes).
</Info>

## Tóm tắt chỉ thị

| Tên phân biệt              | Ai ký                                        | Nó làm gì                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| -------------------------- | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Initialize`               | nhà tạo pool                                 | Tạo pool CPMM mới từ hai mint và một `AmmConfig`. Không cần phép; bất kỳ ai cũng có thể gọi nó. Cứng mã `enable_creator_fee = false` trên pool mới. Tài khoản `pool_state` có thể là PDA chính tắc hoặc một keypair ngẫu nhiên mới (xem Accounts của Initialize).                                                                                                                                                                                                                                                                                                                 |
| `InitializeWithPermission` | người trả tiền + chủ sở hữu PDA `Permission` | Phiên bản được phép của `Initialize`. Người gọi (`payer`) phải sở hữu một PDA `Permission` được dẫn xuất từ pubkey của họ. Được sử dụng bởi các nền tảng cần tạo pool có gating (ví dụ: graduations của LaunchLab). Cho phép người gọi ghim `creator_fee_on` (`BothToken` / `OnlyToken0` / `OnlyToken1`) và bắt buộc `enable_creator_fee = true` trên pool mới. Trường `creator` trên `pool_state` được đặt thành tài khoản `creator` được truyền riêng biệt, không phải người trả tiền. Cùng tính linh hoạt PDA-chính-tắc-hoặc-random-keypair cho `pool_state` như `Initialize`. |
| `Deposit`                  | LP                                           | Thêm thanh khoản trong cả hai token; nhận token LP.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `Withdraw`                 | LP                                           | Đốt token LP; nhận cả hai token cơ sở theo tỷ lệ.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `SwapBaseInput`            | người trao đổi                               | Swap input chính xác (`amount_in` vào, ≥ `minimum_amount_out` ra).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `SwapBaseOutput`           | người trao đổi                               | Swap output chính xác (≤ `maximum_amount_in` vào, `amount_out` ra).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `CollectProtocolFee`       | `protocol_owner` (từ `AmmConfig`)            | Thu gom phí giao thức tích lũy từ các kho.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `CollectFundFee`           | `fund_owner` (từ `AmmConfig`)                | Thu gom phí quỹ tích lũy từ các kho.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `CollectCreatorFee`        | `pool_creator`                               | Thu gom phí tạo tích lũy (nếu phí tạo được bật).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `UpdatePoolStatus`         | `admin`                                      | Tạm dừng / tiếp tục các hoạt động cụ thể trên pool thông qua một bitmask.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `UpdateAmmConfig`          | `admin`                                      | Thay đổi tỷ lệ phí hoặc chủ sở hữu giao thức/quỹ trên một `AmmConfig`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `CreateAmmConfig`          | `admin`                                      | Tạo tầng phí mới (tài khoản `AmmConfig` mới).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `CreatePermissionPda`      | `admin`                                      | Mint một PDA `Permission` cho phép một cơ quan cụ thể gọi `InitializeWithPermission`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `ClosePermissionPda`       | `admin`                                      | Thu hồi một PDA `Permission` đã phát hành trước đó.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

Bitmask trạng thái: mỗi `status` của pool là `u8` trong đó bit 0 = deposit bị vô hiệu hóa, bit 1 = withdraw bị vô hiệu hóa, bit 2 = swap bị vô hiệu hóa (`PoolStatusBitIndex { Deposit, Withdraw, Swap }` trong chương trình). Một bit rõ ràng có nghĩa là hoạt động được phép; một bit được đặt có nghĩa là nó bị tạm dừng. `UpdatePoolStatus` nhận một `u8` thô và ghi đè giá trị hiện có.

Các phần tiếp theo đi qua từng phần chi tiết. Thứ tự tài khoản tuân theo IDL của CPMM; SDK và client Rust trong `raydium-cp-swap/programs/cp-swap/src/instructions` phù hợp với thứ tự này.

## `Initialize`

Tạo pool CPMM mới.

**Các đối số**

```
init_amount_0: u64
init_amount_1: u64
open_time:     u64   // Unix timestamp; swaps bị từ chối trước thời điểm này
```

**Tài khoản** (W = có thể ghi, S = người ký)

| #  | Tên                        | W | S   | Ghi chú                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| -- | -------------------------- | - | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1  | `creator`                  | W | S   | Trả tiền thuê; được ghi lại là `pool_state.pool_creator`.                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 2  | `amm_config`               |   |     | Tầng phí được chọn.                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 3  | `authority`                |   |     | PDA cơ quan toàn cầu CPMM.                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 4  | `pool_state`               | W | S\* | Được `init` tại đây. **Hoặc** PDA chính tắc `["pool", amm_config, token_0_mint, token_1_mint]` **hoặc** một keypair ngẫu nhiên mới — khi không phải PDA chính tắc, chương trình yêu cầu `pool_state` ký (`require_eq!(pool_account_info.is_signer, true)`). Đường dẫn keypair ngẫu nhiên cho phép người tạo tránh những nỗ lực front-running trên PDA chính tắc. Các PDA xuôi dòng (`lp_mint`, `vaults`, `observation_state`) được dẫn xuất từ `pool_state.key()` dù sao. |
| 5  | `token_0_mint`             |   |     | Được sắp xếp: `token_0_mint < token_1_mint`.                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 6  | `token_1_mint`             |   |     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 7  | `lp_mint`                  | W |     | Được `init` tại đây. Cơ quan được đặt thành `authority`.                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 8  | `creator_token_0`          | W |     | ATA nguồn cho `init_amount_0`.                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 9  | `creator_token_1`          | W |     | ATA nguồn cho `init_amount_1`.                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 10 | `creator_lp_token`         | W |     | Đích cho LP (tạo nếu thiếu).                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 11 | `token_0_vault`            | W |     | Được `init` tại đây. Được sở hữu bởi `authority`.                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 12 | `token_1_vault`            | W |     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 13 | `create_pool_fee`          | W |     | ATA đích cho `create_pool_fee` được trả bởi người tạo.                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 14 | `observation_state`        | W |     | Được `init` tại đây.                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 15 | `token_program`            |   |     | SPL Token (cho LP mint).                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 16 | `token_0_program`          |   |     | SPL Token hoặc Token-2022.                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 17 | `token_1_program`          |   |     | SPL Token hoặc Token-2022.                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 18 | `associated_token_program` |   |     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 19 | `system_program`           |   |     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 20 | `rent`                     |   |     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

`*` `pool_state` chỉ ký trên đường dẫn random-keypair; đường dẫn PDA chính tắc chạy mà không cần `pool_state` ký.

**Điều kiện tiền**

* Mint được sắp xếp (`token_0_mint < token_1_mint` theo thứ tự byte).
* Không mint nào sử dụng extension ngoài danh sách cho phép CPMM (`TransferFeeConfig`, `MetadataPointer`, `TokenMetadata`, `InterestBearingConfig`, `ScaledUiAmount`) — xem [`products/cpmm/accounts`](/vi/products/cpmm/accounts#vaults-and-token-2022). Danh sách cho phép nhỏ cho mỗi mint bên trong chương trình bỏ qua kiểm tra để tự onboarding từng trường hợp.
* `creator` có ít nhất `init_amount_0` và `init_amount_1` trong các ATA tương ứng.
* `amm_config.disable_create_pool == false`.

**Điều kiện sau**

* `pool_state` tồn tại với `lp_supply = sqrt(init_amount_0 * init_amount_1) − LOCKED_LP`.
* Người khởi tạo LP của `LOCKED_LP` (`100` lamports token LP) bị khóa vĩnh viễn trong pool — `pool_state.lp_supply` ghi `liquidity − 100` trong khi `100` đơn vị LP vẫn ở ngoài lưu thông, ngăn pool bị thoát hoàn toàn và chia cho không.
* `observation_state` được khởi tạo; `observation_index = 0` và `pool_id = pool_state.key()`.
* `create_pool_fee` lamports được chuyển từ người tạo đến người nhận và đồng bộ hóa dưới dạng SOL gốc (nó là một ATA wSOL).
* Bitmask trạng thái của pool là `0` (deposit / withdraw / swap tất cả đều được bật).
* `enable_creator_fee = false` và `creator_fee_on = BothToken`. `Initialize` **không** hỗ trợ bật phí tạo — đường dẫn đó là `InitializeWithPermission`.
* `open_time` được đẩy tới `block_timestamp + 1` nếu người gọi truyền một giá trị `<= block_timestamp`. Swap bị từ chối trước `open_time`; deposit và withdrawal hoạt động ngay lập tức.

**Lỗi phổ biến** (danh sách đầy đủ trong [`reference/error-codes`](/vi/reference/error-codes))

* `InvalidInput` — mint không được sắp xếp, hoặc mint giống hệt nhau.
* `NotSupportMint` — extension Token-2022 bị chặn.
* `ExceededSlippage` — hiếm; nếu `init_amount_0/1` dẫn đến zero LP do mismatch decimals.

## `Deposit`

Thêm thanh khoản trong cả hai token theo tỷ lệ của pool.

**Các đối số**

```
lp_token_amount:   u64   // bao nhiêu token LP để mint cho LP
maximum_token_0:   u64
maximum_token_1:   u64
```

**Tài khoản**

| #  | Tên                  | W | S |
| -- | -------------------- | - | - |
| 1  | `owner`              |   | S |
| 2  | `authority`          |   |   |
| 3  | `pool_state`         | W |   |
| 4  | `owner_lp_token`     | W |   |
| 5  | `token_0_account`    | W |   |
| 6  | `token_1_account`    | W |   |
| 7  | `token_0_vault`      | W |   |
| 8  | `token_1_vault`      | W |   |
| 9  | `token_program`      |   |   |
| 10 | `token_program_2022` |   |   |
| 11 | `vault_0_mint`       |   |   |
| 12 | `vault_1_mint`       |   |   |
| 13 | `lp_mint`            | W |   |

**Toán học**

```
needed_token_0 = ceil(lp_token_amount * vault_0 / lp_supply)
needed_token_1 = ceil(lp_token_amount * vault_1 / lp_supply)
require(needed_token_0 <= maximum_token_0, "ExceededSlippage")
require(needed_token_1 <= maximum_token_1, "ExceededSlippage")
```

Không có thay đổi đối với tính tỷ lệ của `k` — cả kho và `lp_supply` tỷ lệ theo cùng một hệ số.

**Điều kiện sau**

* `lp_supply += lp_token_amount`.
* `vault_0 += needed_token_0` (ròng của bất kỳ phí chuyển Token-2022 nào trên input).
* `vault_1 += needed_token_1` (ròng của bất kỳ phí chuyển Token-2022 nào trên input).

**Lỗi phổ biến** — `ExceededSlippage`, `ZeroTradingTokens`, `InvalidStatus` nếu deposit bị tạm dừng.

## `Withdraw`

Đốt token LP và nhận cả hai token cơ sở theo tỷ lệ.

**Các đối số**

```
lp_token_amount:   u64
minimum_token_0:   u64
minimum_token_1:   u64
```

**Tài khoản**

| #  | Tên                  | W | S |
| -- | -------------------- | - | - |
| 1  | `owner`              |   | S |
| 2  | `authority`          |   |   |
| 3  | `pool_state`         | W |   |
| 4  | `owner_lp_token`     | W |   |
| 5  | `token_0_account`    | W |   |
| 6  | `token_1_account`    | W |   |
| 7  | `token_0_vault`      | W |   |
| 8  | `token_1_vault`      | W |   |
| 9  | `token_program`      |   |   |
| 10 | `token_program_2022` |   |   |
| 11 | `vault_0_mint`       |   |   |
| 12 | `vault_1_mint`       |   |   |
| 13 | `lp_mint`            | W |   |

(Giống hệt như `Deposit`; `lp_mint` có thể ghi vì token LP bị đốt.)

**Toán học**

```
out_token_0 = floor(lp_token_amount * vault_0 / lp_supply)
out_token_1 = floor(lp_token_amount * vault_1 / lp_supply)
require(out_token_0 >= minimum_token_0, "ExceededSlippage")
require(out_token_1 >= minimum_token_1, "ExceededSlippage")
```

**Điều kiện sau**

* `lp_supply -= lp_token_amount`.
* Kho gửi `out_token_0` / `out_token_1` (gross; người dùng nhận ròng của bất kỳ phí chuyển Token-2022 nào).

## `SwapBaseInput`

Swap input chính xác.

**Các đối số**

```
amount_in:            u64
minimum_amount_out:   u64
```

**Tài khoản**

| #  | Tên                    | W | S |
| -- | ---------------------- | - | - |
| 1  | `payer`                |   | S |
| 2  | `authority`            |   |   |
| 3  | `amm_config`           |   |   |
| 4  | `pool_state`           | W |   |
| 5  | `input_token_account`  | W |   |
| 6  | `output_token_account` | W |   |
| 7  | `input_vault`          | W |   |
| 8  | `output_vault`         | W |   |
| 9  | `input_token_program`  |   |   |
| 10 | `output_token_program` |   |   |
| 11 | `input_token_mint`     |   |   |
| 12 | `output_token_mint`    |   |   |
| 13 | `observation_state`    | W |   |

Thứ tự **input → output** là theo hướng của người dùng, không phải `token_0 / token_1` chính tắc của pool. Chương trình tìm ra kho nào là kho nào bằng cách so khớp mint.

**Toán học** — xem [`products/cpmm/math`](/vi/products/cpmm/math).

**Điều kiện tiền**

* `open_time <= now`.
* `pool_status` cho phép swap.
* Không mint nào bị tạm dừng hoặc đóng băng cho cơ quan này.
* `amount_in > 0`.

**Lỗi phổ biến**

* `ExceededSlippage` — `amount_out < minimum_amount_out`.
* `ZeroTradingTokens` — giao dịch làm tròn xuống không.
* `NotApproved` — pool bị tạm dừng cho swap thông qua `UpdatePoolStatus`.
* `InvalidInput` — mint không khớp với bất kỳ mint kho nào của pool.

## `SwapBaseOutput`

Swap output chính xác.

**Các đối số**

```
max_amount_in:  u64
amount_out:     u64
```

**Tài khoản** — giống như `SwapBaseInput`.

**Toán học** — đường cong nghịch đảo với ceiling, xem [`products/cpmm/math`](/vi/products/cpmm/math).

**Lỗi phổ biến** — `ExceededSlippage` (`gross_in > max_amount_in`), `ZeroTradingTokens`, `InvalidInput`, `NotApproved`.

## `CollectProtocolFee`

Thu gom phí giao thức tích lũy từ các kho đến đích giao thức.

**Các đối số** — không có.

**Tài khoản**

| #  | Tên                         | W | S |                                            |
| -- | --------------------------- | - | - | ------------------------------------------ |
| 1  | `owner`                     |   | S | Phải khớp với `amm_config.protocol_owner`. |
| 2  | `authority`                 |   |   |                                            |
| 3  | `pool_state`                | W |   |                                            |
| 4  | `amm_config`                |   |   |                                            |
| 5  | `token_0_vault`             | W |   |                                            |
| 6  | `token_1_vault`             | W |   |                                            |
| 7  | `vault_0_mint`              |   |   |                                            |
| 8  | `vault_1_mint`              |   |   |                                            |
| 9  | `recipient_token_0_account` | W |   |                                            |
| 10 | `recipient_token_1_account` | W |   |                                            |
| 11 | `token_program`             |   |   |                                            |
| 12 | `token_program_2022`        |   |   |                                            |

**Hiệu ứng**

```
transfer pool_state.protocol_fees_token0 from vault_0 to recipient_0
transfer pool_state.protocol_fees_token1 from vault_1 to recipient_1
pool_state.protocol_fees_token0 = 0
pool_state.protocol_fees_token1 = 0
```

Không có thay đổi đối với cân bằng hiệu quả của đường cong (phí tích lũy đã được loại trừ).

**Lỗi phổ biến** — `NotApproved` nếu người ký không phải là `protocol_owner`.

## `CollectFundFee`

Cùng hình dạng như `CollectProtocolFee` nhưng được ký bởi `fund_owner` và zeroing các bộ đếm `fund_fees_*`.

## `CollectCreatorFee`

Cùng hình dạng lần nữa, được ký bởi `pool_state.pool_creator`. Chỉ phát ra chuyển nếu pool được khởi tạo với tỷ lệ phí tạo không-không.

## `UpdatePoolStatus`

Tạm dừng hoặc tiếp tục các hoạt động riêng lẻ trên pool. Trường `status` là một bitmask:

| Bit | Cờ                  | Hiệu ứng khi được đặt                       |
| --- | ------------------- | ------------------------------------------- |
| 0   | `DEPOSIT_DISABLED`  | `Deposit` từ chối với `NotApproved`.        |
| 1   | `WITHDRAW_DISABLED` | `Withdraw` từ chối.                         |
| 2   | `SWAP_DISABLED`     | `SwapBaseInput` / `SwapBaseOutput` từ chối. |

**Các đối số**

```
status: u8      // bitmask mới
```

**Tài khoản**

| # | Tên          | W | S |                                                  |
| - | ------------ | - | - | ------------------------------------------------ |
| 1 | `authority`  |   | S | Phải khớp với khóa admin trên chương trình CPMM. |
| 2 | `pool_state` | W |   |                                                  |

Khóa admin là cơ quan nâng cấp trên chương trình CPMM — trong thực tế, multisig của Raydium. Xem [`security/admin-and-multisig`](/vi/security/admin-and-multisig).

## `CreateAmmConfig`

Tạo tầng phí mới.

**Các đối số**

```
index:             u16
trade_fee_rate:    u64
protocol_fee_rate: u64
fund_fee_rate:     u64
create_pool_fee:   u64
```

**Tài khoản**

| # | Tên              | W | S |                      |
| - | ---------------- | - | - | -------------------- |
| 1 | `owner`          | W | S | Admin.               |
| 2 | `amm_config`     | W |   | Được `init` tại đây. |
| 3 | `system_program` |   |   |                      |

**Điều kiện tiền**

* Không có `AmmConfig` hiện có với cùng `index`.
* `protocol_fee_rate + fund_fee_rate <= FEE_RATE_DENOMINATOR_VALUE`.

## `UpdateAmmConfig`

Thay đổi tỷ lệ phí hoặc quyền sở hữu trên một `AmmConfig` hiện có. Nhận một `param: u8` (phân biệt cho trường nào để cập nhật) và một `value: u64`. Ngữ nghĩa giá trị cho mỗi param trong nguồn; thường là:

* `param = 0` → `trade_fee_rate`
* `param = 1` → `protocol_fee_rate`
* `param = 2` → `fund_fee_rate`
* `param = 3` → `new_protocol_owner` (chuyển byte `Pubkey` dưới dạng reinterpret)
* `param = 4` → `new_fund_owner`
* `param = 5` → `create_pool_fee`
* `param = 6` → `disable_create_pool`

Các thay đổi được ký bởi admin và ảnh hưởng đến **mọi pool ràng buộc với `AmmConfig` này** trong swap tiếp theo. Không có migration; pool chỉ đơn giản đọc các giá trị mới.

## Ma trận thay đổi trạng thái

| Chỉ thị                    | `lp_supply` | Cân bằng kho              | Trường phí tích lũy                                                  | `observation`                        |
| -------------------------- | ----------- | ------------------------- | -------------------------------------------------------------------- | ------------------------------------ |
| `Initialize`               | + init LP   | + `init_amount_{0,1}`     | 0                                                                    | init                                 |
| `InitializeWithPermission` | + init LP   | + `init_amount_{0,1}`     | 0                                                                    | init                                 |
| `Deposit`                  | +           | + cả hai                  | —                                                                    | —                                    |
| `Withdraw`                 | −           | − cả hai                  | —                                                                    | —                                    |
| `SwapBaseInput`            | —           | + in, − out               | + `trade_fee` chia thành giao thức/quỹ; + `creator_fee` nếu được bật | + (nếu khoảng thời gian đã trôi qua) |
| `SwapBaseOutput`           | —           | + in, − out               | + `trade_fee` chia thành giao thức/quỹ; + `creator_fee` nếu được bật | + (nếu khoảng thời gian đã trôi qua) |
| `CollectProtocolFee`       | —           | − (bằng bucket giao thức) | `protocol_*` → 0                                                     | —                                    |
| `CollectFundFee`           | —           | − (bằng bucket quỹ)       | `fund_*` → 0                                                         | —                                    |
| `CollectCreatorFee`        | —           | − (bằng bucket tạo)       | `creator_*` → 0                                                      | —                                    |
| `UpdatePoolStatus`         | —           | —                         | —                                                                    | —                                    |

## Tiếp theo là gì

* [`products/cpmm/code-demos`](/vi/products/cpmm/code-demos) — mẫu TypeScript có thể chạy được cho các điều trên.
* [`reference/error-codes`](/vi/reference/error-codes) — bảng lỗi Anchor đầy đủ.
* [`products/cpmm/fees`](/vi/products/cpmm/fees) — mô hình tích lũy phí mà `CollectProtocolFee` / `CollectFundFee` / `CollectCreatorFee` thoát ra.

Nguồn:

* [`raydium-io/raydium-cp-swap` — instructions](https://github.com/raydium-io/raydium-cp-swap/tree/master/programs/cp-swap/src/instructions)
* [Raydium SDK v2 — `@raydium-io/raydium-sdk-v2`](https://github.com/raydium-io/raydium-sdk-V2)
