# @liqpro/liq-core 中文文档

规范地址：https://npmcn.com/package/%40liqpro/liq-core/

版本：0\.83\.0
npm 元数据更新时间：2026-11-01T17:05:09.576Z
中文译文更新时间：2026-11-01T18:11:05.204Z
软件包许可：未声明

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

原始 npm 页面：https://www.npmjs.com/package/%40liqpro/liq-core
原文对照：https://npmcn.com/package/%40liqpro/liq-core/?lang=original
项目主页：https://github.com/liqu-fi/monorepo#readme
源码仓库：https://github.com/liqu-fi/monorepo

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

- 包体积（解压后）：367 kB，4 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：zod ^4\.0\.0，viem ^2\.0\.0
- 首次发布：2026-06-14T05:18:56.087Z
- 最新版本发布：2026-11-01T17:05:09.428Z
- 已发布版本数：53（近 12 个月 53 个）

## 中文简介

SDK基础-类型，枚举，EIP-712助手，链配置和Liq永久交换的合约地址。

## 安装

```sh
npm install @liqpro/liq-core
```

也可以使用：`pnpm add @liqpro/liq-core`、`yarn add @liqpro/liq-core`、`bun add @liqpro/liq-core`

## README

# @liq /核心

SDK基础-类型，枚举，EIP-712助手，链配置和Liq永久交换的合约地址。

## 概述

`@liq/core` 是所有Liq SDK包共享的零框架基础层。它提供了规范的EIP-712域和订单类型定义、包含每个支持网络的合约地址的链配置、订单/职位/账户的共享TypeScript类型和枚举，以及品牌数字原语(`Price`， `Qty`， `Usd`， `Margin`)在整个系统中使用。唯一的运行时依赖项是 `zod`.

## 主要出口

### 链配置

-   `getChainConfig(chainId)` ——返回 `ChainConfig` （contracts, rpcUrl, subgraphUrl）用于给定链ID
-   `getContractAddress(chainId, contract)` -单个合同地址的快捷方式
-   `ChainConfig` -接口 `PerpsMarketProxy`， `SynthetixCoreProxy`， `PerpsAccountProxy`， `SpotMarketProxy`， `OracleManagerProxy`， `TrustedMulticallForwarder`， `USDC`， `sUSDC`

支持连锁店: **MegaETH Testnet** (chainId `6343`）

### Контур生产передеплоен （0.67.0）

Prod-контур пересобран нуля 2026-10-09 (`snx-omnibus-megaeth-production:3-dev`): **все** адресав `liqChains[6343].production` ,новыевключая `PerpsMarketProxy` ——это `verifyingContract` eip - 712。 Подписи ордеров под старым `PerpsMarketProxy` （`0x330E5A38…`) на новом контуре невалидны， окна совместимостинет:клиентобязанобновитьсядо0.67.0вместесшлюзом。Id тоже другие： `susdcMarketId` = 1 （было 3）， `perpsCoreMarketId` = 3 （было 2）；в `collaterals` 生产появился `USDm` （`getCollateral(chain, 'USDm')`)， как \*分期。Старый контур продолжает отвечать на цепи теми же рынками,поэтомуустаревшийадресвыглядитживымиломаетсятолькона«账户不拥有»или несовпадении домена eip-712。

### eip - 712

-   `EIP712_ORDER_TYPES` 用于订单签名的类型数据模式
-   `EIP712_DOMAIN_NAME` / `EIP712_DOMAIN_VERSION` - - - - - - `"PerpExchange"` / `"1"`
-   `buildEip712Domain(chainId, verifyingContract)` -构建EIP-712域对象
-   `buildLimitOrderMessage(params)` -建立一个签名限价订单有效载荷
-   `buildMarketOrderMessage(params)` -建立一个已签署的市场订单有效载荷
-   `buildConditionalOrderMessage(params)` -构建一个签名的TP/SL/停止订单负载
-   `ORDER_TYPE_INDEX` -数字索引映射 `OrderType` 枚举值

### 类型(`src/types/`）

-   `OrderType` 枚举, `MARKET`， `LIMIT`， `STOP_MARKET`， `STOP_LIMIT`， `TAKE_PROFIT_MARKET`， `TAKE_PROFIT_LIMIT`
-   订单、位置、帐户、填充、市场和API类型跨SDK包共享

### 标记原语(`src/primitives.ts`）

-   `Price`， `Qty`， `Usd`， `Margin`， `Bps` ——品牌 `bigint` 类型（18位小数）
-   每个品牌：建设者， `.parse(str)`， `.fmt(val)`， `.zod` 模式, `.mul()` 算术

### 价格(`src/prices/`）

-   `REDSTONE_FEEDS` - RedStone在MegaETH测试网的推送地址(chainId `6343`)，按符号键
-   `RedStoneFeedSymbol` -进料符号类型；的钥匙 `REDSTONE_FEEDS`
-   `REDSTONE_DECIMALS` -每个红石饲料的小数(`8`）
-   `isRedStoneFeedSymbol(value)` -供料符号的类型保护
-   `redstoneFeedAddress(feedId)` -输入地址 `Market.feedId` 符号,或 `undefined` 当未知

### Скобки позиции - `positionBrackets(position, conditional)` （`src/positions/`）

С 0.65.0 принимает позицию (`{ marketId, size }`)， не рынок。Скобка - условный减少-只ордер этого рынка `TRIGGER_PENDING` настороне,закрывающейпозицию(удлинной——出售,укороткой-购买)。Нет позиции - нет скобок。 У каждой скобки `size` (подписанный размер， модулем `effectiveSize` ＝ `min(size, |position.size|)` - столько она закроет:движокурезаетreduce-onlyдопозиции,ипослечастичногозакрытияпоказыватьнадо `effectiveSize`.

`reduceOnlyLegs(position, orders)` （`src/positions/reduce-only-legs.ts`， \[0.666.0\] - шире `positionBrackets`:все reduce-onlyордерапозицииназакрывающейстороне(TP / SLв `TRIGGER_PENDING`,отдыхающие `LIMIT` / `STOP_LIMIT` / `TAKE_PROFIT_LIMIT` в `PENDING` / `PARTIALLY_FILLED`)， каждого `effectiveSize` ＝ `min(остаток, |position.size|)`； остаток- `remainingSize`， если его нет， то `|sizeDelta|`． Дубльпоid -первоевхождени,есвежийсписокпередают первым。Резервсматченных,нонерассчитанныхордеровнеучитывается。

`GatewayOrder.reduceOnly` ——с0.65.0втипе。Список ордеров шлюз отдавал r колонкой r раньше；одиночный `orders.get(id)` - только шлюза 0.65.0。

`describeOrderOutcome` называет снятие скобки вместе r позицией： `position_closed`， `position_flipped`， `no_position`,иотменуreduce-onlyлимитки,подкоторуюнеосталосьпозиции: `reduce_only`.

### Маржа ордера \* аккаунта （\* 0.67.0）

`validateOrder` （`src/order/validate.ts`) судит доступность по требованию протокола。 **Ломающееизменение:** из `OrderVerdictInput` ушли `available` и `marginCost`,пришли `requiredMargin` и `free` （`Margin | undefined`）。 `requiredMargin` ——поле `requiredMargin` предпросмотра маржи ордера (`getOrderMarginPreview` в `@liq/onchain`， `useOrderMarginPreview` в `@liq/react`)， `free` - - - - - - `free` шлюза(`client.accounts.getMargin`， `useAccountMargin`）。 Предупреждение `exceeds-available-margin` - когда оба известны `requiredMargin > free`;равенство не предупреждает。 Неизвестное- `undefined`， пока чтение не пришло； `Margin(0n)` вместо него не подставлять： `0n` иотрицательный `free` - известные значения， они предупреждают。Это предупреждение， не блок： `requiredMargin` не включает убыток филла ,хужемаркакоторыйворотапротоколасписываютсдоступноймаржи,такчто `requiredMargin <= free` необходимо， но не достаточно;решаетшлюз。

```ts
const verdict = validateOrder({
    markPrice,
    sizeQty,
    minSize,
    leverage,
    maxLeverage,
    requiredMargin: preview?.requiredMargin,
    free: margin === undefined ? undefined : Margin(margin.free),
});
```

`marginUsage({ requiredInitialMargin, available })` （`src/margin/usage.ts`) - доля начального требования доступной марже填料: `getRequiredMargins(accountId)[0]` （награда за ликвидацию уже внутри） на ончейн `getAvailableMargin` （уже за вычетом долга）。Нулевое требование - `0n`;положительноепри `available <= 0n` - - - - - - `undefined` (подводой)。

`marginCost` （`src/order/math.ts`) - - -калькуляторразмерадляслайдераплеча(名义/杠杆),анемаржа; маржа ордера - `requiredMargin` предпросмотра。 `draftLiquidationPrice` - - - - - - `@deprecated`： \* \* кросс-позициями не сходится;оценка- `estimatedLiquidationPrice` предпросмотраили `accountMargin(...).liquidationPriceFor`.

## 安装

```bash
pnpm add @liq/core
```

## 构建

```bash
moon run liq-core:build    # tsup → dist/
```

## 常见问题

### @liqpro/liq-core 是什么？

SDK基础-类型，枚举，EIP-712助手，链配置和Liq永久交换的合约地址。

### 如何安装 @liqpro/liq-core？

在项目目录运行 npm install @liqpro/liq-core，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：zod（^4\.0\.0）、viem（^2\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @liqpro/liq-core 支持 TypeScript 吗？

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

### @liqpro/liq-core 支持 ESM 还是 CommonJS？

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

### @liqpro/liq-core 可以商用吗？

@liqpro/liq-core 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @liqpro/liq-core 还在维护吗？

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

