using Application.DTOs.AdminDTOs;
namespace Application.Abstractions.Interfaces
{
public interface IAdminService
{
///
/// Get system statistics for admin dashboard
///
Task GetSystemStatsAsync();
///
/// Export all delivery history to JSON format
///
Task ExportDeliveryHistoryAsync();
///
/// Create database backup
///
Task CreateDatabaseBackupAsync(string backupPath);
///
/// Get robot efficiency analytics
///
Task> GetRobotEfficiencyAsync();
///
/// Generate a new admin registration key
///
Task GenerateAdminKeyAsync(int createdByAdminId, DateTime? expiresAt = null, string? description = null);
///
/// Get all admin keys
///
Task> GetAllAdminKeysAsync();
///
/// Get unused admin keys
///
Task> GetUnusedAdminKeysAsync();
///
/// Revoke an admin key (mark as used)
///
Task RevokeAdminKeyAsync(int keyId);
///
/// Get the database file for download
///
Task<(byte[] content, string contentType, string fileName)> DownloadDatabaseAsync();
///
/// Restore the database from a file
///
Task RestoreDatabaseAsync(Stream dbStream);
///
/// Delete an admin key physically
///
Task DeleteAdminKeyAsync(int keyId);
///
/// Update an admin key's details
///
Task UpdateAdminKeyAsync(AdminUpdateKeyDTO updateDto);
}
}