using RobotNet10.CustomConfiguration.Events;
using RobotNet10.CustomConfiguration.Models;
namespace RobotNet10.CustomConfiguration.Services;
///
/// Service interface cho quản lý configuration files
///
public interface IConfigService
{
// ==========================================
// EVENTS
// ==========================================
///
/// Event được trigger khi có thay đổi trong config (tạo mới, cập nhật, xóa, hoặc thay đổi variables)
///
event EventHandler? ConfigChanged;
// ==========================================
// CONFIG FILE MANAGEMENT
// ==========================================
Task CreateConfigAsync(string configType, List variables, string? description = null);
Task GetConfigByIdAsync(Guid id);
Task GetConfigByTypeAsync(string configType);
Task> GetAllConfigsAsync();
Task> SearchConfigsAsync(string? searchText);
Task UpdateConfigAsync(Guid id, List? variables = null, string? description = null);
Task DeleteConfigAsync(Guid id);
Task ConfigTypeExistsAsync(string configType);
// ==========================================
// IMPORT/EXPORT
// ==========================================
Task ImportConfigFromJsonAsync(Stream jsonStream, string configType);
Task ImportConfigFromJsonAsync(Stream jsonStream, string configType, string? description);
Task ExportConfigToJsonAsync(Guid id);
Task ExportConfigToJsonAsync(ConfigFile config);
// ==========================================
// VARIABLE MANAGEMENT
// ==========================================
Task UpdateVariableAsync(Guid configId, string variableName, object? value);
Task AddVariableAsync(Guid configId, ConfigVariable variable);
Task RemoveVariableAsync(Guid configId, string variableName);
}