npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@tracer-protocol/pools-js

v3.1.15

Published

Javascript library for interacting with Tracer's Perpetual Pools

Downloads

114

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