This package contains various clients and helpers to interact with UMA's financial templates. It is primarily used to power the disputer, liquidator, and monitor bots.
yarn add @uma/financial-templates-lib
const { FinancialContractClient, GasEstimator } = require("@uma/financial-templates-lib")
The three clients available are:
-
The
FinancialContractClient
can be used to access information about Financial Contract sponsors and their collateralization ratios. To understand how to interact with the client, see the class documentation here. -
The
FinancialContractEventClient
can be used to access historical events that were emitted by a Financial Contract. To understand how to interact with the client, see the class documentation here. -
The
TokenBalanceClient
tracks the collateral and synthetic balances for a list of wallets. To understand how to interact with the client, see the class documentation here.
The package offers a variety of price feed implementations that adere to the PriceFeedInterface
(docs can be found in
the interface file here):
- The
CryptoWatchPriceFeed
, found here, uses https://cryptowat.ch/ as a source of CEX price data. - The
UniswapPriceFeed
, found here, uses a Uniswap (v2) market TWAP as the price source. Note: the TWAP length can be set to 0 to make this an instantaneous price. - THe
BalancerPriceFeed
, found here, uses a Balancer market as the price source. - The
MedianizerPriceFeed
, found here, takes multiple price feeds and returns the median of their prices.
There are a few other helper/utility files that are relevant:
- CreatePriceFeed.js has a variety of factory utilities that will create a price feed given an input configuration.
-
DefaultPriceFeedConfigs.js contains a list of default price feeds
for different identifiers in the UMA ecosystem. These are used by
CreatePriceFeed.js
to create price feeds with no or incomplete input configurations. - Networker.js has a mockable object that sends network requests and is used by many objects in financial-templates-lib to send requests.
The Logger directory contains helpers and factories for logging with Winston. To get the default logger:
const { Logger, createPriceFeed, Networker } = require("@uma/financial-templates-lib");
// A winston logger is required for createPriceFeed, networker and other objects in financial-templates-lib.
const networker = new Networker(Logger);
const priceFeed = createPriceFeed(Logger, web3, networker, ...);
// You can also log directly using the winston logger.
Logger.debug({
at: "createPriceFeed",
message: "Creating CryptoWatchPriceFeed",
otherParam: 5
});
There are two helper files that are available in financial-templates-lib:
- delay.js: simple file containing a function to "sleep".
-
GasEstimator.js:
GasEstimator
provides an estimate of the current fast gas price.