Giter Site home page Giter Site logo

staccdotsol / pools-js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mycelium-ethereum/pools-js

0.0 0.0 0.0 999 KB

A Typescript SDK for interacting with Tracer's Perpetual Pools

Home Page: pools-js.vercel.app

JavaScript 0.30% TypeScript 99.70%

pools-js's Introduction

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

pools-js's People

Contributors

dospore avatar rogue-hacker avatar kumar-ish avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.