import { u as useRuntimeConfig } from '../nitro/nitro.mjs';

const FALLBACK_RATES = [
  { country: "Austria", country_code: "AT", standard_rate: 20, reduced_rates: [10, 13], currency: "EUR" },
  { country: "Belgium", country_code: "BE", standard_rate: 21, reduced_rates: [6, 12], currency: "EUR" },
  { country: "Bulgaria", country_code: "BG", standard_rate: 20, reduced_rates: [9], currency: "EUR" },
  { country: "Croatia", country_code: "HR", standard_rate: 25, reduced_rates: [5, 13], currency: "EUR" },
  { country: "Cyprus", country_code: "CY", standard_rate: 19, reduced_rates: [5, 9], currency: "EUR" },
  { country: "Czech Republic", country_code: "CZ", standard_rate: 21, reduced_rates: [12, 15], currency: "EUR" },
  { country: "Denmark", country_code: "DK", standard_rate: 25, reduced_rates: [], currency: "EUR" },
  { country: "Estonia", country_code: "EE", standard_rate: 22, reduced_rates: [9], currency: "EUR" },
  { country: "Finland", country_code: "FI", standard_rate: 25.5, reduced_rates: [10, 14], currency: "EUR" },
  { country: "France", country_code: "FR", standard_rate: 20, reduced_rates: [5.5, 10], currency: "EUR" },
  { country: "Germany", country_code: "DE", standard_rate: 19, reduced_rates: [7], currency: "EUR" },
  { country: "Greece", country_code: "GR", standard_rate: 24, reduced_rates: [6, 13], currency: "EUR" },
  { country: "Hungary", country_code: "HU", standard_rate: 27, reduced_rates: [5, 18], currency: "EUR" },
  { country: "Ireland", country_code: "IE", standard_rate: 23, reduced_rates: [9, 13.5], currency: "EUR" },
  { country: "Italy", country_code: "IT", standard_rate: 22, reduced_rates: [5, 10], currency: "EUR" },
  { country: "Latvia", country_code: "LV", standard_rate: 21, reduced_rates: [5, 12], currency: "EUR" },
  { country: "Lithuania", country_code: "LT", standard_rate: 21, reduced_rates: [5, 9], currency: "EUR" },
  { country: "Luxembourg", country_code: "LU", standard_rate: 17, reduced_rates: [8], currency: "EUR" },
  { country: "Malta", country_code: "MT", standard_rate: 18, reduced_rates: [5, 7], currency: "EUR" },
  { country: "Netherlands", country_code: "NL", standard_rate: 21, reduced_rates: [9], currency: "EUR" },
  { country: "Poland", country_code: "PL", standard_rate: 23, reduced_rates: [5, 8], currency: "EUR" },
  { country: "Portugal", country_code: "PT", standard_rate: 23, reduced_rates: [6, 13], currency: "EUR" },
  { country: "Romania", country_code: "RO", standard_rate: 19, reduced_rates: [5, 9], currency: "EUR" },
  { country: "Slovakia", country_code: "SK", standard_rate: 23, reduced_rates: [5, 10], currency: "EUR" },
  { country: "Slovenia", country_code: "SI", standard_rate: 22, reduced_rates: [5, 9.5], currency: "EUR" },
  { country: "Spain", country_code: "ES", standard_rate: 21, reduced_rates: [4, 10], currency: "EUR" },
  { country: "Sweden", country_code: "SE", standard_rate: 25, reduced_rates: [6, 12], currency: "EUR" }
];
const TWENTY_FOUR_HOURS = 24 * 60 * 60 * 1e3;
let cache = null;
function todayDateString() {
  return (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
}
function isCacheValid() {
  if (!cache) return false;
  const age = Date.now() - cache.fetchedAt;
  return age < TWENTY_FOUR_HOURS && cache.date === todayDateString();
}
function transformVatstackResponse(vatstackRates) {
  return vatstackRates.map((r) => {
    var _a, _b, _c, _d;
    return {
      country: (_a = r.country_name) != null ? _a : "",
      country_code: (_b = r.country_code) != null ? _b : "",
      standard_rate: (_c = r.standard_rate) != null ? _c : 0,
      reduced_rates: (_d = r.reduced_rates) != null ? _d : [],
      currency: "EUR"
    };
  });
}
async function getAllRates() {
  var _a;
  if (isCacheValid()) return cache.data;
  const config = useRuntimeConfig();
  const apiKey = config.vatstackApiKey;
  if (!apiKey) {
    cache = { data: FALLBACK_RATES, date: todayDateString(), fetchedAt: Date.now() };
    return FALLBACK_RATES;
  }
  try {
    const response = await $fetch("https://api.vatstack.com/v1/rates", {
      headers: { "X-API-Key": apiKey },
      query: { member_state: true, limit: 100 }
    });
    const items = (_a = response.rates) != null ? _a : response;
    const euOnly = items.filter((r) => r.member_state === true);
    const rates = transformVatstackResponse(euOnly);
    cache = { data: rates, date: todayDateString(), fetchedAt: Date.now() };
    return rates;
  } catch {
    cache = { data: FALLBACK_RATES, date: todayDateString(), fetchedAt: Date.now() };
    return FALLBACK_RATES;
  }
}
async function getRateByCode(code) {
  const rates = await getAllRates();
  return rates.find((r) => r.country_code === code.toUpperCase());
}

export { getAllRates as a, getRateByCode as g };
//# sourceMappingURL=vatRates.mjs.map
