using RealCV.Application.Models;

namespace RealCV.Application.Interfaces;

/// <summary>
/// Service for verifying developer profiles and skills via GitHub
/// </summary>
public interface IGitHubVerifierService
{
    /// <summary>
    /// Verify a GitHub profile and analyze activity
    /// </summary>
    Task<GitHubVerificationResult> VerifyProfileAsync(string username);

    /// <summary>
    /// Verify claimed programming skills against GitHub activity
    /// </summary>
    Task<GitHubVerificationResult> VerifySkillsAsync(
        string username,
        List<string> claimedSkills);

    /// <summary>
    /// Search for GitHub profiles matching a name
    /// </summary>
    Task<List<GitHubProfileSearchResult>> SearchProfilesAsync(string name);
}

public sealed record GitHubProfileSearchResult
{
    public required string Username { get; init; }
    public string? Name { get; init; }
    public string? AvatarUrl { get; init; }
    public string? Bio { get; init; }
    public int PublicRepos { get; init; }
    public int Followers { get; init; }
}
