# @ensofinance/sdk 中文文档

规范地址：https://npmcn.com/package/%40ensofinance/sdk/

版本：2\.7\.1
npm 元数据更新时间：2026-11-10T11:53:05.603Z
中文译文更新时间：2026-11-13T18:07:57.829Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40ensofinance/sdk
原文对照：https://npmcn.com/package/%40ensofinance/sdk/?lang=original
项目主页：https://www.enso.build/
源码仓库：https://github.com/EnsoBuild/sdk-ts

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

- 包体积（解压后）：437 kB，27 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2024-12-24T18:31:08.533Z
- 最新版本发布：2026-11-10T11:53:05.162Z
- 近 30 天下载量：20288（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：54（近 12 个月 8 个）

## 中文简介

与 Enso API 交互的 SDK

## 安装

```sh
npm install @ensofinance/sdk
```

也可以使用：`pnpm add @ensofinance/sdk`、`yarn add @ensofinance/sdk`、`bun add @ensofinance/sdk`

## README

[![NPM Version](https://img.shields.io/npm/v/%40ensofinance%2Fsdk)](https://www.npmjs.com/package/@ensofinance/sdk) [![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/EnsoBuild)](https://x.com/EnsoBuild)

# Enso SDK 软件

Enso SDK提供了一套与Enso快捷键交互的工具和方法. 它包括自动互换路由、多链路由、象征性批准、引用和平衡核对的功能.

## 导言

Enso API提供了两个强大的路由组件:

1.  **路由 API**: 找到跨越多个DeFi协议的最佳执行路径,包括流动性池,出借平台,自动化市场制造者,收益优化器等. 它自动决定两个符号或位置之间的最佳路径.
    
2.  **套装 API**:通过组合动作序列,为复杂的多步DeFi操作启用自定义路由创建器. 这完全适合诸如产量农业、杠杆地位和组合再平衡等先进用途.
    

## 安装

```bash
npm install @ensofinance/sdk
```

或者说

```bash
yarn add @ensofinance/sdk
```

## 快速启动

```typescript
import { EnsoClient } from "@ensofinance/sdk";

// Initialize the client with your API key
const ensoClient = new EnsoClient({
  apiKey: "YOUR_API_KEY",
});

// Get the best route from one token to another
const routeData = await ensoClient.getRouteData({
  fromAddress: "0xYourAddress",
  chainId: 1,
  amountIn: ["1000000000000000000"],
  tokenIn: ["0xTokenInAddress"],
  tokenOut: ["0xTokenOutAddress"],
  routingStrategy: "router",
});

// Execute the transaction with your web3 provider
// const tx = await web3.eth.sendTransaction(routeData.tx);
```

## 例行战略

可供公众使用的路线策略 SDK :

-   `router` - 使用作为通用路由器的单一合同
-   `delegate` - 以代办电话的形式返回呼叫数据,用于智能账户
-   `ensowallet-v2` - 返回用于部署Enso智能账户的调用数据,并在同一交易中执行智能账户内部的所有逻辑

## 核心特征

### 调试批准

获取批准数据,以便在使用时允许象征性支出 `router` 作为 `routingStrategy` (使用时不需要) `delegate`:

```typescript
// Example: Approving USDC for spending
const approvalData = await ensoClient.getApprovalData({
  fromAddress: "0xYourAddress",
  tokenAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
  chainId: 1,
  amount: "1000000000", // 1000 USDC (6 decimals)
  routingStrategy: "router",
});
```

### 自动运行

获取令牌之间路径的最佳执行数据 :

```typescript
const routeData = await ensoClient.getRouteData({
  fromAddress: "0xYourAddress",
  receiver: "0xReceiverAddress", // Optional, defaults to fromAddress
  chainId: 1,
  amountIn: ["1000000000000000000"],
  tokenIn: ["0xTokenInAddress"],
  tokenOut: ["0xTokenOutAddress"],
  slippage: "50", // 0.5%
  routingStrategy: "router",
});
```

### 钱包余额

获取钱包的符号余额 :

```typescript
// Example: Get all token balances for an Ethereum address
const balances = await ensoClient.getBalances({
  eoaAddress: "0xYourAddress",
  chainId: 1, // Ethereum mainnet
  useEoa: true, // Default is true - get balances for the EOA, not the Enso wallet
});
```

### 捆绑交易

将多个DeFi动作装入单一交易中,并在交易之间使用结果.

```typescript
// Example: Convert ETH to USDC, deposit into Aave V3, then send the aUSDC to the user
const bundleData = await ensoClient.getBundleData(
  {
    fromAddress: "0xYourAddress",
    chainId: 1,
    routingStrategy: "router",
  },
  [
    {
      protocol: "enso",
      action: "route",
      args: {
        tokenIn: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", // ETH
        tokenOut: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
        amountIn: "1000000000000000000", // 1 ETH
        slippage: "100", // 1%
      },
    },
    {
      protocol: "aave-v3",
      action: "deposit",
      args: {
        tokenIn: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
        tokenOut: "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c", // aUSDC v3
        amountIn: {
          useOutputOfCallAt: 0, // Use output from the first action
        },
        primaryAddress: "0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2", // Aave V3 pool
      },
    },
    {
      // With `router`, deposit outputs stay in the router until transferred out
      protocol: "erc20",
      action: "transfer",
      args: {
        token: "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c", // aUSDC v3
        receiver: "0xYourAddress",
        amount: {
          useOutputOfCallAt: 1, // Use output from the deposit
        },
      },
    },
  ],
);
```

### 连接池地址

使用 `getLayerZeroPool` 获取正确的集合信息,并将其用作 `primaryAddress` 联 合 国 [`bridge` 动作](https://docs.enso.build/pages/build/reference/actions#bridge)。 。 。 .

```ts
const poolInfo = await client.getLayerZeroPool({
  chainId: 42161, // Arbitrum
  destinationChainId: 999, // HyperEVM
  token: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", // USDT
});

const stargatePoolInfo = await client.getStargatePool({
  chainId: 42161,
  destinationChainId: 999,
  token: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
});
```

### CCTP 帮助者

使用 CCTP 帮助 发现 TokenMessengerV2 合同, 当 CCTP 转账为可索赔时获取债权交易 .

```ts
const tokenMessenger = await client.getCctpTokenMessenger({
  chainId: 1,
});

const claim = await client.getCctpClaimTransaction({
  chainId: 42161,
  txHash: "0xTransactionHash",
});
```

### 非辅助职位

通往一个非托肯化位置的路线. `positionOut` 是一个 `positionId` 从 `getNonTokenizedPositions`数字 :

```typescript
// Example: Supplying USDC to a Morpho Blue market
const nonTokenizedRoute = await ensoClient.getRouteNonTokenized({
  fromAddress: "0xYourAddress",
  chainId: 1,
  tokenIn: ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"], // USDC
  positionOut:
    "0x30a0da8cabf25a31805d9f3eca9005540e419f408beecf5cf715c67f3958ee55", // Morpho USDC/PENDLE-LPT market
  amountIn: ["1000000000"], // 1000 USDC
  receiver: "0xYourAddress",
  slippage: "300", // 3%
  routingStrategy: "delegate",
});
```

### 调试数据

获取有关信使的信息:

```typescript
// Example: Get details about wstETH including metadata
const tokenData = await ensoClient.getTokenData({
  chainId: 1,
  address: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", // wstETH
  includeMetadata: true,
  type: "defi", // Filter by token type - can be "defi" or "base"
});
```

### Token 定价

获取象征性价格数据 :

```typescript
// Example: Get current price of WETH
const priceData = await ensoClient.getPriceData({
  chainId: 1,
  address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
});

// Example: Get prices for multiple tokens
const multiPriceData = await ensoClient.getMultiplePriceData({
  chainId: 1,
  addresses: [
    "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
  ],
});
```

### 协议支持

获取关于所支持的协议的信息 :

```typescript
// Get all protocols
const protocols = await ensoClient.getProtocolData();

// Get protocols for a specific chain
const ethereumProtocols = await ensoClient.getProtocolData({ chainId: 1 });

// Get a specific protocol
const aaveProtocol = await ensoClient.getProtocolData({ slug: "aave-v3" });
```

## 处理大数字

SDK正确处理区块链交易中常见的大量:

```typescript
// Using string representation for large numbers (recommended)
const largeAmount = "1000000000000000000000000"; // 1 million tokens with 18 decimals

// You can also use JavaScript numbers for smaller values
const smallAmount = 1000000; // 1 USDC with 6 decimals
```

## 支持的行动

Bundle API 支持多种 [与 DeFi 协议互动的动作](https://docs.enso.build/pages/build/reference/actions)。 。 。 .

对于所有可用动作及其参数的最新参考,您可拨打:

```typescript
// Get all available actions
const actions = await ensoClient.getActions();

// Get actions for a specific protocol
const aaveActions = await ensoClient.getActionsBySlug("aave-v3");
```

## 支持的网络

获取关于 [支助网络](https://docs.enso.build/pages/build/reference/supported-networks)数字 :

```typescript
// Get all supported networks
const networks = await ensoClient.getNetworks();

// Get a specific network
const ethereumNetwork = await ensoClient.getNetworks({
  chainId: "1",
  name: "Ethereum",
});
```

## API 参考

关于所有可用方法和参数的详情,见我们 [API 参考文档](https://docs.enso.build/pages/api-reference/overview)。 。 。 .

### 主要客户方法

| 方法 | 说明 |
| --- | --- |
| `getApprovalData` | 获取批准交易数据 |
| `getRouteData` | 在符号之间获得最佳路由 |
| `getBalances` | 获取钱包符号余额 |
| `getTokenData` | 获取符号信息 |
| `getPriceData` | 获取象征性价格数据 |
| `getMultiplePriceData` | 获得多个符号的价格 |
| `getProtocolData` | 获取协议信息 |
| `getBundleData` | 将多个动作装入单一交易 |
| `getRouteNonTokenized` | 获得一个非切入位置的最佳路径 |
| `getIporShortcut` | 为 IPOR 操作获取交易数据 |
| `getStandards` | 获得捆绑的现有标准 |
| `getActions` | 获取可以捆绑的动作 |
| `getNonTokenizedPositions` | 获得非肯德基职位 |
| `getProjects` | 获得支持的项目 |
| `getProtocolsByProject` | 在工程中获取协议 |
| `getNetworks` | 获得支持的网络 |
| `getAggregators` | 获得支持的聚合器 |
| `getLayerZeroPool` | 获取图层Zero/星门池数据 |
| `getStargatePool` | 获取星门池数据 |
| `getCcipRouter` | 获取 CCIP 路由器地址 |
| `getBridgeStatus` | 获取桥接交易状态 |
| `getCctpTokenMessenger` | 获取 CCTP 信使V2 地址 |
| `getCctpClaimTransaction` | 获取 CCTP 索赔交易状况/数据 |

## 捐款

欢迎捐款! 请随意提交拉力请求.

## 许可证

这个项目根据麻省理工学院的许可证获得许可.

## 常见问题

### @ensofinance/sdk 是什么？

与 Enso API 交互的 SDK

### 如何安装 @ensofinance/sdk？

在项目目录运行 npm install @ensofinance/sdk，或使用 pnpm add / yarn add / bun add。

### @ensofinance/sdk 支持 TypeScript 吗？

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

### @ensofinance/sdk 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @ensofinance/sdk 可以商用吗？

@ensofinance/sdk 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @ensofinance/sdk 的下载量有多少？

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

### @ensofinance/sdk 还在维护吗？

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

