import { GET_GLOBAL_TRANSACTIONS , FILTERED_TRANSACTIONS } from './query'; import { TransactionType, sortTable } from '../Util'; import { convertTx, ACY_ROUTER } from './util'; import axios from 'axios'; import {getTransactionsByAccount} from '@/utils/txData' import { getLibrary } from '../ConnectWallet'; import {getAllSupportedTokensPrice, getAllSupportedTokensPrice_forMarket} from "@/acy-dex-swap/utils" import { totalInUSD } from '@/utils/utils'; import {API_URL, MARKET_API_URL} from '@/constants'; // const apiUrlPrefix = API_URL(); // SAMPLE TRANSACTION DATA // { // coin1: 'USDC', // coin2: 'WBTC', // type: TransactionType.SWAP, // totalValue: 57385063.19, // coin1Amount: 63.52037022, // coin2Amount: 93.65125987, // account: '0x8e4806c17347a9fc6f52b25e73c5e772973b4e3605ddc3cea30742ec8c53d13f', // time: '2021-09-01T04:02:39Z', // transactionID: '' // } const TRANSACTION_AMOUNT = 250; const FILTERED_AMOUNT = 50; //function to parse tx list to fit in datasource async function parseTransactionList(data){ const tokensPriceUSD = await getAllSupportedTokensPrice_forMarket(); let _txList = data.filter(item=>item.token1Number!=null); console.log("pringting filtered tx",_txList); _txList = _txList.map((item) => { let totalValue; item.action == 'Swap' ? totalValue = totalInUSD([{ token : item.token1Symbol, amount : item.token1Number }],tokensPriceUSD) : totalValue = totalInUSD([{ token : item.token1Symbol, amount : item.token1Number} , {token : item.token2Symbol, amount : item.token2Number }],tokensPriceUSD); return { account: item.address, coin1: item.token1Symbol, coin1Amount: item.token1Number, coin2: item.token2Symbol, coin2Amount: item.token2Number, time: item.transactionTime, totalValue: totalValue, transactionID: item.hash, type: item.action } }) return _txList.filter(item => item.coin1Amount !=0 ); } export async function fetchGlobalTransaction(){ try{ //let request = API_URL()+'/txlist/all?'+'range=50'; let request = MARKET_API_URL()+'/txlist/all?'+'range=50'; // let request = 'http://localhost:3001/api/users/all'; let response = await fetch(request); let data = await response.json(); // console.log(data.data); return await parseTransactionList(data.data); }catch (e){ console.log('service not available yet',e); return []; } } async function parseAccountTransaction(user,library){ let txList = []; let finalTxList = []; const userSwapTx = await getTransactionsByAccount(user,library,'SWAP'); const _swaptx = userSwapTx.map((item) => { return { account: user, coin1: item.inputTokenSymbol, coin1Amount: item.inputTokenNum, coin2: item.outTokenSymbol, coin2Amount: item.outTokenNum, time: item.transactionTime, totalValue: item.totalToken, transactionID: item.hash, type: "Swap" } }) const userLiquidityTx = await getTransactionsByAccount(user,library, 'LIQUIDITY'); const _liquiditytx = userLiquidityTx.map((item) => { return { account: user, coin1: item.token1Symbol, coin1Amount: item.token1Number, coin2: item.token2Symbol, coin2Amount: item.token2Number, time: item.transactionTime, totalValue: item.totalToken, transactionID: item.hash, type: item.action } }) txList.push(..._swaptx); txList.push(..._liquiditytx); return sortTable(txList, "time", true); } export async function fetchAccountTransaction(account, library) { try{ let accountTransactions = await parseAccountTransaction(account, library); return accountTransactions; }catch (e){ console.log('service not available yet',e); return null; } } async function parseTopExchangeVolume(userList,library){ let txList = []; let finalTxList = []; for (const user of userList) { console.log(user) const userSwapTx = await getTransactionsByAccount(user,library,'SWAP'); const _swaptx = userSwapTx.map((item) => { return { account: user, coin1: item.inputTokenSymbol, coin1Amount: item.inputTokenNum, coin2: item.outTokenSymbol, coin2Amount: item.outTokenNum, time: item.transactionTime, totalValue: item.totalToken, transactionID: item.hash, type: "Swap" } }) const userLiquidityTx = await getTransactionsByAccount(user,library, 'LIQUIDITY'); const _liquiditytx = userLiquidityTx.map((item) => { return { account: user, coin1: item.token1Symbol, coin1Amount: item.token1Number, coin2: item.token2Symbol, coin2Amount: item.token2Number, time: item.transactionTime, totalValue: item.totalToken, transactionID: item.hash, type: item.action } }) txList.push(..._swaptx); txList.push(..._liquiditytx); } return sortTable(txList, "totalValue", true); } export async function fetchTopExchangeVolume(library){ try{ //let request = `${API_URL()}/users/all`; let request = `${MARKET_API_URL()}/users/all`; let response = await fetch(request); let data = await response.json(); console.log(data.data); let topExchangeVolume = await parseTopExchangeVolume(data.data,library); return topExchangeVolume; }catch (e){ console.log('service not available yet',e); return null; } } // get transaction from pool export async function fetchTransactionsForPair(token1,token2){ console.log("fetching txlist for tokens ", token1, token2); try{ //let request = API_URL()+'/txlist/pair?'+'token1='+token1+'&&token2='+token2+'&&range=50'; let request = MARKET_API_URL()+'/txlist/pair?'+'token1='+token1+'&&token2='+token2+'&&range=50'; // let request = 'http://localhost:3001/api/users/all'; let response = await fetch(request); let data = await response.json(); // console.log(data.data); return await parseTransactionList(data.data); }catch (e){ console.log('service not available yet',e); return []; } } export async function fetchTransactionsForToken(token){ console.log("fetching txlist for tokens ", token); try{ //let request = API_URL()+'/txlist/token?'+'symbol='+token+'&&range=50'; let request = MARKET_API_URL()+'/txlist/token?'+'symbol='+token+'&&range=50'; // let request = 'http://localhost:3001/api/users/all'; let response = await fetch(request); let data = await response.json(); // console.log(data.data); return await parseTransactionList(data.data); }catch (e){ console.log('service not available yet',e); return []; } }