Skip to content

Commit

Permalink
feat: add uniswap3base exchange driver
Browse files Browse the repository at this point in the history
  • Loading branch information
wouthoekstra committed Mar 25, 2024
1 parent 494d840 commit 6670882
Show file tree
Hide file tree
Showing 3 changed files with 1,743 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ exports.Uniswap2klaytn = require('./uniswap2klaytn');
exports.Uniswap2polygon = require('./uniswap2polygon');
exports.Uniswap3 = require('./uniswap3');
exports.Uniswap3avalanche = require('./uniswap3avalanche');
exports.Uniswap3base = require('./uniswap3base');
exports.Uniswap3bsc = require('./uniswap3bsc');
exports.Uniswap3polygon = require('./uniswap3polygon');
exports.United = require('./united');
Expand Down
40 changes: 40 additions & 0 deletions drivers/uniswap3base.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
const Driver = require('../models/driver');
const request = require('../lib/request');
const Ticker = require('../models/ticker');
const { parseToFloat } = require('../lib/utils');

/**
* @memberof Driver
* @augments Driver
*/
class Uniswap3base extends Driver {
/**
* @augments Driver.fetchTickers
* @returns {Promise.Array<Ticker>} Returns a promise of an array with tickers.
*/
async fetchTickers() {
const { data } = await request('https://api.geckoterminal.com/api/v2/networks/base/dexes/uniswap-v3-base/pools?page=1&sort=h24_volume_usd_desc');

return Object.keys(data).map((market) => {
const ticker = data[market];
const base = ticker.relationships.base_token.data.id.split('base_')[1];
const quote = ticker.relationships.quote_token.data.id.split('base_')[1];

const usdVolume = ticker.attributes.volume_usd.h24;
const usdBasePrice = ticker.attributes.base_token_price_usd;
const usdQuotePrice = ticker.attributes.base_token_price_usd;
const baseVolume = usdVolume * usdBasePrice;
const quoteVolume = usdVolume * usdQuotePrice;

return new Ticker({
base,
quote,
close: parseToFloat(ticker.attributes.base_token_price_native_currency),
baseVolume: parseToFloat(baseVolume),
quoteVolume: parseToFloat(quoteVolume),
});
});
}
}

module.exports = Uniswap3base;

0 comments on commit 6670882

Please sign in to comment.