@cetusprotocol/vaults-sdk

中文文档
1.7.7发布于 2026/09/20Apache-2.0TypeScriptES Module零依赖近 30 天下载 2492

Cetus 保险库的 SDK

中文使用文档
文档目录15 节
  1. 开始
  2. 如何使用断层SDK?
  3. 安装
  4. 设置
  5. 初始化 SDK
  6. 使用量
  7. 1. 按所有者地址获取默认值
  8. 2. 通过身份识别获取默认值
  9. 3. 获取地壳资产
  10. 4. 存款业务
  11. 5. 撤出行动
  12. 6. Vest业务
  13. 7. 合同出错代码
  14. 更多关于 Cetus
  15. 许可证

@cetusprotocol/ vaults-sdk (英语)

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

开始

如何使用断层SDK?

安装

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

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

npm install @cetusprotocol/vaults-sdk

设置

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

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

初始化 SDK

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

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

const sdk = CetusVaultsSDK.createSDK()

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

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

const sdk = CetusVaultsSDK.createSDK({ env })

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

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

使用量

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

const wallet = 'YOUR_WALLET_ADDRESS'

sdk.setSenderAddress(wallet)

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

const new_rpc_url = 'YOUR_NEW_FULL_NODE_URL'

sdk.updateFullRpcUrl(new_rpc_url)

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

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

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. 通过身份识别获取默认值

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

const vault_id = 'YOUR_VAULT_ID'

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

3. 获取地壳资产

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

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

4. 存款业务

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

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代币并接收所基于的资产.

/**
 * @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 信息列表

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

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

6.2 获得单位断层最优信息

找一个金库的背心信息.

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
const vestNFTList = await sdk.Vest.getOwnerVaultVestNFT(senderAddress)

6.4 构建重置交易

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

  • 选项:赎回选项的组合,每个选项包含:
    • 保险库 id: 默认 ID
    • 背书 nft id: Vesting NFT ID
    • 期间:
    • 硬币类型 a:token A类型
    • 硬币类型 b:托肯 B类型
  • tx: 可选交易对象
 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 文档。 。 。 .

加入Cetus社区 Cetus 迪斯科尔。 。 。 .

许可证

麻省理工学院

版本与发布记录

@cetusprotocol/vaults-sdk 共发布 150 个版本,首次发布于 2024/09/26;过去 12 个月发布了 39 个版本。

版本发布日期距今
1.7.7latest2026/09/201 个月前
0.0.0-experimental-20260920105550experimental2026/09/201 个月前
0.0.0-experimental-202609201012582026/09/201 个月前
1.7.62026/08/182 个月前
0.0.0-experimental-202608181437372026/08/182 个月前
1.7.52026/07/273 个月前

关于 @cetusprotocol/vaults-sdk 的常见问题

@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 和提交记录判断。