@oikos/contracts-interface v1.0.77
Contracts Interface to oikos
The official JavaScript library for interacting with oikos protocol contracts.
This library can be used in 2 different environments:
- Common-js module for node environments
- UMD module for browser environments
Instantiating in node.js or the browser
// For node environments:
const { oikos } = require('@synthetixio/contracts-interface');
// For single page applications:
import { oikos } 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 oikos on the window object:
const { oikos } = window;
// Instantiate the library with or without a provider
const oksjs = oikos({ network: 'mainnet' });
// Note: for typescript applications
import { oikos, Network } from '@synthetixio/contracts-interface';
const oksjs = oikos({ network: Network.Mainnet });
Reading state
const oksjs = oikos({ network: 'mainnet' });
// If you want to interact with a contract, simply follow the convention:
// await oksjs[contractName].methodName(arguments)
const owner = await oksjs.contracts.oikos.owner();
// many arguments require being formatted toBytes32, which we also provide with the library
const { toBytes32 } = oks;
const totalIssuedSynths = await oksjs.contracts.oikos.totalIssuedSynths(toBytes32('oUSD'));
// We also expose ethers utils which provides handy methods for formatting responses to queries.
const { formatEther } = oksjs.utils;
formatEther(await oksjs.contracts.SynthoUSD.totalSupply());
formatEther(await oksjs.contracts.ExchangeRates.rateForCurrency(oksjs.toBytes32('oks')));
// Note can optionally pass in a { blockTag: someBlockNumber } to get data from a specific block instead of {}
const oksAtBlock12m = await oksjs.contracts.ExchangeRates.rateForCurrency(oksjs.toBytes32('oks'), {
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 oikos with the signer
const oksjs = oikos({ network: 'mainnet', signer });
// mint 0.01 sETH via the NativeEtherWrapper
const response = await oksjs.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.
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago