using RealCV.Application.Models;
namespace RealCV.Application.Interfaces;
///
/// Service for verifying international companies via OpenCorporates
///
public interface IInternationalCompanyVerifierService
{
///
/// Verify an international company
///
Task VerifyCompanyAsync(
string companyName,
string? jurisdiction = null,
DateOnly? claimedStartDate = null,
DateOnly? claimedEndDate = null);
///
/// Search for companies across all jurisdictions
///
Task> SearchCompaniesAsync(
string query,
string? jurisdiction = null);
///
/// Get list of supported jurisdictions
///
Task> GetJurisdictionsAsync();
}
public sealed record OpenCorporatesSearchResult
{
public required string CompanyName { get; init; }
public required string CompanyNumber { get; init; }
public required string Jurisdiction { get; init; }
public string? JurisdictionCode { get; init; }
public string? Status { get; init; }
public DateOnly? IncorporationDate { get; init; }
public string? OpenCorporatesUrl { get; init; }
public double? MatchScore { get; init; }
}
public sealed record JurisdictionInfo
{
public required string Code { get; init; }
public required string Name { get; init; }
public string? Country { get; init; }
}