namespace ShippingCosts.Contracts;
///
/// Allows to get information about the distance between the implicit starting country a given country.
/// Not all countries are available, so should be used to check.
///
public interface ICountryDistanceProvider
{
///
/// Returns the distance to the given country, if it is possible to ship to it
///
/// Name of the potential target country
/// Distance and additional information about the target country
CountryDistanceInformation? GetDistanceTo(string countryName);
///
/// Checks whether it is possible to ship to the given country
///
/// Name of the potential target country
/// True if shipping is possible; false otherwise
bool IsPossibleCountry(string countryName);
}
///
/// Represents the distance to and additional regional information about a country
///
/// Approximate distance to the target country
/// True if the target country shares a border with the source country; false otherwise
/// True if the target country is a member of the EU; false otherwise
public readonly record struct CountryDistanceInformation(int ApproxDistance, bool IsDirectNeighbor, bool IsEuMember);