# Tornado oracles This is a library providing convenient and fast access to oracles for Tornado-specific transactions, for example, withdrawal via relayer or getting rate to ETH for tokens that used in Tornado pools ### Installation
- Create `.npmrc` file in project root with content `@tornado:registry=https://git.tornado.ws/api/packages/tornado-packages/npm/` - Run `npm i @tornado/tornado-oracles` ### Import
```typescript const { TornadoFeeOracleV5, TornadoFeeOracleV5, TokenPriceOracle } = require('@tornado/tornado-oracles'); or import { TornadoFeeOracleV5, TornadoFeeOracleV5, TokenPriceOracle } from '@tornado/tornado-oracles'; ``` ### Usage
##### Estimate withdrawal gas costs ```typescript import { TornadoFeeOracleV5 } from '@tornado/tornado-oracles'; const tx: TransactionData = { to: tornadoProxyLightAddress, data: poolInstance.methods.withdraw(...params).encodeABI(), value: withdrawalProofArgs[5], }; const feeOracle = new TornadoFeeOracleV5(1, 'https://eth.llamarpc.com'); // First parameter - chain ID const withdrawalGas = await feeOracle.getGas(tx, 'relayer_withdrawal'); ``` ##### Estimate gas price and gas limit to send transaction ```typescript import { TornadoFeeOracleV5 } from '@tornado/tornado-oracles'; const incompleteTx: TransactionData = { to: tornadoProxyLightAddress, data: poolInstance.methods.withdraw(...params).encodeABI(), value: withdrawalProofArgs[5], }; const feeOracle = new TornadoFeeOracleV5(1, 'https://eth.llamarpc.com'); const transactionType: TxType = 'relayer_withdrawal'; const gasPrice = await feeOracle.getGasPriceInHex(transactionType); const gasLimit = await feeOracle.getGasLimit(incompleteTx, transactionType); const tx: TransactionData = Object.assign({ gasPrice, gasLimit }, incompleteTx); ``` ##### Get token prices (rate to ETH) for tokens that used in Tornado ```typescript import { TokenPriceOracle } from '@tornado/tornado-oracles'; const priceOracle = new TokenPriceOracle('https://eth.llamarpc.com'); const tokenPrices = await priceOracle.fetchPrices(); console.log(tokenPrices); // All prices in WEI /* { torn: '1653773547906175', dai: '603108348359886', cdai: '13487984643748', usdc: '601311723569085', usdt: '602058974373161', wbtc: '15696224089898846959' } */ ``` ### License [MIT](LICENSE)