export interface GitHubUser {
  login: string;
  id: number;
  node_id: string;
  avatar_url: string;
  gravatar_id: string;
  url: string;
  html_url: string;
  followers_url: string;
  following_url: string;
  gists_url: string;
  starred_url: string;
  subscriptions_url: string;
  organizations_url: string;
  repos_url: string;
  events_url: string;
  received_events_url: string;
  type: string;
  user_view_type: string;
  site_admin: boolean;
  name: string;
  company: string | null;
  blog: string;
  location: string;
  email: string | null;
  hireable: boolean | null;
  bio: string | null;
  twitter_username: string | null;
  public_repos: number;
  public_gists: number;
  followers: number;
  following: number;
  created_at: string;
  updated_at: string;
}

/* Public Component Type*/
export type LocationType = "top-right" | "top-left" | "bottom-right" | "bottom-left";

export interface MainOption {
  userName: string;
  pinnedRepoArr: [] | [string] | [string, string] | [string, string, string] | [string, string, string, string];
  location?: LocationType;
  accessToken?: string;
}

export interface ModalOption {
  userObj: GitHubUser;
  pinnedRepoArr?: RepoItemType[];
}
export interface PinnedRepoItemPropTypes {
  pinnedRepoItem: RepoItemType;
}

export interface RepoItemType {
  id: number;
  name: string;
  description: string;
  language: string;
  html_url: string;
  stargazers_count: number;
  forks_count: number;
}

export interface OrgItem {
  login: string;
  id: number;
  node_id: string;
  url: string;
  repos_url: string;
  events_url: string;
  hooks_url: string;
  issues_url: string;
  members_url: string;
  public_members_url: string;
  avatar_url: string;
  description: string;
}
