@cowprotocol/sdk-subgraph

中文文档
1.3.2发布于 2026/11/04MITTypeScriptESM + CJS构建来源已验证近 30 天下载 3713

CowProtocol subgraph

原始使用文档
文档目录12 节
  1. Test coverage
  2. What's included
  3. Installation
  4. Usage
  5. Basic Setup
  6. Query Protocol Totals
  7. Query Volume Data
  8. Custom Queries
  9. Testing
  10. Running Tests
  11. Test Configuration
  12. API Key Requirements

SDK Subgraph

Test coverage

StatementsBranchesFunctionsLines
StatementsBranchesFunctionsLines

This package provides a TypeScript client for querying CoW Protocol data from TheGraph subgraphs. It offers a simple and type-safe way to access historical trading data, volume statistics, and other protocol metrics across multiple chains.

What's included

  • SubgraphApi Client - Main client for querying CoW Protocol subgraphs
  • Pre-built Queries - Common queries for totals, volume, and statistics
  • Multi-chain Support - Support for Ethereum, Gnosis Chain, Arbitrum, Base, and Sepolia
  • Type-safe Responses - Fully typed GraphQL responses
  • Custom Query Support - Run any GraphQL query with full type safety

Installation

npm install @cowprotocol/sdk-subgraph
or
pnpm add @cowprotocol/sdk-subgraph
or
yarn add @cowprotocol/sdk-subgraph

Usage

Basic Setup

You'll need a Graph API key from TheGraph. Get one at TheGraph Studio.

import { SubgraphApi } from '@cowprotocol/sdk-subgraph'
import { SupportedChainId } from '@cowprotocol/sdk-config'

// Initialize with your API key
const subgraphApi = new SubgraphApi('YOUR_GRAPH_API_KEY')

// Optionally configure for specific chain
const mainnetApi = new SubgraphApi('YOUR_GRAPH_API_KEY', {
  chainId: SupportedChainId.MAINNET,
})

Query Protocol Totals

Get overall protocol statistics including tokens, orders, traders, settlements, volume, and fees.

import { SubgraphApi } from '@cowprotocol/sdk-subgraph'

const subgraphApi = new SubgraphApi('YOUR_GRAPH_API_KEY')

// Get protocol totals
const totals = await subgraphApi.getTotals()
console.log('Total tokens:', totals.tokens)
console.log('Total orders:', totals.orders)
console.log('Total volume USD:', totals.volumeUsd)
console.log('Total fees USD:', totals.feesUsd)

Query Volume Data

Get historical volume data for specific time periods.

// Get volume for last 7 days
const last7DaysVolume = await subgraphApi.getLastDaysVolume(7)
console.log('Daily volumes:', last7DaysVolume.dailyTotals)

// Get volume for last 24 hours
const last24HoursVolume = await subgraphApi.getLastHoursVolume(24)
console.log('Hourly volumes:', last24HoursVolume.hourlyTotals)

Custom Queries

Run any GraphQL query with full type safety.

import { gql } from 'graphql-request'

// Custom query for top tokens by volume
const query = gql`
  query TokensByVolume {
    tokens(first: 5, orderBy: totalVolumeUsd, orderDirection: desc) {
      address
      symbol
      totalVolumeUsd
      priceUsd
    }
  }
`

const result = await subgraphApi.runQuery(query)
console.log('Top tokens:', result.tokens)

Testing

Running Tests

# Run all tests
pnpm test

# Run tests in watch mode
pnpm run test:watch

# Run tests with coverage
pnpm run test:coverage

Test Configuration

The tests use jest-fetch-mock to mock GraphQL responses. No private key is required for testing as all API calls are mocked.

// Example test structure
import { SubgraphApi } from '@cowprotocol/sdk-subgraph'
import fetchMock from 'jest-fetch-mock'

describe('SubgraphApi', () => {
  beforeEach(() => {
    fetchMock.resetMocks()
  })

  test('should get totals', async () => {
    fetchMock.mockResponseOnce(
      JSON.stringify({
        data: {
          totals: [
            {
              tokens: '192',
              orders: '365210',
              volumeUsd: '49548634.23',
            },
          ],
        },
      }),
    )

    const api = new SubgraphApi('FakeApiKey')
    const totals = await api.getTotals()

    expect(totals.tokens).toBe('192')
  })
})

API Key Requirements

To use this package, you need a Graph API key from TheGraph:

  1. Go to TheGraph Studio
  2. Create a new API key
  3. Use the API key when initializing the SubgraphApi
const subgraphApi = new SubgraphApi('your-api-key-here')

Note: The API key is required for all subgraph queries. Make sure to keep your API key secure and never expose it in client-side code.

版本与发布记录

@cowprotocol/sdk-subgraph 共发布 60 个版本,首次发布于 2025/08/02;过去 12 个月发布了 42 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.3.2latest2026/11/046 天前
1.3.12026/11/037 天前
1.3.02026/10/2615 天前
1.2.112026/10/1328 天前
1.2.102026/10/091 个月前
1.2.92026/10/071 个月前

其他发布通道:next → 0.2.1-beta.0,rc → 0.1.2-rc.0。

关于 @cowprotocol/sdk-subgraph 的常见问题

@cowprotocol/sdk-subgraph 是什么?

CowProtocol subgraph

如何安装 @cowprotocol/sdk-subgraph?

在项目目录运行 npm install @cowprotocol/sdk-subgraph,或使用 pnpm add / yarn add / bun add。

@cowprotocol/sdk-subgraph 支持 TypeScript 吗?

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

@cowprotocol/sdk-subgraph 支持 ESM 还是 CommonJS?

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

@cowprotocol/sdk-subgraph 可以商用吗?

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

@cowprotocol/sdk-subgraph 的下载量有多少?

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

@cowprotocol/sdk-subgraph 还在维护吗?

最新版本 1.3.2 发布于 2026/11/04(6 天前);至今共发布 60 个版本,其中过去 12 个月发布了 42 个;首次发布于 2025/08/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。