# synthetix-js

> Synthetix JS Library - access Synthetix smart contracts from browser and Node.js

Latest version **2.102.0** (published 2025-03-21) · MIT license · 0 weekly downloads

## Install

```sh
npm install synthetix-js
pnpm add synthetix-js
yarn add synthetix-js
bun add synthetix-js
```

## Health

**Score 25/100 (F)** — status: maintenance-mode.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; large bundle.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.102.0 |
| Published | 2025-03-21 |
| First published | 2019-02-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 13 |
| Unpacked size | 12 MB |
| Known vulnerabilities | 0 (+6 in 1 direct dependencies) |
| Install scripts | no |
| Author | Synthetix |
| Maintainers | synthetixio-team, drptbl, klbyte, justinjmoses, clementbalestrat |

## Links

- npm: https://www.npmjs.com/package/synthetix-js
- Repository: https://github.com/Synthetixio/synthetix-js
- Homepage: https://developer.synthetix.io
- Issues: https://github.com/Synthetixio/synthetix-js/issues
- npm.io page: https://npm.io/package/synthetix-js

## Dependencies (13)

- [hdkey](https://npm.io/package/hdkey.md) 1.1.1
- [ethers](https://npm.io/package/ethers.md) 4.0.44
- [lodash](https://npm.io/package/lodash.md) 4.17.15
- [synthetix](https://npm.io/package/synthetix.md) 2.102.0
- [walletlink](https://npm.io/package/walletlink.md) 2.0.2
- [@portis/web3](https://npm.io/package/@portis/web3.md) ^2.0.0-beta.59
- [ethereumjs-tx](https://npm.io/package/ethereumjs-tx.md) 1.3.7
- [trezor-connect](https://npm.io/package/trezor-connect.md) 8.1.8
- [ethereumjs-util](https://npm.io/package/ethereumjs-util.md) 5.2.0
- [@ledgerhq/hw-app-eth](https://npm.io/package/@ledgerhq/hw-app-eth.md) 4.74.2
- [@ledgerhq/hw-transport](https://npm.io/package/@ledgerhq/hw-transport.md) 4.74.2
- [@ledgerhq/hw-transport-u2f](https://npm.io/package/@ledgerhq/hw-transport-u2f.md) 4.74.2
- [@walletconnect/web3-provider](https://npm.io/package/@walletconnect/web3-provider.md) ^1.0.15

## Recent versions

- 2.102.0 (latest) — 2025-03-21
- 2.101.3 — 2024-08-26
- 2.101.2 — 2024-04-18
- 2.101.1-alpha — 2024-04-16
- 2.100.2-alpha — 2024-03-20
- 2.100.1-alpha — 2024-03-15
- 2.100.0 — 2024-03-13
- 2.74.1 — 2022-06-23
- 2.74.0-alpha — 2022-06-22
- 2.73.1 — 2022-06-15
- 2.73.0-alpha — 2022-06-14
- 2.72.1 — 2022-06-09
- 2.72.0-alpha — 2022-06-08
- 2.71.2 — 2022-06-03
- 2.71.1-alpha — 2022-06-02
- … 362 more at https://npm.io/package/synthetix-js/versions

## README

**This library is now deprecated.** Please use https://github.com/Synthetixio/js-monorepo/tree/master/packages/contracts-interface from our new monorepo.

# SynthetixJs library

[![CircleCI](https://circleci.com/gh/Synthetixio/synthetix-js.svg?style=svg)](https://circleci.com/gh/Synthetixio/synthetix-js) [![npm version](https://badge.fury.io/js/synthetix-js.svg)](https://badge.fury.io/js/synthetix-js)
[![Discord](https://img.shields.io/discord/413890591840272394.svg?color=768AD4&label=discord&logo=https%3A%2F%2Fdiscordapp.com%2Fassets%2F8c9701b98ad4372b58f13fd9f65f966e.svg)](https://discordapp.com/channels/413890591840272394/)
[![Twitter Follow](https://img.shields.io/twitter/follow/synthetix_io.svg?label=synthetix_io&style=social)](https://twitter.com/synthetix_io)

The Synthetix-JS Library provides a simple pre-packaged API to communicate with [Synthetix](https://synthetix.io) on ethereum. You can use it to contribute to DeFi's growing synthetic asset ecosystem.

This is particularly useful for hackathon teams to quickly `npm install synthetix-js` and start building in just a few minutes.

Under the hood, SynthetixJs uses [ethers.js](https://github.com/ethers-io/ethers.js/) library and its concept of [providers](https://docs.ethers.io/ethers.js/html/api-providers.html) and [transaction signers](https://docs.ethers.io/ethers.js/html/api-contract.html#custom-signer).

## Install via npm

`npm install synthetix-js`

## Developer Docs

[developer.synthetix.io](https://developer.synthetix.io)

## Example for getting the total sUSD stablecoin in circulation

```javascript
const { SynthetixJs } = require('synthetix-js');
const snxjs = new SynthetixJs(); //uses default ContractSettings - ethers.js default provider, mainnet
(async function() {
  const totalSUSD = await snxjs.sUSD.totalSupply();
  const totalSUSDSupply = snxjs.utils.formatEther(totalSUSD);
  console.log('sUSDTotalSupply', totalSUSDSupply);
})();
```

Default settings don't use any signer. That means that constants can be viewed from the contract but executing a transaction will fail.
To execute transactions, set up signer.

4 signers are included in the library - Metamask (compatible with Dapp browsers), Trezor, Ledger and PrivateKey.
Custom ethers.js compatible signers can be used too.

## Example using a metamask signer

```javascript
const { SynthetixJs } = require('synthetix-js');
const metaMaskSigner = new SynthetixJs.signers.Metamask();
const snxjs = new SynthetixJs({ signer: metaMaskSigner }); //uses Metamask signer and default infura.io provider on mainnet
```

## Example of minting stablecoin(sUSD) with private key signer

```javascript
const { SynthetixJs } = require('synthetix-js');
//parameters: default provider, default networkId, private key as a string
const signer = new SynthetixJs.signers.PrivateKey(
  null,
  0,
  '0x0123456789012345678901234567890123456789012345678901234567890123'
);
const snxjs = new SynthetixJs({ signer });

async function run() {
  const totalSupply = await snxjs.Synthetix.totalSupply();
  const snxTotalSupply = snxjs.utils.formatEther(totalSupply);
  console.log('snxTotalSupply', snxTotalSupply);

  //issue 100 synths (will throw if insufficient funds for gas)
  try {
    const txObj = await snxjs.Synthetix.issueSynths(snxjs.util.parseEther('100')); //execute transaction (requires gas)
    console.log('transaction hash', txObj.hash);
  } catch (e) {
    console.log(e);
  }
}

run();
```

## Live examples

- Get total synth supply [![Get total supply](https://user-images.githubusercontent.com/799038/57645476-572dc780-758c-11e9-98e3-33846fb8c176.png)](https://codepen.io/justinjmoses/pen/vMKywz/left?editors=0010)
- Get collateralized state [![image](https://user-images.githubusercontent.com/799038/57646044-ad4f3a80-758d-11e9-879e-4a507c2cf894.png)
  ](https://codepen.io/justinjmoses/pen/qwqoBR/left?editors=0010)

## Got any questions?

Join our dev community on Discord: [![Discord](https://img.shields.io/discord/413890591840272394.svg?color=768AD4&label=discord&logo=https%3A%2F%2Fdiscordapp.com%2Fassets%2F8c9701b98ad4372b58f13fd9f65f966e.svg)](https://discordapp.com/channels/413890591840272394/)

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