using System.Net;

namespace SharpChat.Bans {
    public interface BansClient {
        Task BanCreateAsync(
            BanKind kind,
            TimeSpan duration,
            IPAddress remoteAddr,
            string? userId = null,
            string? reason = null,
            IPAddress? issuerRemoteAddr = null,
            string? issuerUserId = null
        );
        Task<bool> BanRevokeAsync(BanInfo info);
        Task<BanInfo?> BanGetAsync(string? userIdOrName = null, IPAddress? remoteAddr = null);
        Task<BanInfo[]> BanGetListAsync();
    }
}