| 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<string, number>; | |
| hasPackageJson: boolean; | |
| hasDependencies: boolean; | |
| } | |