package bootstrap

import (
	systemConfigApp "github.com/break/junhong_cmp_fiber/internal/application/systemconfig"
	"github.com/break/junhong_cmp_fiber/internal/gateway"
	systemConfigInfra "github.com/break/junhong_cmp_fiber/internal/infrastructure/systemconfig"
	"github.com/break/junhong_cmp_fiber/internal/service/verification"
	"github.com/break/junhong_cmp_fiber/pkg/auth"
	"github.com/break/junhong_cmp_fiber/pkg/queue"
	"github.com/break/junhong_cmp_fiber/pkg/storage"
	"github.com/break/junhong_cmp_fiber/pkg/wechat"
	"github.com/redis/go-redis/v9"
	"go.uber.org/zap"
	"gorm.io/gorm"
)

// Dependencies 封装所有基础依赖
// 这些是应用启动时初始化的核心组件
type Dependencies struct {
	DB                   *gorm.DB                       // PostgreSQL 数据库连接
	Redis                *redis.Client                  // Redis 客户端
	Logger               *zap.Logger                    // 应用日志器
	JWTManager           *auth.JWTManager               // JWT 管理器（个人客户认证）
	TokenManager         *auth.TokenManager             // Token 管理器（后台和H5认证）
	VerificationService  *verification.Service          // 验证码服务
	QueueClient          *queue.Client                  // Asynq 任务队列客户端
	StorageService       *storage.Service               // 对象存储服务（可选，配置缺失时为 nil）
	GatewayClient        *gateway.Client                // Gateway API 客户端（可选，配置缺失时为 nil）
	WechatPayment        wechat.PaymentServiceInterface // 微信支付服务（可选）
	SystemConfigRegistry *systemConfigInfra.Registry    // 业务模块共享的受控配置注册表（可选）
	SystemConfigAudit    systemConfigApp.AuditWriter    // 配置变更审计 Port（可选，装配后与配置同事务写入）
}
