# @tracer-protocol/pools-js

> Javascript library for interacting with Tracer's Perpetual Pools

Latest version **3.1.15** (published 2022-07-27) · ISC license · 0 weekly downloads

## Install

```sh
npm install @tracer-protocol/pools-js
pnpm add @tracer-protocol/pools-js
yarn add @tracer-protocol/pools-js
bun add @tracer-protocol/pools-js
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.1.15 |
| Published | 2022-07-27 |
| First published | 2021-11-18 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 6 |
| Unpacked size | 161.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Dospore |
| Maintainers | dospore, ray_lionsmane, scaredibis |
| Keywords | ethereum, pools, typescript, npm |

## Links

- npm: https://www.npmjs.com/package/@tracer-protocol/pools-js
- npm.io page: https://npm.io/package/@tracer-protocol/pools-js

## Dependencies (6)

- [ethers](https://npm.io/package/ethers.md) ^5.6.1
- [bignumber.js](https://npm.io/package/bignumber.js.md) ^9.0.1
- [tiny-typed-emitter](https://npm.io/package/tiny-typed-emitter.md) ^2.1.0
- [@0xsequence/multicall](https://npm.io/package/@0xsequence/multicall.md) ^0.39.6
- [@tracer-protocol/pool-state-helper](https://npm.io/package/@tracer-protocol/pool-state-helper.md) ^0.0.4
- [@tracer-protocol/perpetual-pools-contracts](https://npm.io/package/@tracer-protocol/perpetual-pools-contracts.md) ^1.2.5

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 3.1.15 (latest) — 2022-07-27
- 3.1.14 — 2022-07-15
- 3.1.13 — 2022-07-11
- 3.1.12 — 2022-07-09
- 3.1.11 — 2022-07-07
- 3.1.10 — 2022-07-07
- 3.1.9 — 2022-07-05
- 3.1.8 — 2022-06-01
- 3.1.7 — 2022-05-31
- 3.1.6 — 2022-05-31
- 0.0.24 — 2022-05-30
- 3.1.5 — 2022-05-13
- 3.1.4 — 2022-04-29
- 3.1.3 — 2022-04-21
- 3.1.2 — 2022-04-06
- … 34 more at https://npm.io/package/@tracer-protocol/pools-js/versions

## README

# Pools JS SDK
A JS development kit with supported TypeScript typings.

## Installation

Since there is a yarn.lock, if you would like to use npm please run
`rm -r node_modules yarn.lock`

`npm install @tracer-protocol/pools-js` or `yarn add @tracer-protocol/pools-js`

## Testing
`yarn` or `npm run install`
`yarn build` or `npm run build`
`yarn test` or `npm run test`

## Documentation
`yarn` or `npm run install`
`yarn build:docs` or `npm run build:docs`
`npx serve ./docs`

## Entities
There are a number of entity classes relating to several of the contracts required to interact with pools.
The entry should be [pools](./src/entities/pool.ts) but you can instantiate any of the classes individually.

All entities follow the same design pattern of private constructors and public static `Create` functions.
This is to ensure that the class is initialized before use. You will always have to wait for the `Create`
function before accessing the internals of the promise. There is also a `CreateDefault` this provides an
interface for creating "empty" entities that can be used as default.

(A list of Pools related addresses can be found [here](https://tracerdao.notion.site/Tracer-Contract-Addresses-8dbf351d1a034be79f7a5c278775084d)

### Pools
The main class for interacting with LeveragedPools. To get started its as simple as
```javascript
import { Pool } from '@tracer-protocol/pools-js';
import ethers from 'ethers';

const provider = new ethers.providers.JsonRpcProvider("https://arb1.arbitrum.io/rpc");

// 3-ETH/USD
const poolAddress = "0x54114e9e1eEf979070091186D7102805819e916B";

// option 1
(async () => {
	const pool = await Pool.Create({
		address: poolAddress,
		provider
	});
	console.log("First example long price", pool.getLongTokenPrice().toNumber());
})()

// option 2
Pool.Create({
	address: poolAddress,
	provider
}).then((pool) => {
	// pool initialized
	console.log("Second example long price", pool.getLongTokenPrice().toNumber()); // this log will be the same as above
})
```

Once the pool is initialised you can use any of the functions listed within the docs.

### Tokens
To interact the tokens you can instantiate a token direcly if you know the contract address,
or it is automatically done when creating a pool. The two pool tokens
(`pool.longToken` and `pool.shortToken`) implement the same methods as `pool.quoteToken`, so any
functions used below can also be called on `pool.quoteToken`.

```javascript
import { Pool, SideEnum } from '@tracer-protocol/pools-js';
import ethers from 'ethers';
const provider = new ethers.providers.JsonRpcProvider("https://arb1.arbitrum.io/rpc");

// 3-ETH/USD
const poolAddress = "0x54114e9e1eEf979070091186D7102805819e916B";

(async () => {
	const pool = await Pool.Create({
		address: poolAddress,
		provider
	});

	let token = pool.longToken;
	console.log("First example token name", token.name)

	// or if you know the token contract
	token = await PoolToken.Create({
		address: pool.longToken.address,
		provider,
		side: SideEnum.long
	})
	console.log("Second example token name", token.name)
})()
```

### Static Pool and Token Data
This SDK provides a list of known addresses and details relating to perpetual pools.
This static data can be imported like so:

```javascript
import { poolList, poolMap, tokenMap,  } from '@tracer-protocol/pools-js';

// poolList is a mapping from network -> StaticPoolInfo[]
// poolMap is a mapping from network -> poolAddress -> StaticPoolInfo
// tokenMap is a mapping from network -> tokenSymbol -> StaticTokenInfo
```

---
_Source: https://npm.io/package/@tracer-protocol/pools-js · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
