3.0.10 • Published 1 month ago

@horizon-protocol/contracts-interface v3.0.10

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

Contracts Interface to Synthetix

The official JavaScript library for interacting with Synthetix protocol contracts.

This library can be used in 2 different environments:

  1. Common-js module for node environments
  2. UMD module for browser environments

Instantiating in node.js or the browser

// For node environments:
const { synthetix } = require('@synthetixio/contracts-interface');

// For single page applications:
import { synthetix } from '@synthetixio/contracts-interface';

// For browsers you can use a CDN of the minified files
// E.g. <script src="https://cdn.jsdelivr.net/npm/@synthetixio/contracts-interface/build/index.min.js"></script>
// then you can access synthetix on the window object:
const { synthetix } = window;

// Instantiate the library with or without a provider
const hznjs = synthetix({ network: 'mainnet' });

// Note: for typescript applications
import { synthetix, Network } from '@synthetixio/contracts-interface';
const hznjs = synthetix({ network: Network.Mainnet });

Reading state

const hznjs = synthetix({ network: 'mainnet' });

// If you want to interact with a contract, simply follow the convention:
// await hznjs[contractName].methodName(arguments)

const owner = await hznjs.contracts.Synthetix.owner();

// many arguments require being formatted toBytes32, which we also provide with the library

const { toBytes32 } = snx;

const totalIssuedSynths = await hznjs.contracts.Synthetix.totalIssuedSynths(toBytes32('sUSD'));

// We also expose ethers utils which provides handy methods for formatting responses to queries.
const { formatEther } = hznjs.utils;

formatEther(await hznjs.contracts.SynthsUSD.totalSupply());

formatEther(await hznjs.contracts.ExchangeRates.rateForCurrency(hznjs.toBytes32('SNX')));

// Note can optionally pass in a { blockTag: someBlockNumber } to get data from a specific block instead of {}
const snxAtBlock12m = await hznjs.contracts.ExchangeRates.rateForCurrency(hznjs.toBytes32('SNX'), {
  blockTag: 12e6,
});

Signing transactions

// any old provider will do
const provider = ethers.providers.getDefaultProvider('kovan');

// create a signer with a provider attached
const signer = new ethers.Wallet(
  // just a dummy kovan wallet with a little keth from the faucet
  '0xa0d951c494421559c63089093b020cf2f7aac003c916967dc36e989bc695222e',
  provider
);

// and then instantiate synthetix with the signer
const hznjs = synthetix({ network: 'mainnet', signer });

// mint 0.01 sETH via the NativeEtherWrapper
const response = await hznjs.contracts.NativeEtherWrapper.mint({
  value: parseEther('0.01'),
  gasPrice: parseUnits('5', 'gwei'),
  gasLimit: 500e3,
});
console.log('Submitted', response.hash);
await response.wait();
console.log('Mined', `https://etherscan.io/tx/${response.hash}`);

See the examples folder for more usage details.

3.0.10

1 month ago

3.0.9

1 month ago

3.0.8

1 month ago

3.0.7

2 months ago

3.0.6

2 months ago

3.0.4

3 months ago

3.0.5

3 months ago

3.0.3

3 months ago

3.0.2

3 months ago

3.0.1

3 months ago

3.0.0

3 months ago

2.53.0

2 years ago

2.53.1

2 years ago

2.53.2

2 years ago

2.52.6

2 years ago

2.52.1

2 years ago

2.52.2

2 years ago

2.52.3

2 years ago

2.52.4

2 years ago

2.52.0

2 years ago

2.52.5

2 years ago

2.51.12

2 years ago

2.51.6

2 years ago

2.51.7

2 years ago

2.51.8

2 years ago

2.51.9

2 years ago

2.51.11

2 years ago

2.51.10

2 years ago

2.51.2

2 years ago

2.51.4

2 years ago

2.51.5

2 years ago

2.51.0

2 years ago

2.51.1

2 years ago

2.50.8

3 years ago

2.50.7

3 years ago

2.45.9

3 years ago

2.45.8

3 years ago

2.45.7-beta.1

3 years ago

2.45.7-beta.0

3 years ago

2.45.6

3 years ago

2.45.5

3 years ago

2.45.7

3 years ago

2.45.4

3 years ago

2.45.3

3 years ago

2.45.2

3 years ago