import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { JwtModule } from '@nestjs/jwt';
import { ContabilidadModule } from '../contabilidad/contabilidad.module';
import { PosGatewayModule } from '../pos-gateway/pos-gateway.module';
import { PrismaModule } from '../prisma/prisma.module';
import { TesoreriaController } from './tesoreria.controller';
import { TesoreriaService } from './tesoreria.service';
import { TesController } from './tes.controller';
import { TesCuentasService } from './services/tes-cuentas.service';
import { TesMovimientosService } from './services/tes-movimientos.service';
import { TesCategoriaService } from './services/tes-categorias.service';
import { TesChequeService } from './services/tes-cheques.service';
import { TesTransferenciasService } from './services/tes-transferencias.service';
import { TesReportesService } from './services/tes-reportes.service';
import { TesConciliacionService } from './services/tes-conciliacion.service';
import { TesReglasService } from './services/tes-reglas.service';
import { AiConfigModule } from '../ai-dashboard/ai-config/ai-config.module';
import { AiProviderService } from '../ai-dashboard/ai-provider/ai-provider.service';
import { AiUsageModule } from '../ai-usage/ai-usage.module';

@Module({
  imports: [
    PrismaModule,
    PosGatewayModule,
    ContabilidadModule,
    AiConfigModule,
    AiUsageModule,
    ConfigModule,
    JwtModule.registerAsync({
      inject: [ConfigService],
      useFactory: (config: ConfigService) => ({
        secret: config.get('JWT_SECRET'),
      }),
    }),
  ],
  controllers: [TesoreriaController, TesController],
  providers: [
    TesoreriaService,
    TesCuentasService,
    TesMovimientosService,
    TesCategoriaService,
    TesChequeService,
    TesTransferenciasService,
    TesReportesService,
    TesConciliacionService,
    TesReglasService,
    AiProviderService,
  ],
  exports: [
    TesoreriaService,
    TesCuentasService,
    TesMovimientosService,
    TesCategoriaService,
    TesChequeService,
    TesTransferenciasService,
    TesReportesService,
    TesConciliacionService,
    TesReglasService,
  ],
})
export class TesoreriaModule {}
