/**
 * Public types for the repo-stats library.
 */

export interface ParsedRepo {
  owner: string;
  name: string;
}

export interface RepoStats {
  repo: ParsedRepo;
  description: string | null;
  primaryLanguage: string | null;
  license: string | null;
  stars: number;
  forks: number;
  watchers: number;
  openIssues: number;
  defaultBranch: string;
  topics: string[];
  createdAt: string;
  updatedAt: string;
  pushedAt: string;
  sizeKb: number;
  hasWiki: boolean;
  hasPages: boolean;
  archived: boolean;
  homepage: string | null;
}

export interface IssueSummary {
  number: number;
  title: string;
  state: 'open' | 'closed';
  user: string;
  createdAt: string;
  updatedAt: string;
  comments: number;
  labels: string[];
  pullRequest: boolean;
}

export interface PullSummary {
  number: number;
  title: string;
  state: 'open' | 'closed' | 'merged';
  user: string;
  createdAt: string;
  updatedAt: string;
  mergedAt: string | null;
  draft: boolean;
  reviewComments: number;
  additions: number;
  deletions: number;
  changedFiles: number;
}

export interface ReleaseSummary {
  tagName: string;
  name: string | null;
  publishedAt: string | null;
  draft: boolean;
  prerelease: boolean;
  author: string;
}

export interface ContributorSummary {
  login: string;
  contributions: number;
}
