export interface GitHubUserResponse { login: string; avatar_url: string; html_url: string; name: string; bio: string; public_repos: number; followers: number; following: number; public_gists: number; created_at: string; updated_at: string; } export interface GitHubRepoInfo { name: string; full_name: string; html_url: string; description: string; stargazers_count: number; forks_count: number; default_branch: string; updated_at: string; language: string; languages_url: string; } export interface GitHubContent { name: string; path: string; sha: string; size: number; url: string; html_url: string; git_url: string; download_url: string; type: string; content: string; encoding: string; } export interface GitHubBranch { name: string; commit: { sha: string; url: string; }; } export interface GitHubBlobResponse { content: string; encoding: string; sha: string; size: number; url: string; } export interface GitHubOrganization { login: string; avatar_url: string; description: string; html_url: string; } export interface GitHubEvent { id: string; type: string; created_at: string; repo: { name: string; url: string; }; payload: { action?: string; ref?: string; ref_type?: string; description?: string; }; } export interface GitHubLanguageStats { [key: string]: number; } export interface GitHubStats { repos: GitHubRepoInfo[]; totalStars: number; totalForks: number; organizations: GitHubOrganization[]; recentActivity: GitHubEvent[]; languages: GitHubLanguageStats; totalGists: number; } export interface GitHubConnection { user: GitHubUserResponse | null; token: string; tokenType: 'classic' | 'fine-grained'; stats?: GitHubStats; } export interface GitHubTokenInfo { token: string; scope: string[]; avatar_url: string; name: string | null; created_at: string; followers: number; } export interface GitHubRateLimits { limit: number; remaining: number; reset: Date; used: number; } export interface GitHubAuthState { username: string; tokenInfo: GitHubTokenInfo | null; isConnected: boolean; isVerifying: boolean; isLoadingRepos: boolean; rateLimits?: GitHubRateLimits; } export interface RepositoryStats { totalFiles: number; totalSize: number; languages: Record; hasPackageJson: boolean; hasDependencies: boolean; }