# @indexcoop/analytics-sdk

> The AnalyticsSDK of the Index Coop.

Latest version **0.29.0** (published 2025-02-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install @indexcoop/analytics-sdk
pnpm add @indexcoop/analytics-sdk
yarn add @indexcoop/analytics-sdk
bun add @indexcoop/analytics-sdk
```

## Health

**Score 40/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; pre 1.0.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.29.0 |
| Published | 2025-02-28 |
| First published | 2023-05-22 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=18 |
| Dependencies | 2 |
| Unpacked size | 41.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Author | IndexCoop |
| Maintainers | edwardkim, christn, pblivin, 0xonramp, jdindex |
| Keywords | analytics, sdk, index, coop |

## Links

- npm: https://www.npmjs.com/package/@indexcoop/analytics-sdk
- Repository: https://github.com/IndexCoop/analytics-sdk
- Homepage: https://github.com/IndexCoop/analytics-sdk#readme
- Issues: https://github.com/IndexCoop/analytics-sdk/issues
- npm.io page: https://npm.io/package/@indexcoop/analytics-sdk

## Dependencies (2)

- [ethers](https://npm.io/package/ethers.md) 5.7.2
- [@indexcoop/tokenlists](https://npm.io/package/@indexcoop/tokenlists.md) 3.7.0

## Recent versions

- 0.29.0 (latest) — 2025-02-28
- 0.28.2 — 2025-01-08
- 0.28.1 — 2025-01-02
- 0.28.0 — 2024-12-19
- 0.27.1 — 2024-10-16
- 0.27.0 — 2024-10-16
- 0.26.0 — 2024-10-07
- 0.25.0 — 2024-10-04
- 0.24.0 — 2024-10-03
- 0.23.0 — 2024-10-03
- 0.22.0 — 2024-09-02
- 0.21.0 — 2024-07-26
- 0.20.1 — 2024-06-25
- 0.20.0 — 2024-06-25
- 0.19.0 — 2024-06-11
- … 27 more at https://npm.io/package/@indexcoop/analytics-sdk/versions

## README

# AnalyticsSDK

Pricing data is powered by [CoinGecko](https://www.coingecko.com).

## Setup

0. Make sure to use Node.js 18+
1. `npm install`
2. `cp .env.example .env`

## Development

```
npm test:watch
```

### Releasing a new index token

When releasing a new index token make sure to add it to the [tvl provider](./src/providers/tvl/provider.ts). So that the provider reflects the total TVL over all Index's products.

### New components for an index token

Make sure to check the different custom providers for necessary changes e.g.

- add/update components for ic21 in the [nav provider](./src/providers/nav/ic21.ts)

## Examples

Each indicator has its own [provider](./src/providers/). The following indicators are currently provided and return the according data for an Index token.

- Market Cap (NAV \* supply)
- Market Price
- Net Asset Value (NAV)
- (Current) Supply
- TVL (for all Index products)
- (24h) Volume

With just a few lines you can setup any of the providers and fetch the required data.

The first example shows a full example with imports etc. Those are left out for all following ones.

### MarketCap

```typescript
import { providers } from "ethers"
import {
  CoinGeckoService,
  IndexMarketCapProvider,
} from "@indexcoop/analytics-sdk"
const index = "0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84" // icETH
const rpcProvider = new providers.JsonRpcProvider(url)
const coingecko = new CoinGeckoService(coingeckoApiKey)
const provider = new IndexMarketCapProvider(rpcProvider, coingecko)
const marketCap = await provider.getMarketCap(index)
```

### Markt Price

```typescript
const coingecko = new CoinGeckoService(coingeckoApiKey)
const provider = new IndexPriceProvider(coingecko)
const price = await provider.getPrice(index, chainId)
```

### NAV

```typescript
const coingecko = new CoinGeckoService(coingeckoApiKey)
const provider = new IndexNavProvider(rpcProvider, coingecko)
const nav = await provider.getNav(index)
```

### Supply

```typescript
const provider = new IndexSupplyProvider(rpcProvider)
const supply = await provider.getSupply(index)
```

### 24h Volume

```typescript
import { CoinGeckoService, IndexVolumeProvider } from "@indexcoop/analytics-sdk"
const chainId = 1
const index = "0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84" // icETH
const coingecko = new CoinGeckoService(coingeckoApiKey)
const provider = new IndexVolumeProvider(coingecko)
const volume = await provider.get24hVolume(index, chainId)
```

## AnalyticsProvider

To fetch all analytics data for a token at once use the `IndexAnalyticsProvider`.

```typescript
const address = "0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84" // icETH
const provider = new IndexAnalyticsProvider(rpcProvider, coingeckoService)
const analyticsData = await provider.getAnalytics(address)
```

### TVL

Returns TVL for all of the Index products combined.

```typescript
const provider = new IndexTvlProvider(rpcProvider, coingeckoService)
const supply = await provider.getTvl()
```

## License

[MIT](./LICENSE)

---
_Source: https://npm.io/package/@indexcoop/analytics-sdk · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
