github.com/diadata-org/diadata@v1.4.593/pkg/dia/scraper/liquidity-scrapers/ScraperInterface.go (about)

     1  package liquidityscrapers
     2  
     3  import (
     4  	"github.com/diadata-org/diadata/pkg/dia"
     5  	scrapers "github.com/diadata-org/diadata/pkg/dia/scraper/exchange-scrapers"
     6  	models "github.com/diadata-org/diadata/pkg/model"
     7  	"github.com/sirupsen/logrus"
     8  )
     9  
    10  type LiquidityScraper interface {
    11  	Pool() chan dia.Pool
    12  	Done() chan bool
    13  }
    14  
    15  const (
    16  	GLOBAL_NATIVE_LIQUIDITY_THRESHOLD = 0.5
    17  )
    18  
    19  var (
    20  	log        *logrus.Logger
    21  	exchanges  map[string]dia.Exchange
    22  	priceCache = make(map[string]float64)
    23  )
    24  
    25  func init() {
    26  	log = logrus.New()
    27  	exchanges = scrapers.Exchanges
    28  
    29  }
    30  
    31  // NewLiquidityScraper returns a liquidity scraper for @source.
    32  func NewLiquidityScraper(source string, relDB *models.RelDB, datastore *models.DB) LiquidityScraper {
    33  	switch source {
    34  	case dia.UniswapExchange:
    35  		return NewUniswapScraper(exchanges[dia.UniswapExchange], relDB, datastore)
    36  	case dia.UniswapExchangeBase:
    37  		return NewUniswapScraper(exchanges[dia.UniswapExchangeBase], relDB, datastore)
    38  	case dia.SushiSwapExchange:
    39  		return NewUniswapScraper(exchanges[dia.SushiSwapExchange], relDB, datastore)
    40  	case dia.SushiSwapExchangePolygon:
    41  		return NewUniswapScraper(exchanges[dia.SushiSwapExchangePolygon], relDB, datastore)
    42  	case dia.SushiSwapExchangeFantom:
    43  		return NewUniswapScraper(exchanges[dia.SushiSwapExchangeFantom], relDB, datastore)
    44  	case dia.SushiSwapExchangeArbitrum:
    45  		return NewUniswapScraper(exchanges[dia.SushiSwapExchangeArbitrum], relDB, datastore)
    46  	case dia.CamelotExchange:
    47  		return NewUniswapScraper(exchanges[dia.CamelotExchange], relDB, datastore)
    48  	case dia.NileV1Exchange:
    49  		return NewUniswapScraper(exchanges[dia.NileV1Exchange], relDB, datastore)
    50  	case dia.RamsesV1Exchange:
    51  		return NewUniswapScraper(exchanges[dia.RamsesV1Exchange], relDB, datastore)
    52  	case dia.CamelotExchangeV3:
    53  		return NewCamelotV3Scraper(exchanges[dia.CamelotExchangeV3], relDB, datastore)
    54  	case dia.ThenaV3Exchange:
    55  		return NewCamelotV3Scraper(exchanges[dia.ThenaV3Exchange], relDB, datastore)
    56  	case dia.PanCakeSwap:
    57  		return NewUniswapScraper(exchanges[dia.PanCakeSwap], relDB, datastore)
    58  	case dia.PanCakeSwapExchangeV3:
    59  		return NewUniswapV3Scraper(exchanges[dia.PanCakeSwapExchangeV3], relDB, datastore)
    60  	case dia.RamsesV2Exchange:
    61  		return NewUniswapV3Scraper(exchanges[dia.RamsesV2Exchange], relDB, datastore)
    62  	case dia.NileV2Exchange:
    63  		return NewUniswapV3Scraper(exchanges[dia.NileV2Exchange], relDB, datastore)
    64  	case dia.DfynNetwork:
    65  		return NewUniswapScraper(exchanges[dia.DfynNetwork], relDB, datastore)
    66  	case dia.QuickswapExchange:
    67  		return NewUniswapScraper(exchanges[dia.QuickswapExchange], relDB, datastore)
    68  	case dia.UbeswapExchange:
    69  		return NewUniswapScraper(exchanges[dia.UbeswapExchange], relDB, datastore)
    70  	case dia.SpookyswapExchange:
    71  		return NewUniswapScraper(exchanges[dia.SpookyswapExchange], relDB, datastore)
    72  	case dia.SpiritswapExchange:
    73  		return NewUniswapScraper(exchanges[dia.SpiritswapExchange], relDB, datastore)
    74  	case dia.SolarbeamExchange:
    75  		return NewUniswapScraper(exchanges[dia.SolarbeamExchange], relDB, datastore)
    76  	case dia.TrisolarisExchange:
    77  		return NewUniswapScraper(exchanges[dia.TrisolarisExchange], relDB, datastore)
    78  	case dia.NetswapExchange:
    79  		return NewUniswapScraper(exchanges[dia.NetswapExchange], relDB, datastore)
    80  	case dia.HuckleberryExchange:
    81  		return NewUniswapScraper(exchanges[dia.HuckleberryExchange], relDB, datastore)
    82  	case dia.PangolinExchange:
    83  		return NewUniswapScraper(exchanges[dia.PangolinExchange], relDB, datastore)
    84  	case dia.TethysExchange:
    85  		return NewUniswapScraper(exchanges[dia.TethysExchange], relDB, datastore)
    86  	case dia.HermesExchange:
    87  		return NewUniswapScraper(exchanges[dia.HermesExchange], relDB, datastore)
    88  	case dia.OmniDexExchange:
    89  		return NewUniswapScraper(exchanges[dia.OmniDexExchange], relDB, datastore)
    90  	case dia.DiffusionExchange:
    91  		return NewUniswapScraper(exchanges[dia.DiffusionExchange], relDB, datastore)
    92  	case dia.ApeswapExchange:
    93  		return NewUniswapScraper(exchanges[dia.ApeswapExchange], relDB, datastore)
    94  	case dia.BiswapExchange:
    95  		return NewUniswapScraper(exchanges[dia.BiswapExchange], relDB, datastore)
    96  	case dia.ArthswapExchange:
    97  		return NewUniswapScraper(exchanges[dia.ArthswapExchange], relDB, datastore)
    98  	case dia.StellaswapExchange:
    99  		return NewUniswapScraper(exchanges[dia.StellaswapExchange], relDB, datastore)
   100  	case dia.WanswapExchange:
   101  		return NewUniswapScraper(exchanges[dia.WanswapExchange], relDB, datastore)
   102  	case dia.ThenaExchange:
   103  		return NewUniswapScraper(exchanges[dia.ThenaExchange], relDB, datastore)
   104  
   105  	case dia.TraderJoeExchange:
   106  		return NewUniswapScraper(exchanges[dia.TraderJoeExchange], relDB, datastore)
   107  	case dia.TraderJoeExchangeV2_1:
   108  		return NewTraderJoeLiquidityScraper(exchanges[dia.TraderJoeExchangeV2_1], relDB, datastore)
   109  	case dia.TraderJoeExchangeV2_1Arbitrum:
   110  		return NewTraderJoeLiquidityScraper(exchanges[dia.TraderJoeExchangeV2_1Arbitrum], relDB, datastore)
   111  	case dia.TraderJoeExchangeV2_1Avalanche:
   112  		return NewTraderJoeLiquidityScraper(exchanges[dia.TraderJoeExchangeV2_1Avalanche], relDB, datastore)
   113  	case dia.TraderJoeExchangeV2_1BNB:
   114  		return NewTraderJoeLiquidityScraper(exchanges[dia.TraderJoeExchangeV2_1BNB], relDB, datastore)
   115  	case dia.TraderJoeExchangeV2_2Avalanche:
   116  		return NewTraderJoeLiquidityScraper(exchanges[dia.TraderJoeExchangeV2_2Avalanche], relDB, datastore)
   117  
   118  	case dia.CurveFIExchange:
   119  		return NewCurveFIScraper(exchanges[dia.CurveFIExchange], relDB, datastore)
   120  	case dia.CurveFIExchangePolygon:
   121  		return NewCurveFIScraper(exchanges[dia.CurveFIExchangePolygon], relDB, datastore)
   122  	case dia.CurveFIExchangeFantom:
   123  		return NewCurveFIScraper(exchanges[dia.CurveFIExchangeFantom], relDB, datastore)
   124  	case dia.CurveFIExchangeMoonbeam:
   125  		return NewCurveFIScraper(exchanges[dia.CurveFIExchangeMoonbeam], relDB, datastore)
   126  	case dia.CurveFIExchangeArbitrum:
   127  		return NewCurveFIScraper(exchanges[dia.CurveFIExchangeArbitrum], relDB, datastore)
   128  
   129  	case dia.BalancerV2Exchange:
   130  		return NewBalancerV2Scraper(exchanges[dia.BalancerV2Exchange], relDB, datastore)
   131  	case dia.BalancerV2ExchangeArbitrum:
   132  		return NewBalancerV2Scraper(exchanges[dia.BalancerV2ExchangeArbitrum], relDB, datastore)
   133  	case dia.BeetsExchange:
   134  		return NewBalancerV2Scraper(exchanges[dia.BeetsExchange], relDB, datastore)
   135  	case dia.BalancerV2ExchangePolygon:
   136  		return NewBalancerV2Scraper(exchanges[dia.BalancerV2ExchangePolygon], relDB, datastore)
   137  
   138  	case dia.BalancerV3Exchange:
   139  		return NewBalancerV3Scraper(exchanges[dia.BalancerV3Exchange], relDB, datastore)
   140  
   141  	case dia.UniswapExchangeV3:
   142  		return NewUniswapV3Scraper(exchanges[dia.UniswapExchangeV3], relDB, datastore)
   143  	case dia.UniswapExchangeV3Polygon:
   144  		return NewUniswapV3Scraper(exchanges[dia.UniswapExchangeV3Polygon], relDB, datastore)
   145  	case dia.UniswapExchangeV3Arbitrum:
   146  		return NewUniswapV3Scraper(exchanges[dia.UniswapExchangeV3Arbitrum], relDB, datastore)
   147  	case dia.UniswapExchangeV3Base:
   148  		return NewUniswapV3Scraper(exchanges[dia.UniswapExchangeV3Base], relDB, datastore)
   149  	case dia.UniswapExchangeV3Celo:
   150  		return NewUniswapV3Scraper(exchanges[dia.UniswapExchangeV3Celo], relDB, datastore)
   151  
   152  	case dia.UniswapExchangeV4:
   153  		return NewUniswapV4Scraper(exchanges[dia.UniswapExchangeV4], relDB, datastore)
   154  
   155  	case dia.BancorExchange:
   156  		return NewBancorPoolScraper(exchanges[dia.BancorExchange], datastore)
   157  	case dia.OrcaExchange:
   158  		return NewOrcaScraper(exchanges[dia.OrcaExchange], datastore)
   159  	case dia.OsmosisExchange:
   160  		return NewOsmosisScraper(exchanges[dia.OsmosisExchange], relDB, datastore)
   161  	case dia.PlatypusExchange:
   162  		return NewPlatypusScraper(exchanges[dia.PlatypusExchange], datastore)
   163  	case dia.VelodromeExchange:
   164  		return NewVelodromePoolScraper(exchanges[dia.VelodromeExchange], relDB, datastore)
   165  	case dia.VelodromeExchangeSwellchain:
   166  		return NewVelodromePoolScraper(exchanges[dia.VelodromeExchangeSwellchain], relDB, datastore)
   167  	case dia.VelodromeSlipstreamExchange:
   168  		return NewVelodromePoolScraper(exchanges[dia.VelodromeSlipstreamExchange], relDB, datastore)
   169  	case dia.AerodromeV1Exchange:
   170  		return NewVelodromePoolScraper(exchanges[dia.AerodromeV1Exchange], relDB, datastore)
   171  	case dia.AerodromeSlipstreamExchange:
   172  		return NewVelodromePoolScraper(exchanges[dia.AerodromeSlipstreamExchange], relDB, datastore)
   173  	case dia.MaverickExchange:
   174  		return NewMaverickScraper(exchanges[dia.MaverickExchange], relDB, datastore)
   175  	case dia.PearlfiExchangeTestnet:
   176  		return NewUniswapV3Scraper(exchanges[dia.PearlfiExchangeTestnet], relDB, datastore)
   177  	case dia.PearlfiExchange:
   178  		return NewUniswapV3Scraper(exchanges[dia.PearlfiExchange], relDB, datastore)
   179  	case dia.PearlfiStableswapExchange:
   180  		return NewUniswapScraper(exchanges[dia.PearlfiStableswapExchange], relDB, datastore)
   181  
   182  	case dia.AyinExchange:
   183  		return NewAyinLiquidityScraper(exchanges[dia.AyinExchange], relDB, datastore)
   184  	case dia.BitflowExchange:
   185  		return NewBitflowLiquidityScraper(exchanges[dia.BitflowExchange], relDB, datastore)
   186  	case dia.VelarExchange:
   187  		return NewVelarLiquidityScraper(exchanges[dia.VelarExchange], relDB, datastore)
   188  	case dia.BifrostExchange:
   189  		return NewBifrostLiquidityScraper(exchanges[dia.BifrostExchange], relDB, datastore)
   190  	case dia.HydrationExchange:
   191  		return NewHydrationLiquidityScraper(exchanges[dia.HydrationExchange], relDB, datastore)
   192  	default:
   193  		return nil
   194  	}
   195  
   196  }