Add Agent tracking balance

This commit is contained in:
2025-05-16 22:30:18 +07:00
parent b34e3aa886
commit 1cfb83f0b1
34 changed files with 764 additions and 115 deletions

View File

@@ -1,6 +1,4 @@
using System.Reflection;
using Binance.Net.Clients;
using Binance.Net.Interfaces.Clients;
using Discord.Commands;
using Discord.WebSocket;
using FluentValidation;
@@ -55,7 +53,10 @@ public static class ApiBootstrap
public static IServiceCollection RegisterApiDependencies(this IServiceCollection services,
IConfiguration configuration)
{
services.Configure<Web3ProxySettings>(configuration.GetSection("Web3Proxy"));
return services
.AddWorkers(configuration)
.AddApplication()
.AddInfrastructure(configuration)
.AddFluentValidation()
@@ -78,6 +79,22 @@ public static class ApiBootstrap
services.AddTransient<ICommandHandler<OpenPositionRequest, Position>, OpenPositionCommandHandler>();
services.AddTransient<ICommandHandler<ClosePositionCommand, Position>, ClosePositionCommandHandler>();
// Processors
services.AddTransient<IExchangeProcessor, EvmProcessor>();
services.AddTransient<IExchangeProcessor, FtxProcessor>();
services.AddTransient<IExchangeProcessor, BinanceProcessor>();
services.AddTransient<IExchangeProcessor, KrakenProcessor>();
services.AddTransient<ITradaoService, TradaoService>();
services.AddTransient<IExchangeService, ExchangeService>();
services.AddTransient<IExchangeStream, ExchangeStream>();
services.AddSingleton<IMessengerService, MessengerService>();
services.AddSingleton<IDiscordService, DiscordService>();
services.AddSingleton<IBotService, BotService>();
services.AddSingleton<IWorkerService, WorkerService>();
services.AddTransient<IPrivyService, PrivyService>();
services.AddTransient<IWeb3ProxyService, Web3ProxyService>();
return services;
}
@@ -114,36 +131,27 @@ public static class ApiBootstrap
services.AddTransient<IWorkflowRepository, WorkflowRepository>();
services.AddTransient<IBotRepository, BotRepository>();
services.AddTransient<IWorkerRepository, WorkerRepository>();
services.AddTransient<IAgentBalanceRepository, AgentBalanceRepository>();
// Cache
services.AddDistributedMemoryCache();
services.AddTransient<ICacheService, CacheService>();
services.AddSingleton<ITaskCache, TaskCache>();
// Processors
services.AddTransient<IExchangeProcessor, EvmProcessor>();
services.AddTransient<IExchangeProcessor, FtxProcessor>();
services.AddTransient<IExchangeProcessor, BinanceProcessor>();
services.AddTransient<IExchangeProcessor, KrakenProcessor>();
return services;
}
// Services
services.AddTransient<ITradaoService, TradaoService>();
services.AddTransient<IExchangeService, ExchangeService>();
services.AddTransient<IExchangeStream, ExchangeStream>();
services.AddSingleton<IMessengerService, MessengerService>();
services.AddSingleton<IDiscordService, DiscordService>();
services.AddSingleton<IBotService, BotService>();
services.AddSingleton<IWorkerService, WorkerService>();
services.AddTransient<IPrivyService, PrivyService>();
private static IServiceCollection AddWorkers(this IServiceCollection services, IConfiguration configuration)
{
if (configuration.GetValue<bool>("Workers:BotManager", false))
{
services.AddHostedService<BotManagerWorker>();
}
// Web3Proxy Configuration
services.Configure<Web3ProxySettings>(configuration.GetSection("Web3Proxy"));
services.AddTransient<IWeb3ProxyService, Web3ProxyService>();
// Stream
services.AddSingleton<IBinanceSocketClient, BinanceSocketClient>();
services.AddSingleton<IStreamService, StreamService>();
if (configuration.GetValue<bool>("Workers:BalancesTracking", false))
{
services.AddHostedService<BalanceTrackingWorker>();
}
return services;
}