using System.Collections.Generic;
using System.Threading.Tasks;
using Sozsoft.Mcp.Dtos;
using Sozsoft.Platform.DeveloperKit;
using Sozsoft.Platform.ListForms;
using Volo.Abp.Application.Services;
namespace Sozsoft.Mcp;
///
/// MCP gelistirme yuzeyi: tablo, ekran (wizard) ve custom component uretimi. Her islem uygulamadaki
/// Wizard ve Custom Components servislerinden gecer; MCP yalnizca kapidir, ekranin
/// kendi yetkilerini, seed dosyasi yazimini ve bagimlilik kurallarini atlamaz.
///
public interface IMcpDevelopAppService : IApplicationService
{
Task GetDevGuideAsync(string? document, string? section);
Task CreateTableAsync(McpCreateTableRequestDto input);
Task> GetWizardsAsync(string? search);
Task GetWizardAsync(string fileName);
/// Deploy edilen wizard'in ozeti.
Task DeployWizardAsync(McpWizardDeployRequestDto input);
/// Wizard'i siler; acikken ekranin secilebilir tablosunu da dusurur.
Task DeleteWizardAsync(string fileName, bool dropTables);
/// Deploy edilmis ekrani veri yazmadan dogrular.
Task VerifyWizardAsync(string fileName);
/// Id ya da basliga gore bulunan talebi, yalnizca Ready to Start durumundaysa In Progress'e alir.
Task StartDevRequestAsync(string request);
/// Talebi durumuna dokunmadan okur; yarim kalan bir talebe donmek icindir.
Task GetDevRequestAsync(string request);
///
/// Talebin analizini yazar (var olani degistirir) ve talebi Analysis durumuna alir; yalnizca
/// Backlog ya da Analysis durumundaki talep analiz edilir.
///
Task SaveDevRequestAnalysisAsync(string request, string html);
///
/// Analizin sonuna HTML ekler. Aciklama talebin yazildigi haliyle kalir; uretim notlari
/// analize yazilir.
///
Task AppendDevRequestNoteAsync(string request, string html);
///
/// Talebin SubTasks listesine tamamlanmis satirlar ekler; atanan kisi cagiran kullanici,
/// bitis tarihi bugundur.
///
Task AddDevRequestSubTasksAsync(string request, List titles);
/// Modul dokumanini adiyla ya da ait oldugu ekranin kodu/wizard dosyasiyla okur.
Task GetModuleDocAsync(string name);
///
/// Modul dokumaninin elle yazilan bolumlerini kaydeder; otomatik envanter sunucuda yeniden
/// uretilir.
///
Task SaveModuleDocAsync(string name, string content);
Task> GetComponentsAsync(string? search);
Task GetComponentAsync(string name);
Task SaveComponentAsync(McpComponentSaveRequestDto input);
Task DeleteComponentAsync(string name);
}