import { Module } from '@nestjs/common';
import { McpApplicationService } from './application/mcp/mcp-application.service';
import { ToolCatalogService } from './application/mcp/tool-catalog.service';
import { LokiQueryUsecase } from './application/tools/loki-query.usecase';
import { LokiQueryRangeUsecase } from './application/tools/loki-query-range.usecase';
import { LokiMdsRiskLogsUsecase } from './application/tools/loki-mds-risk-logs.usecase';
import { LokiRiskDetailLogsUsecase } from './application/tools/loki-risk-detail-logs.usecase';
import { LokiEppRiskLogsUsecase } from './application/tools/loki-epp-risk-logs.usecase';
import { EverdigmMailUnspamRequestsUsecase } from './application/tools/everdigm-mail-unspam-requests.usecase';
import { EverdigmMailSpamDetailUsecase } from './application/tools/everdigm-mail-spam-detail.usecase';
import { EverdigmMailSpamActionUsecase } from './application/tools/everdigm-mail-spam-action.usecase';
import { EverdigmMailLogsUsecase } from './application/tools/everdigm-mail-logs.usecase';
import { RpcController } from './inbound/http/rpc.controller';
import { McpRequestHandler } from './inbound/mcp/mcp-request-handler.service';
import { StdioTransport } from './inbound/stdio/stdio.transport';
import { LokiClient } from './outbound/loki/loki.client';
import { EverdigmMailClient } from './outbound/everdigm-mail/everdigm-mail.client';

@Module({
  controllers: [RpcController],
  providers: [
    McpRequestHandler,
    StdioTransport,
    McpApplicationService,
    ToolCatalogService,
    LokiQueryUsecase,
    LokiQueryRangeUsecase,
    LokiMdsRiskLogsUsecase,
    LokiRiskDetailLogsUsecase,
    LokiEppRiskLogsUsecase,
    EverdigmMailUnspamRequestsUsecase,
    EverdigmMailSpamDetailUsecase,
    EverdigmMailSpamActionUsecase,
    EverdigmMailLogsUsecase,
    LokiClient,
    EverdigmMailClient,
  ],
})
export class AppModule {}
