# @cetusprotocol/vaults-sdk 中文文档

规范地址：https://npmcn.com/package/%40cetusprotocol/vaults-sdk/

版本：1\.7\.7
npm 元数据更新时间：2026-09-20T06:59:02.804Z
中文译文更新时间：2026-11-09T13:49:10.300Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cetusprotocol/vaults-sdk
原文对照：https://npmcn.com/package/%40cetusprotocol/vaults-sdk/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：697 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：@mysten/sui \>=2\.28\.0，@cetusprotocol/farms-sdk \*，@cetusprotocol/common-sdk \*，@cetusprotocol/sui-clmm-sdk \*，@cetusprotocol/aggregator-sdk \*
- 首次发布：2024-09-26T13:39:14.688Z
- 最新版本发布：2026-09-20T06:59:02.649Z
- 近 30 天下载量：2492（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：150（近 12 个月 39 个）

## 中文简介

Cetus 保险库的 SDK

## 安装

```sh
npm install @cetusprotocol/vaults-sdk
```

也可以使用：`pnpm add @cetusprotocol/vaults-sdk`、`yarn add @cetusprotocol/vaults-sdk`、`bun add @cetusprotocol/vaults-sdk`

## README

# @cetusprotocol/ vaults-sdk (英语)

SDK提供了一个用于自动化流动性管理的Vaults模块. 这一模块使用户能够自动管理其流动性状况,包括及时再投资费用和奖励,以及在必要时进行再平衡。 当用户将信使存入地壳时,这些信使用于提供地壳所持有位置内的流动性,而LP信使被铸造来代表其在流动性中的份额.

## 开始

## 如何使用断层SDK?

### 安装

开始使用 `Vaults SDK`,您首先需要在您的 TypeScript 项目中安装:

npm 链接 : [https://www.npmjs.com/package/@cetusprotocol/vaults-sdk (中文(简体) )](https://www.npmjs.com/package/@cetusprotocol/vaults-sdk)

```bash
npm install @cetusprotocol/vaults-sdk
```

### 设置

将 SDK 导入到您打算使用的 TypeScript 文件 :

```typescript
import { CetusVaultsSDK } from '@cetusprotocol/vaults-sdk'
```

### 初始化 SDK

以所需的配置参数初始化 SDK. 这通常包括必要时设置网络和API密钥.

如果您想使用主网和官方的Sui rpc url,可以如下方式进行:

```typescript
const sdk = CetusVaultsSDK.createSDK()
```

如果您想要设置自己的完整节点URL或网络( 您可以选择网络的“ mainnet ” 或“ testnet ” ), 您可以选择如下:

```typescript
const env = 'mainnet'
const full_rpc_url = 'YOUR_FULL_NODE_URL'
const wallet = 'YOUR_WALLET_ADDRESS'

const sdk = CetusVaultsSDK.createSDK({ env })
```

如果您想要设置自己的完整节点 URL 或 SuiGrpcClient, 您可以按以下方式设置 :

```typescript
const sdk = CetusVaultsSDK.createSDK({ env, sui_client })
// or
const sdk = CetusVaultsSDK.createSDK({ env, full_rpc_url })
```

## 使用量

连接钱包后,如果需要使用钱包地址来做某事,应当设置在 `sdk.setSenderAddress`。 。 。 .

```typescript
const wallet = 'YOUR_WALLET_ADDRESS'

sdk.setSenderAddress(wallet)
```

如果您需要更改您的 rpc url, 您可以按以下方式进行 :

```typescript
const new_rpc_url = 'YOUR_NEW_FULL_NODE_URL'

sdk.updateFullRpcUrl(new_rpc_url)
```

### 1\. 按所有者地址获取默认值

这种方法可以检索所有与特定所有者地址相关的金库 .

```typescript
const owner = '0x...'
const vaults_result = await sdk.Vaults.getOwnerVaultsBalance(owner)

// result
[
  {
    vault_id: '0x5732b81e659bd2db47a5b55755743dde15be99490a39717abc80d62ec812bcb6',
    clmm_pool_id: '0x6c545e78638c8c1db7a48b282bb8ca79da107993fcb185f75cedc1f5adb2f535',
    owner: '0x...',
    lp_token_type: '0xb490d6fa9ead588a9d72da07a02914da42f6b5b1339b8118a90011a42b67a44f::lp_token::LP_TOKEN',
    lp_token_balance: '739242144247',
    liquidity: '799210772591',
    tick_lower_index: 100,
    tick_upper_index: 394,
    amount_a: '5514867803',
    amount_b: '6197505499',
    coin_type_a: '0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT',
    coin_type_b: '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI'
  },
  // ...more vaults
]
```

### 2\. 通过身份识别获取默认值

这种方法可以获取特定金库的详细信息.

```typescript
const vault_id = 'YOUR_VAULT_ID'

const vault = await sdk.Vaults.getVault(vault_id)
```

### 3\. 获取地壳资产

这种方法为特定金库取回了LP符号余额.

```typescript
const ft_asset = await sdk.getOwnerCoinBalances('0x0..', vault?.lp_token_type)
```

### 4\. 存款业务

将流动资金存入金库。 用户可以存入硬币A和硬币B,相關的LP Token会被刻制给用户.

```typescript
const input_amount = toDecimalsAmount(3, 9).toString()
const InputType = {
  Both: 'both',
  OneSide: 'oneSide',
}

// Calculate deposit amount
const result = await sdk.Vaults.calculateDepositAmount({
  vault_id,
  fix_amount_a: false,
  input_amount,
  slippage: 0.01,
  side: InputType.OneSide,
})
// Build and send transaction
const tx = new Transaction()
const params: DepositParams = {
  vault_id,
  slippage: 0.01,
  deposit_result: result,
  coin_object_b: VaultsUtils.buildCoinWithBalance(
    BigInt(input_amount),
    '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI',
    tx
  ),
  return_lp_token: true,
}
const lp_coin = await sdk.Vaults.deposit(params, tx)
if (lp_coin) {
  tx.transferObjects([lp_coin], '0x0..')
}
```

### 5\. 撤出行动

从保险库取出流动资金。 用户可以取出LP代币并接收所基于的资产.

```typescript
/**
 * @param {Object} params - The parameters for the calculateWithdrawAmount function.
 * @param {string} params.vault_id - The ID of the vault.
 * @param {boolean} params.fix_amount_a - Whether to fix the amount of token A. If true, the input_amount represents token A amount; if false, it represents token B amount.
 * @param {string} params.input_amount - The input amount. If is_ft_input is true, this is the LP token amount; if false, this is the token amount (either A or B based on fix_amount_a).
 * @param {number} params.slippage - The slippage percentage (eg: 0.01 = 1%)
 * @param {boolean} params.is_ft_input - Whether the input is LP token. If true, input_amount is LP token amount; if false, input_amount is token amount.
 * @param {InputType} params.side - The withdrawal type. Both for withdrawing both tokens, OneSide for withdrawing a single token.
 * @param {string} params.max_ft_amount - The amount of LP tokens held by the user. In OneSide mode, this value is used to balance the withdrawal amount.
 */
const result = await sdk.Vaults.calculateWithdrawAmount({
  vault_id,
  fix_amount_a: true,
  input_amount: '1000000000',
  slippage: 0.01,
  is_ft_input: false,
  side: InputType.Both,
  max_ft_amount: '',
})

/**
 * @param {Object} params - The parameters for the withdraw function.
 * @param {string} params.vault_id - The ID of the vault.
 * @param {number} params.slippage - The slippage percentage (0-1).
 * @param {string} params.ft_amount - The amount of LP tokens to burn.
 * @param {string} params.return_coin - Optional. If set to true, returns the coin object. The user needs to handle it.
 */
const tx = new Transaction()
const { return_coin_a, return_coin_b } = await sdk.Vaults.withdraw(
  {
    vault_id,
    slippage: 0.01,
    ft_amount: result.burn_ft_amount,
    return_coin: true,
  },
  tx
)
if (return_coin_a) {
  tx.transferObjects([return_coin_a], sdk.senderAddress)
}
if (return_coin_b) {
  tx.transferObjects([return_coin_b], sdk.senderAddress)
}

const send_key_pair = 'THE_KEY_PAIR_GENERATED_BY_YOUR_PRIVATE_KEY'

const tx_result = await sdk.fullClient.sendTransaction(send_key_pair, payload)
```

### 6\. Vest业务

#### 6.1 获取 Vault 的 Vest 信息列表

为多个保险库获取背心信息.

```typescript
const vestInfoList = await sdk.Vest.getVaultsVestInfoList([vaultId])
```

#### 6.2 获得单位断层最优信息

找一个金库的背心信息.

```typescript
async getVaultsVestInfo(vault_id: string, force_refresh = true): Promise<VaultsVestInfo>
```

#### 6.3 获取用户的 Vault Vest NFT 列表

获取指定地址拥有的所有 Vault Vest NFT 。 每个NFT包含以下信息:

-   编号: NFT ID
-   索引:索引
-   保险库 id: 默认 ID
-   lp amount: LP 令牌数量
-   已赎回的金额 amount: redeemed ment
-   已损坏 a:已损坏
-   损坏 b:托肯 B 损坏
-   周期 infos: 期间信息
-   uRL: NFT URL (英语)
-   名称: NFT 名称
-   发件人 id: Vester ID

```typescript
const vestNFTList = await sdk.Vest.getOwnerVaultVestNFT(senderAddress)
```

#### 6.4 构建重置交易

构建赎回交易有效载荷. 参数描述 :

-   选项:赎回选项的组合,每个选项包含:
    -   保险库 id: 默认 ID
    -   背书 nft id: Vesting NFT ID
    -   期间:
    -   硬币类型 a:token A类型
    -   硬币类型 b:托肯 B类型
-   tx: 可选交易对象

```typescript
 const vestInfo = await sdk.Vest.getVaultsVestInfo(vaultId)
const tx = await sdk.Vest.buildRedeemPayload([
  {
    vault_id: vaultId,
    vesting_nft_id: '0x...',
    period: 1,
    coin_type_a: vestInfo.coin_type_a,
    coin_type_b: vestInfo.coin_type_b,
  }
])

// Execute transaction
const transferTxn = await sdk.FullClient.executeTx(send_key_pair, tx, false)
```

### 7\. 合同出错代码

cetus 智能合同可能返回以下错误代码:

| 模块 | 错误代码 | 说明 | 合同方法 |
| --- | --- | --- | --- |
| 地窖: 地窖 | 1个 | 低于分钟限额的数额 | 删除 |
| 地窖: 地窖 | 2个 | 位置大小错误 | 存款、转移、再投资、移动、流动、再平衡、收割、收割、收割、收割、收割、收割、收割、收割、收割、收割等 |
| 地窖: 地窖 | 3个 | 套件版本贬值 | 检查( p) |
| 地窖: 地窖 | 页:1 | 超额 | 存款 |
| 地窖: 地窖 | 页:1 | 切入量为 0 | 删除, 保存 |
| 地窖: 地窖 | 6个 | 池已暂停 | 获取 收获 资产 by amount |
| 地窖: 地窖 | 第7条 | 无效的硬币类型 | 迁移 流动性 |
| 地窖: 地窖 | 第8条 | 重新平衡增加流动性出错 | 删除 |
| 地窖: 地窖 | 第9条 | 钱不够 | 删除 |
| 地窖: 地窖 | 10个 | 无效的协议收费标准 | 更新 protocol fee rate |
| 地窖: 地窖 | 第11个 | 没有协议费申请许可 | 检查 protocol fee claim 作用 |
| 地窖: 地窖 | 第12条 | 没有操作管理权限 | 检查 再投资 作用,检查 操作 作用 |
| 地窖: 地窖 | 第13条 | 没有池管理权限 | 复选( pool manager 作用) |
| 地窖: 地窖 | 页:1 | 非法财务管制 | 创建默认( v) |
| 地窖: 地窖 | 15个 | 错误的软件包版本 | 更新 package version |
| 地窖: 地窖 | 16个 | 达到的配额 | 存款 |
| 地窖: 地窖 | 页:1 | 未运行 | 回收者、收割者、收割者、收费者、流动者、再投资者、回收者、存款者 |
| 地窖: 地窖 | 第 18 条 | 未重新平衡错失 | 重新平衡 |
| 地窖: 地窖 | 第 19 条 | 配额类型名称出错 | 计算( u) |
| 地窖: 地窖 | 20国 | 相同的硬币类型 | 新组合 key |
| 地窖: 地窖 | 21国 | 无效的硬币类型序列 | 添加文件夹( o) |
| 地窖: 地窖 | 22个 | 铜对存在 | 再投资 收割 资产, flash loan, update slipppage, remove oracle pool |
| 地窖: 地窖 | 第23条 | 无性别歧视的阴茎对 | 闪出( l) |
| 地窖: 地窖 | 24个 | 不正确的闪存贷款金额 | 偿还( f) |
| 地窖: 地窖 | 第25条 | 答错 | 闪出( l) |
| 地窖: 地窖 | 第 26 条 | 甲骨文池出错 | 重新平衡 |
| 地窖: 地窖 | 27个 | Flashloan 计数非零 | 重新平衡 |
| 地窖: 地窖 | 第28条 | 完成不匹配的再平衡阈值 | 重新平衡 |
| 地窖: 地窖 | 29个 | 收获资产不足 | 获取 收获 资产 by amount |
| 地窖: 地窖 | 30个 | 无效的金库操作 | 再投资 收成 资产 |

## 更多关于 Cetus

使用以下链接来进一步了解 Cetus :

学习更多与Cetus合作 [Cetus 文档](https://cetus-1.gitbook.io/cetus-docs)。 。 。 .

加入Cetus社区 [Cetus 迪斯科尔](https://discord.com/channels/1009749448022315008/1009751382783447072)。 。 。 .

## 许可证

麻省理工学院

## 常见问题

### @cetusprotocol/vaults-sdk 是什么？

Cetus 保险库的 SDK

### 如何安装 @cetusprotocol/vaults-sdk？

在项目目录运行 npm install @cetusprotocol/vaults-sdk，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@mysten/sui（\>=2\.28\.0）、@cetusprotocol/farms-sdk（\*）、@cetusprotocol/common-sdk（\*）、@cetusprotocol/sui-clmm-sdk（\*）、@cetusprotocol/aggregator-sdk（\*）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @cetusprotocol/vaults-sdk 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @cetusprotocol/vaults-sdk 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @cetusprotocol/vaults-sdk 可以商用吗？

@cetusprotocol/vaults-sdk 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @cetusprotocol/vaults-sdk 的下载量有多少？

根据 npm 官方下载统计，@cetusprotocol/vaults-sdk 在 2026/10/10 – 2026/11/08 这 30 天内被下载 2,492 次，日均约 83 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @cetusprotocol/vaults-sdk 还在维护吗？

最新版本 1\.7\.7 发布于 2026/09/20（1 个月前）；至今共发布 150 个版本，其中过去 12 个月发布了 39 个；首次发布于 2024/09/26。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

