package com.imprimelibros.erp.presupuesto; import java.util.Optional; public interface GeoIpService { class GeoData { public final String pais; public final String region; public final String ciudad; public GeoData(String pais, String region, String ciudad) { this.pais = pais; this.region = region; this.ciudad = ciudad; } public String getPais() { return pais; } public String getRegion() { return region; } public String getCiudad() { return ciudad; } } /** * @param ip Ip original (no anonimizada) - la implementación debe manejar IPv4/IPv6. * @return GeoData si se pudo resolver; Optional.empty() en caso de error o IP privada. */ Optional lookup(String ip); }