// 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 providerconstsnxjs=synthetix({network:'mainnet'});// Note: for typescript applicationsimport{synthetix,Network}from'@synthetixio/contracts-interface';constsnxjs=synthetix({network:Network.Mainnet});
constsnxjs=synthetix({network:'mainnet'});// If you want to interact with a contract, simply follow the convention:// await snxjs[contractName].methodName(arguments)constowner=awaitsnxjs.contracts.Synthetix.owner();// many arguments require being formatted toBytes32, which we also provide with the libraryconst{toBytes32}=snx;consttotalIssuedSynths=awaitsnxjs.contracts.Synthetix.totalIssuedSynths(toBytes32('sUSD'));// We also expose ethers utils which provides handy methods for formatting responses to queries.const{formatEther}=snxjs.utils;formatEther(awaitsnxjs.contracts.SynthsUSD.totalSupply());formatEther(awaitsnxjs.contracts.ExchangeRates.rateForCurrency(snxjs.toBytes32('SNX')));// Note can optionally pass in a { blockTag: someBlockNumber } to get data from a specific block instead of {}constsnxAtBlock12m=awaitsnxjs.contracts.ExchangeRates.rateForCurrency(snxjs.toBytes32('SNX'),{blockTag:12e6,});
// any old provider will doconstprovider=ethers.providers.getDefaultProvider('kovan');// create a signer with a provider attachedconstsigner=newethers.Wallet(// just a dummy kovan wallet with a little keth from the faucet'0xa0d951c494421559c63089093b020cf2f7aac003c916967dc36e989bc695222e',provider,);// and then instantiate synthetix with the signerconstsnxjs=synthetix({network:'mainnet',signer});// mint 0.01 sETH via the NativeEtherWrapperconstresponse=awaitsnxjs.contracts.NativeEtherWrapper.mint({value:parseEther('0.01'),gasPrice:parseUnits('5','gwei'),gasLimit:500e3,});console.log('Submitted',response.hash);awaitresponse.wait();console.log('Mined',`https://etherscan.io/tx/${response.hash}`);