using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using LittleShop.DTOs;
using LittleShop.Enums;

namespace LittleShop.Services;

public interface IBotService
{
    Task<BotRegistrationResponseDto> RegisterBotAsync(BotRegistrationDto dto);
    Task<BotDto?> AuthenticateBotAsync(string botKey);
    Task<BotDto?> GetBotByIdAsync(Guid id);
    Task<BotDto?> GetBotByKeyAsync(string botKey);
    Task<IEnumerable<BotDto>> GetAllBotsAsync();
    Task<IEnumerable<BotDto>> GetActiveBots();
    Task<bool> UpdateBotSettingsAsync(Guid botId, UpdateBotSettingsDto dto);
    Task<bool> UpdateBotStatusAsync(Guid botId, BotStatus status);
    Task<bool> RecordHeartbeatAsync(Guid botId, BotHeartbeatDto dto);
    Task<bool> DeleteBotAsync(Guid botId);
    Task<Dictionary<string, object>> GetBotSettingsAsync(Guid botId);
    Task<bool> ValidateBotKeyAsync(string botKey);
    Task<string> GenerateBotKeyAsync();
    Task<bool> UpdatePlatformInfoAsync(Guid botId, UpdatePlatformInfoDto dto);
}