/**
 * 表单管理模块
 * 
 * 聚合层模块，协调表单引擎和审批引擎
 * 提供表单定义管理、设计器、版本审核发布、实例管理等功能
 */

import { Module, forwardRef } from '@nestjs/common';
import { PrismaModule } from '@core/database/prisma/prisma.module';
import { FormEngineModule } from '../form-engine/form-engine.module';
import { ApprovalModule } from '@engines/approval/approval.module';

// Controllers
import {
  FormManagementController,
  SnapshotController,
  InstanceController,
  WebhookController,
} from './controllers';

// Services
import {
  FormManagementService,
  SnapshotService,
  InstanceService,
  VersionDiffService,
  WebhookService,
  StatisticsService,
} from './services';

// Providers
import { FormBusinessTypeProvider } from './form-business-type.provider';

// Guards
import { RegionGuard } from './guards/region.guard';

@Module({
  imports: [
    PrismaModule,
    forwardRef(() => FormEngineModule),
    forwardRef(() => ApprovalModule),
  ],
  controllers: [
    FormManagementController,
    SnapshotController,
    InstanceController,
    WebhookController,
  ],
  providers: [
    FormManagementService,
    SnapshotService,
    InstanceService,
    VersionDiffService,
    WebhookService,
    StatisticsService,
    RegionGuard,
    FormBusinessTypeProvider,
  ],
  exports: [
    FormManagementService,
    SnapshotService,
    InstanceService,
    VersionDiffService,
    WebhookService,
    StatisticsService,
  ],
})
export class FormManagementModule {}
