86 lines
2.3 KiB
C#
86 lines
2.3 KiB
C#
using GraphQL.Client.Abstractions;
|
|
using GraphQL;
|
|
using Managing.Infrastructure.Evm.Abstractions;
|
|
using Managing.Infrastructure.Evm.Subgraphs.Models;
|
|
using Managing.Domain.Candles;
|
|
using static Managing.Common.Enums;
|
|
|
|
namespace Managing.Infrastructure.Evm.Subgraphs;
|
|
|
|
public class Uniswap : IUniswap
|
|
{
|
|
SubgraphProvider ISubgraphPrices.GetProvider() => SubgraphProvider.UniswapV2;
|
|
|
|
private readonly IGraphQLClient _graphQLClient;
|
|
|
|
public Uniswap(IGraphQLClient graphQLHttpClient)
|
|
{
|
|
_graphQLClient = graphQLHttpClient ?? throw new ArgumentNullException(nameof(graphQLHttpClient));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get the first 150 most liquid market pairs ordered by desc
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task<Pools> GetMostLiquidMarketPairs()
|
|
{
|
|
var query = new GraphQLRequest
|
|
{
|
|
Query = @"
|
|
{
|
|
pairs(first: 150, orderBy: reserveETH orderDirection: desc){
|
|
token0 {
|
|
symbol
|
|
}
|
|
token1 {
|
|
symbol
|
|
}
|
|
reserveETH
|
|
reserveUSD
|
|
}
|
|
}
|
|
"
|
|
};
|
|
|
|
GraphQLResponse<Pools> response = await _graphQLClient.SendQueryAsync<Pools>(query);
|
|
return response.Data;
|
|
}
|
|
|
|
public async Task<TopTokens> GetTopTokens()
|
|
{
|
|
var query = new GraphQLRequest
|
|
{
|
|
Query = @"
|
|
{
|
|
tokens (first: 150, orderBy: tradeVolumeUSD orderDirection: desc){
|
|
symbol
|
|
name
|
|
tradeVolume
|
|
tradeVolumeUSD
|
|
totalSupply
|
|
totalLiquidity
|
|
}
|
|
}
|
|
"
|
|
};
|
|
|
|
GraphQLResponse<TopTokens> response = await _graphQLClient.SendQueryAsync<TopTokens>(query);
|
|
return response.Data;
|
|
}
|
|
|
|
public Task<IEnumerable<Candle>> GetPrices(Ticker ticker, DateTime startDate, Timeframe timeframe)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public Task<decimal> GetVolume(Ticker ticker)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public Task<IEnumerable<Ticker>> GetTickers()
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|