@tracer-protocol/pools-js
TypeScript icon, indicating that this package has built-in type declarations

3.1.15 • Public • Published

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 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

Pools

The main class for interacting with LeveragedPools. To get started its as simple as

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.

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:

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

Package Sidebar

Install

npm i @tracer-protocol/pools-js

Weekly Downloads

1

Version

3.1.15

License

ISC

Unpacked Size

165 kB

Total Files

46

Last publish

Collaborators

  • dospore
  • ray_lionsmane
  • scaredibis