//go:build wireinject
// +build wireinject

package main

import (
	"ai_scheduler/internal/biz"
	"ai_scheduler/internal/biz/handle/dingtalk"
	"ai_scheduler/internal/biz/handle/qywx"
	"ai_scheduler/internal/biz/tools_regis"
	"ai_scheduler/internal/config"
	"ai_scheduler/internal/data/impl"
	"ai_scheduler/internal/data/mongo_model"
	"ai_scheduler/internal/domain/component"
	"ai_scheduler/internal/domain/repo"
	"ai_scheduler/internal/domain/workflow"
	"ai_scheduler/internal/pkg"
	"ai_scheduler/internal/server"
	"ai_scheduler/internal/services"
	"context"

	// "ai_scheduler/internal/tool_callback"
	"ai_scheduler/internal/tools"
	"ai_scheduler/utils"

	"github.com/gofiber/fiber/v2/log"
	"github.com/google/wire"
)

// InitializeApp 初始化应用程序
func InitializeApp(context.Context, *config.Config, log.AllLogger) (*server.Servers, func(), error) {
	panic(wire.Build(
		server.ProviderSetServer,
		workflow.ProviderSetWorkflow,
		tools.ProviderSetTools,
		pkg.ProviderSetClient,
		services.ProviderSetServices,
		biz.ProviderSetBiz,
		impl.ProviderImpl,
		utils.ProviderUtils,
		dingtalk.ProviderSetDingTalk,
		qywx.ProviderSetQywx,
		tools_regis.ProviderToolsRegis,
		// tool_callback.ProviderSetCallBackTools,
		component.ProviderSet,
		repo.ProviderSet,
		mongo_model.ProviderSetMongo,
	))

}
