// Path: src/main/java/com/mcbans/client/response/BanResponse.java
// public class BanResponse {
//   private String uuid = "";
//   private String name = "";
//   private List<Ban> bans;
//   private double reputation;
//   private Ban ban;
//   private boolean mcbansStaff;
// 
//   public BanResponse(String uuid, String name, List<Ban> bans, double reputation, Ban ban, boolean mcbansStaff) {
//     this.uuid = uuid;
//     this.name = name;
//     this.bans = bans;
//     this.reputation = reputation;
//     this.ban = ban;
//     this.mcbansStaff = mcbansStaff;
//   }
// 
//   public String getUuid() {
//     return uuid;
//   }
// 
//   public void setUuid(String uuid) {
//     this.uuid = uuid;
//   }
// 
//   public List<Ban> getBans() {
//     return bans;
//   }
// 
//   public void setBans(List<Ban> bans) {
//     this.bans = bans;
//   }
// 
//   public double getReputation() {
//     return reputation;
//   }
// 
//   public void setReputation(double reputation) {
//     this.reputation = reputation;
//   }
// 
//   public Ban getBan() {
//     return ban;
//   }
// 
//   public void setBan(Ban ban) {
//     this.ban = ban;
//   }
// 
//   public boolean isMCBansStaff() {
//     return mcbansStaff;
//   }
// 
//   public void setMCBansStaff(boolean mcbansStaff) {
//     this.mcbansStaff = mcbansStaff;
//   }
// 
//   @Override
//   public String toString() {
//     String banList = "";
//     if (bans.size() > 0) {
//       banList = bans.stream().map(ban ->
//         "\n    " + ban.getReason() +
//           "\n      id: " + ban.getId() +
//           ((ban.getServer()!=null)?"\n      server: " + ban.getServer().getAddress():"") +
//           ((ban.getAdmin()!=null)?"\n      admin: " + ban.getAdmin().getName() +" ( "+ban.getAdmin().getUuid()+" )":"") +
//           "\n      repLoss: " + ban.getReputation()
//       ).collect(Collectors.joining());
//     }
//     return "\n  Name: " + name + "\n  UUID: " + uuid + (isMCBansStaff() ? "\n  This is a MCBans Staff" : "") + "\n  Reputation: " + this.getReputation() + "\n  Bans:" + banList + ((ban != null) ? "\n  Ban Status:\n    Type: " + ban.getType() + "\n    Reason: " + ban.getReason() : "");
//   }
// }
// 
// Path: src/main/java/com/mcbans/domain/models/client/Ban.java
// public class Ban implements Serializable {
//     private long id;
//     private String reason;
//     private Player admin;
//     private Player player;
//     private double reputation;
//     private String type;
//     private Long duration;
//     private Server server;
//     private Date date;
// 
//     public Ban() {
//     }
// 
//     public Ban(String type, String reason, double reputation, Player admin) {
//         this.reason = reason;
//         this.reputation = reputation;
//         this.type = type;
//         this.admin = admin;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public String getReason() {
//         return reason;
//     }
// 
//     public void setReason(String reason) {
//         this.reason = reason;
//     }
// 
//     public double getReputation() {
//         return reputation;
//     }
// 
//     public void setReputation(double reputation) {
//         this.reputation = reputation;
//     }
// 
//     public String getType() {
//         return type;
//     }
// 
//     public void setType(String type) {
//         this.type = type;
//     }
// 
//     public Long getDuration() {
//         return duration;
//     }
// 
//     public void setDuration(Long duration) {
//         this.duration = duration;
//     }
// 
//     public Server getServer() {
//         return server;
//     }
// 
//     public void setServer(Server server) {
//         this.server = server;
//     }
// 
//     public Date getDate() {
//         return date;
//     }
// 
//     public void setDate(Date date) {
//         this.date = date;
//     }
// 
//     public Player getAdmin() {
//         return admin;
//     }
// 
//     public void setAdmin(Player admin) {
//         this.admin = admin;
//     }
// 
//     public Player getPlayer() {
//         return player;
//     }
// 
//     public void setPlayer(Player player) {
//         this.player = player;
//     }
// }


import com.mcbans.client.response.BanResponse;
import com.mcbans.domain.models.client.Ban;
import com.mcbans.utils.*;
import java.io.IOException;
import java.util.List;
package com.mcbans.client;



public class BanStatusClient extends Client{
  public BanStatusClient(Client c) {
    super(c);
  }

  public BanStatusClient(String apiKey) throws IOException, BadApiKeyException, TooLargeException {
    super(apiKey);
  }
  public static BanStatusClient cast(Client client) {
    return new BanStatusClient(client);
  }


// Path: src/main/java/com/mcbans/client/response/BanResponse.java
// public class BanResponse {
//   private String uuid = "";
//   private String name = "";
//   private List<Ban> bans;
//   private double reputation;
//   private Ban ban;
//   private boolean mcbansStaff;
// 
//   public BanResponse(String uuid, String name, List<Ban> bans, double reputation, Ban ban, boolean mcbansStaff) {
//     this.uuid = uuid;
//     this.name = name;
//     this.bans = bans;
//     this.reputation = reputation;
//     this.ban = ban;
//     this.mcbansStaff = mcbansStaff;
//   }
// 
//   public String getUuid() {
//     return uuid;
//   }
// 
//   public void setUuid(String uuid) {
//     this.uuid = uuid;
//   }
// 
//   public List<Ban> getBans() {
//     return bans;
//   }
// 
//   public void setBans(List<Ban> bans) {
//     this.bans = bans;
//   }
// 
//   public double getReputation() {
//     return reputation;
//   }
// 
//   public void setReputation(double reputation) {
//     this.reputation = reputation;
//   }
// 
//   public Ban getBan() {
//     return ban;
//   }
// 
//   public void setBan(Ban ban) {
//     this.ban = ban;
//   }
// 
//   public boolean isMCBansStaff() {
//     return mcbansStaff;
//   }
// 
//   public void setMCBansStaff(boolean mcbansStaff) {
//     this.mcbansStaff = mcbansStaff;
//   }
// 
//   @Override
//   public String toString() {
//     String banList = "";
//     if (bans.size() > 0) {
//       banList = bans.stream().map(ban ->
//         "\n    " + ban.getReason() +
//           "\n      id: " + ban.getId() +
//           ((ban.getServer()!=null)?"\n      server: " + ban.getServer().getAddress():"") +
//           ((ban.getAdmin()!=null)?"\n      admin: " + ban.getAdmin().getName() +" ( "+ban.getAdmin().getUuid()+" )":"") +
//           "\n      repLoss: " + ban.getReputation()
//       ).collect(Collectors.joining());
//     }
//     return "\n  Name: " + name + "\n  UUID: " + uuid + (isMCBansStaff() ? "\n  This is a MCBans Staff" : "") + "\n  Reputation: " + this.getReputation() + "\n  Bans:" + banList + ((ban != null) ? "\n  Ban Status:\n    Type: " + ban.getType() + "\n    Reason: " + ban.getReason() : "");
//   }
// }
// 
// Path: src/main/java/com/mcbans/domain/models/client/Ban.java
// public class Ban implements Serializable {
//     private long id;
//     private String reason;
//     private Player admin;
//     private Player player;
//     private double reputation;
//     private String type;
//     private Long duration;
//     private Server server;
//     private Date date;
// 
//     public Ban() {
//     }
// 
//     public Ban(String type, String reason, double reputation, Player admin) {
//         this.reason = reason;
//         this.reputation = reputation;
//         this.type = type;
//         this.admin = admin;
//     }
// 
//     public long getId() {
//         return id;
//     }
// 
//     public void setId(long id) {
//         this.id = id;
//     }
// 
//     public String getReason() {
//         return reason;
//     }
// 
//     public void setReason(String reason) {
//         this.reason = reason;
//     }
// 
//     public double getReputation() {
//         return reputation;
//     }
// 
//     public void setReputation(double reputation) {
//         this.reputation = reputation;
//     }
// 
//     public String getType() {
//         return type;
//     }
// 
//     public void setType(String type) {
//         this.type = type;
//     }
// 
//     public Long getDuration() {
//         return duration;
//     }
// 
//     public void setDuration(Long duration) {
//         this.duration = duration;
//     }
// 
//     public Server getServer() {
//         return server;
//     }
// 
//     public void setServer(Server server) {
//         this.server = server;
//     }
// 
//     public Date getDate() {
//         return date;
//     }
// 
//     public void setDate(Date date) {
//         this.date = date;
//     }
// 
//     public Player getAdmin() {
//         return admin;
//     }
// 
//     public void setAdmin(Player admin) {
//         this.admin = admin;
//     }
// 
//     public Player getPlayer() {
//         return player;
//     }
// 
//     public void setPlayer(Player player) {
//         this.player = player;
//     }
// }


// Path: src/main/java/com/mcbans/client/BanStatusClient.java
import com.mcbans.client.response.BanResponse;
import com.mcbans.domain.models.client.Ban;
import com.mcbans.utils.*;
import java.io.IOException;
import java.util.List;

package com.mcbans.client;



public class BanStatusClient extends Client{
  public BanStatusClient(Client c) {
    super(c);
  }

  public BanStatusClient(String apiKey) throws IOException, BadApiKeyException, TooLargeException {
    super(apiKey);
  }
  public static BanStatusClient cast(Client client) {
    return new BanStatusClient(client);
  }


  public BanResponse banStatusByPlayerName(String playerName, String ipAddress, boolean loginRequest) throws IOException, ClassNotFoundException, TooLargeException {