* Filter everything with users * Fix backtests and user management * Add cursor rules * Fix backtest and bots * Update configs names * Sign until unauth * Setup delegate * Setup delegate and sign * refact * Enhance Privy signature generation with improved cryptographic methods * Add Fastify backend * Add Fastify backend routes for privy * fix privy signing * fix privy client * Fix tests * add gmx core * fix merging sdk * Fix tests * add gmx core * add gmx core * add privy to boilerplate * clean * fix * add fastify * Remove Managing.Fastify submodule * Add Managing.Fastify as regular directory instead of submodule * Update .gitignore to exclude Managing.Fastify dist and node_modules directories * Add token approval functionality to Privy plugin - Introduced a new endpoint `/approve-token` for approving ERC20 tokens. - Added `approveToken` method to the Privy plugin for handling token approvals. - Updated `signPrivyMessage` to differentiate between message signing and token approval requests. - Enhanced the plugin with additional schemas for input validation. - Included new utility functions for token data retrieval and message construction. - Updated tests to verify the new functionality and ensure proper request decoration. * Add PrivyApproveTokenResponse model for token approval response - Created a new class `PrivyApproveTokenResponse` to encapsulate the response structure for token approval requests. - The class includes properties for `Success` status and a transaction `Hash`. * Refactor trading commands and enhance API routes - Updated `OpenPositionCommandHandler` to use asynchronous methods for opening trades and canceling orders. - Introduced new Fastify routes for opening positions and canceling orders with appropriate request validation. - Modified `EvmManager` to handle both Privy and non-Privy wallet operations, utilizing the Fastify API for Privy wallets. - Adjusted test configurations to reflect changes in account types and added helper methods for testing Web3 proxy services. * Enhance GMX trading functionality and update dependencies - Updated `dev:start` script in `package.json` to include the `-d` flag for Fastify. - Upgraded `fastify-cli` dependency to version 7.3.0. - Added `sourceMap` option to `tsconfig.json`. - Refactored GMX plugin to improve position opening logic, including enhanced error handling and validation. - Introduced a new method `getMarketInfoFromTicker` for better market data retrieval. - Updated account type in `PrivateKeys.cs` to use `Privy`. - Adjusted `EvmManager` to utilize the `direction` enum directly for trade direction handling. * Refactor GMX plugin for improved trading logic and market data retrieval - Enhanced the `openGmxPositionImpl` function to utilize the `TradeDirection` enum for trade direction handling. - Introduced `getTokenDataFromTicker` and `getMarketByIndexToken` functions for better market and token data retrieval. - Updated collateral calculation and logging for clarity. - Adjusted `EvmManager` to ensure proper handling of price values in trade requests. * Refactor GMX plugin and enhance testing for position opening - Updated `test:single` script in `package.json` to include TypeScript compilation before running tests. - Removed `this` context from `getClientForAddress` function and replaced logging with `console.error`. - Improved collateral calculation in `openGmxPositionImpl` for better precision. - Adjusted type casting for `direction` in the API route to utilize `TradeDirection` enum. - Added a new test for opening a long position in GMX, ensuring functionality and correctness. * Update sdk * Update * update fastify * Refactor start script in package.json to simplify command execution - Removed the build step from the start script, allowing for a more direct launch of the Fastify server. * Update package.json for Web3Proxy - Changed the name from "Web3Proxy" to "web3-proxy". - Updated version from "0.0.0" to "1.0.0". - Modified the description to "The official Managing Web3 Proxy". * Update Dockerfile for Web3Proxy - Upgraded Node.js base image from 18-alpine to 22.14.0-alpine. - Added NODE_ENV environment variable set to production. * Refactor Dockerfile and package.json for Web3Proxy - Removed the build step from the Dockerfile to streamline the image creation process. - Updated the start script in package.json to include the build step, ensuring the application is built before starting the server. * Add fastify-tsconfig as a development dependency in Dockerfile-web3proxy * Remove fastify-tsconfig extension from tsconfig.json for Web3Proxy * Add PrivyInitAddressResponse model for handling initialization responses - Introduced a new class `PrivyInitAddressResponse` to encapsulate the response structure for Privy initialization, including properties for success status, USDC hash, order vault hash, and error message. * Update * Update * Remove fastify-tsconfig installation from Dockerfile-web3proxy * Add build step to Dockerfile-web3proxy - Included `npm run build` in the Dockerfile to ensure the application is built during the image creation process. * Update * approvals * Open position from front embedded wallet * Open position from front embedded wallet * Open position from front embedded wallet * Fix call contracts * Fix limit price * Close position * Fix close position * Fix close position * add pinky * Refactor position handling logic * Update Dockerfile-pinky to copy package.json and source code from the correct directory * Implement password protection modal and enhance UI with new styles; remove unused audio elements and update package dependencies. * add cancel orders * Update callContract function to explicitly cast account address as Address type * Update callContract function to cast transaction parameters as any type for compatibility * Cast transaction parameters as any type in approveTokenImpl for compatibility * Cast wallet address and transaction parameters as Address type in approveTokenImpl for type safety * Add .env configuration file for production setup including database and server settings * Refactor home route to update welcome message and remove unused SDK configuration code * add referral code * fix referral * Add sltp * Fix typo * Fix typo * setup sltp on backtend * get orders * get positions with slp * fixes * fixes close position * fixes * Remove MongoDB project references from Dockerfiles for managing and worker APIs * Comment out BotManagerWorker service registration and remove MongoDB project reference from Dockerfile * fixes
173 lines
7.4 KiB
C#
173 lines
7.4 KiB
C#
using System.Reflection;
|
|
using Binance.Net.Clients;
|
|
using Binance.Net.Interfaces.Clients;
|
|
using Discord.Commands;
|
|
using Discord.WebSocket;
|
|
using FluentValidation;
|
|
using Managing.Application.Abstractions;
|
|
using Managing.Application.Abstractions.Repositories;
|
|
using Managing.Application.Abstractions.Services;
|
|
using Managing.Application.Accounts;
|
|
using Managing.Application.Backtesting;
|
|
using Managing.Application.Bots.Base;
|
|
using Managing.Application.ManageBot;
|
|
using Managing.Application.ManageBot.Commands;
|
|
using Managing.Application.MoneyManagements;
|
|
using Managing.Application.Scenarios;
|
|
using Managing.Application.Shared;
|
|
using Managing.Application.Shared.Behaviours;
|
|
using Managing.Application.Trading;
|
|
using Managing.Application.Trading.Commands;
|
|
using Managing.Application.Users;
|
|
using Managing.Application.Workers;
|
|
using Managing.Application.Workers.Abstractions;
|
|
using Managing.Application.Workflows;
|
|
using Managing.Domain.Trades;
|
|
using Managing.Infrastructure.Databases;
|
|
using Managing.Infrastructure.Databases.InfluxDb;
|
|
using Managing.Infrastructure.Databases.InfluxDb.Abstractions;
|
|
using Managing.Infrastructure.Databases.InfluxDb.Models;
|
|
using Managing.Infrastructure.Databases.MongoDb;
|
|
using Managing.Infrastructure.Databases.MongoDb.Abstractions;
|
|
using Managing.Infrastructure.Databases.MongoDb.Configurations;
|
|
using Managing.Infrastructure.Evm;
|
|
using Managing.Infrastructure.Evm.Abstractions;
|
|
using Managing.Infrastructure.Evm.Models.Privy;
|
|
using Managing.Infrastructure.Evm.Services;
|
|
using Managing.Infrastructure.Evm.Subgraphs;
|
|
using Managing.Infrastructure.Exchanges;
|
|
using Managing.Infrastructure.Exchanges.Abstractions;
|
|
using Managing.Infrastructure.Exchanges.Exchanges;
|
|
using Managing.Infrastructure.Messengers.Discord;
|
|
using Managing.Infrastructure.Storage;
|
|
using MediatR;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Options;
|
|
|
|
namespace Managing.Bootstrap;
|
|
|
|
public static class ApiBootstrap
|
|
{
|
|
private static readonly Assembly ApplicationAssembly = typeof(StartBotCommand).GetTypeInfo().Assembly;
|
|
|
|
public static IServiceCollection RegisterApiDependencies(this IServiceCollection services,
|
|
IConfiguration configuration)
|
|
{
|
|
return services
|
|
.AddApplication()
|
|
.AddInfrastructure(configuration)
|
|
.AddFluentValidation()
|
|
.AddMediatR();
|
|
}
|
|
|
|
private static IServiceCollection AddApplication(this IServiceCollection services)
|
|
{
|
|
services.AddSingleton<ITradingService, TradingService>();
|
|
services.AddSingleton<IBotFactory, BotFactory>();
|
|
services.AddSingleton<IBacktester, Backtester>();
|
|
services.AddSingleton<IScenarioService, ScenarioService>();
|
|
services.AddSingleton<IMoneyManagementService, MoneyManagementService>();
|
|
services.AddSingleton<IAccountService, AccountService>();
|
|
services.AddSingleton<IStatisticService, StatisticService>();
|
|
services.AddSingleton<ISettingsService, SettingsService>();
|
|
services.AddSingleton<IUserService, UserService>();
|
|
services.AddSingleton<IWorkflowService, WorkflowService>();
|
|
services.AddSingleton<IFlowFactory, FlowFactory>();
|
|
services.AddTransient<ICommandHandler<OpenPositionRequest, Position>, OpenPositionCommandHandler>();
|
|
services.AddTransient<ICommandHandler<ClosePositionCommand, Position>, ClosePositionCommandHandler>();
|
|
|
|
return services;
|
|
}
|
|
|
|
private static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
|
|
{
|
|
// Database
|
|
services.AddSingleton<IManagingDatabaseSettings>(sp =>
|
|
sp.GetRequiredService<IOptions<ManagingDatabaseSettings>>().Value);
|
|
|
|
services.AddTransient(typeof(IMongoRepository<>), typeof(MongoRepository<>));
|
|
|
|
services.AddSingleton<IInfluxDbSettings>(sp =>
|
|
sp.GetRequiredService<IOptions<InfluxDbSettings>>().Value);
|
|
|
|
services.AddSingleton<IPrivySettings>(sp =>
|
|
sp.GetRequiredService<IOptions<PrivySettings>>().Value);
|
|
|
|
// Evm
|
|
services.AddGbcFeed();
|
|
services.AddUniswapV2();
|
|
services.AddChainlink();
|
|
services.AddChainlinkGmx();
|
|
services.AddSingleton<IEvmManager, EvmManager>();
|
|
|
|
// Repositories
|
|
services.AddTransient<IInfluxDbRepository, InfluxDbRepository>();
|
|
services.AddTransient<ICandleRepository, CandleRepository>();
|
|
services.AddTransient<IAccountRepository, AccountRepository>();
|
|
services.AddTransient<IBacktestRepository, BacktestRepository>();
|
|
services.AddTransient<ITradingRepository, TradingRepository>();
|
|
services.AddTransient<ISettingsRepository, SettingsRepository>();
|
|
services.AddTransient<IUserRepository, UserRepository>();
|
|
services.AddTransient<IStatisticRepository, StatisticRepository>();
|
|
services.AddTransient<IWorkflowRepository, WorkflowRepository>();
|
|
services.AddTransient<IBotRepository, BotRepository>();
|
|
services.AddTransient<IWorkerRepository, WorkerRepository>();
|
|
|
|
// 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>();
|
|
|
|
// 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>();
|
|
|
|
// Web3Proxy Configuration
|
|
services.Configure<Web3ProxySettings>(configuration.GetSection("Web3Proxy"));
|
|
services.AddTransient<IWeb3ProxyService, Web3ProxyService>();
|
|
|
|
// Stream
|
|
services.AddSingleton<IBinanceSocketClient, BinanceSocketClient>();
|
|
services.AddSingleton<IStreamService, StreamService>();
|
|
|
|
return services;
|
|
}
|
|
|
|
private static IServiceCollection AddMediatR(this IServiceCollection services)
|
|
{
|
|
return services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblies(AppDomain.CurrentDomain.GetAssemblies()))
|
|
.AddTransient(typeof(IPipelineBehavior<,>), typeof(ValidationBehaviour<,>))
|
|
.AddTransient(typeof(IUnhandledExceptionBehaviour<,>), typeof(UnhandledExceptionBehaviour<,>));
|
|
}
|
|
|
|
private static IServiceCollection AddFluentValidation(this IServiceCollection services)
|
|
{
|
|
return services.AddValidatorsFromAssembly(ApplicationAssembly);
|
|
}
|
|
|
|
public static IWebHostBuilder SetupDiscordBot(this IWebHostBuilder builder)
|
|
{
|
|
return builder.ConfigureServices(services =>
|
|
{
|
|
services
|
|
.AddSingleton<DiscordSettings>()
|
|
.AddSingleton<DiscordSocketClient>()
|
|
.AddSingleton<CommandService>()
|
|
.AddHostedService<DiscordService>();
|
|
});
|
|
}
|
|
} |