export type GetTitleAPI = {
  title: string;
  titleColor: string;
};

export type GetNoteAPI = {
  totalCount: number;
  highestCount: number;
  noteCount: number;
  notes: NoteAPINote[];
};

export type NoteAPINote = {
  noteID: string;
  artist: string;
  title: string;
  genre: string;
  levelText: string;
  level: number;
  highestCount?: number;
  totalCount?: number;
  fittedText?: string;
  wantAvatarID?: string;
  wantAvatarName?: string;
};

export type GetCommentAPI = {
  favor: bool | null;
  totalFavor: number;
  comments: CommentAPIComment[];
};

export type CommentAPIComment = {
  date: number;
  avatarID: string;
  avatarName: string;
  stand: number;
  band: number;
  point: number;
  isP: boolean;
  commentary: string;
  isTargetAvatar: boolean;
  judgmentMode: number;
  hitPointsMode: number;
  isPaused: boolean;
};

export type GetSitesAPI = SitesAPISite[];

export type SitesAPISite = {
  siteID: string;
  siteName: string;
  siteConfigure: number;
  hasCipher: boolean;
  avatarCount: number;
};

export type GetAvatarAPI = AvatarAPIWantAvatar[] | AvatarAPIAvatar;

export type AvatarAPIWantAvatar = {
  avatarID: string;
  avatarName: string;
  avatarIntro: string;
};

export type AvatarAPIAvatar = {
  avatarID: string;
  avatarName: string;
  avatarIntro: string;
  totalCount: number;
  totalLength: number;
  highestCount: number;
  date: number;
  avatarLevels: number[];
  avatarAbility5K: number;
  avatarAbility5KClass: number;
  avatarAbility5KPlace: number;
  avatarAbility5KCount: number;
  avatarAbility7K: number;
  avatarAbility7KClass: number;
  avatarAbility7KPlace: number;
  avatarAbility7KCount: number;
  avatarAbility9K: number;
  avatarAbility9KClass: number;
  avatarAbility9KPlace: number;
  avatarAbility9KCount: number;
  dateSet: number[];
  dateValues: number[];
  quitStatusValues: number[];
};

export type GetAvatarFavoritesAPI = AvatarFavoritesAPI[];
export type AvatarFavoritesAPI = {
  noteID: string;
  artist: string;
  title: string;
  genre: string;
  levelText: string;
  level: number;
  totalCount: number;
};

export type GetAvatarWwwLevelsAPI = AvatarWwwLevelsAPI[];
export type AvatarWwwLevelsAPI = {
  levelID: string;
  title: string;
  levelText: string;
  level: string;
  date: number;
};

export type GetAvatarLastsAPI = AvatarAPILastsAPI[];
export type AvatarAPILastsAPI = {
  noteID: string;
  artist: string;
  title: string;
  genre: string;
  levelText: string;
  level: number;
  date: number;
};

export type GetAvatarAbilitiesAPI = AvatarAPIAbilitiesAPI[];
export type AvatarAPIAbilitiesAPI = {
  noteID: string;
  artist: string;
  title: string;
  genre: string;
  levelText: string;
  level: number;
  date: number;
};

export type GetEtcAPI = {
  totalDateSet: string[];
  totalDateValues: number[];
  signUpDateSet: string[];
  signUpDateValues: number[];
  avatarDateSet: string[];
  avatarDateValues: number[];
  totalNoteFiles: EtcAPINote[];
  totalTitles: EtcAPITitle[];
  totalEdges: EtcAPIEdge[];
  favorites: EtcAPINote[];
  favoritesAt: EtcAPINote[];
  inputModes: EtcAPIMode[];
  autoModes: EtcAPIMode[];
  noteSaltModes: EtcAPIMode[];
  faintNoteModes: EtcAPIMode[];
  judgmentModes: EtcAPIMode[];
  hitPointsModes: EtcAPIMode[];
  noteMobilityModes: EtcAPIMode[];
  longNoteModes: EtcAPIMode[];
  inputFavorModes: EtcAPIMode[];
  noteModifyModes: EtcAPIMode[];
  lowestJudgmentConditionModes: EtcAPIMode[];
};

export type EtcAPINote = {
  noteID: string;
  title: string;
  artist: string;
  genre: string;
  level: number;
  levelText: string;
  value: number;
};

export type EtcAPITitle = {
  title: string;
  titleColor: string;
  value: number;
};

export type EtcAPIEdge = {
  edge: string;
  value: number;
};

export type EtcAPIMode = {
    mode: number;
    value: number;
};

export type GetHOFAPI = {
    avatarID: string;
    avatarName: string;
    value: number;
};
