6.16.0-tokens-5 • Published 3 years ago

@nbellanich/statics v6.16.0-tokens-5

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
3 years ago

Goals

  • Provide an "encyclopedia" of all relevant constants which are sprinkled throughout the BitGo stack.
  • Separate static config data from dynamic config data
  • Strong typing for static config properties, with full type information for configuration items
  • Ability to export static configuration as JSON for consumption by non-javascript projects

Examples

Get the number of decimal places in a Bitcoin

Javascript

const { coins } = require('@bitgo/statics');

const btc = coins.get('btc');
console.log(btc.decimalPlaces);

Typescript

import { coins } from '@bitgo/statics';

const btc = coins.get('btc');
console.log(btc.decimalPlaces);

Get the contract address for the OmiseGo ERC20 Token

Javascript

const { coins } = require('@bitgo/statics');

const omg = coins.get('omg');
console.log(omg.contractAddress);

Typescript

import { coins, Erc20Coin } from '@bitgo/statics';

const omg = coins.get('omg');
if (omg instanceof Erc20Coin) {
  console.log(omg.contractAddress);
}

List full names of all defined coins

Javascript

const { coins } = require('@bitgo/statics');

coins.forEach((coin) => {
  console.log(coin.fullName);
});

Typescript

import { coins } from '@bitgo/statics';

coins.forEach((coin) => {
  console.log(coin.fullName);
});

Repo Status

  • UTXO and account base types are defined
  • Documentation is mostly source code comments and README examples
  • This library can be depended on, but expect some changes going forward

Project Structure

  • src/base.ts: Interfaces and enums used by coin implementation classes.
  • src/coins.ts: Coin definitions.
  • src/networks.ts: Network interfaces and implementation classes.
  • src/utxo.ts: Unspent Transaction Output (UTXO) based coin classes and factory function.
  • src/account.ts: Account-based coin classes and factory methods. Includes ERC20 factory functions.
  • src/errors.ts: Custom Error classes.

Installation + Building

To install the project locally, run the following steps:

$ # clone the project locally
$ git clone git@github.com:BitGo/statics.git

$ # npm install dependencies (optionally use node >8.6.0)
$ # (optionally) nvm install 8.6.0 -- required to run the linter which is executed pre-commit
$ # (optionally) nvm use 8.6.0
$ npm install

To build the project (from TypeScript to Javascript):

$ npm run build

This builds the Javascript and adds it to dist/src/. You will receive compilation errors if you have invalid syntax.

Tests

To run tests:

$ npm run test