/** Enlace de paginación */
export interface ApiLinks {
  first: string | null
  last: string | null
  prev: string | null
  next: string | null
}

/** Meta de paginación */
export interface PaginationMeta {
  current_page: number
  from: number | null
  last_page: number
  per_page: number
  to: number | null
  total: number
}

/** Producto en el listado paginado */
export interface ProductListItem {
  id: number
  slug: string
  name: string
  category: string | null
  expected_unit: string | null
  image_url: string | null
  lowest_price: string | null
  currency: string | null
  lowest_price_store: string | null
  lowest_price_store_slug: string | null
  lowest_price_store_logo_url: string | null
  lowest_price_checked_at: string | null
  is_price_stale: boolean | null
  latest_checked_at: string | null
  available_stores_count: number
}

/** Respuesta paginada del listado */
export interface ProductListResponse {
  data: ProductListItem[]
  links: ApiLinks
  meta: PaginationMeta
}

/** Precio de una tienda en el detalle */
export interface StorePrice {
  store_id: number
  store_slug: string
  store_name: string
  store_logo_url: string | null
  price: string | null
  currency: string | null
  checked_at: string | null
  is_price_stale: boolean | null
  observation_id: number | null
  product_title_detected: string | null
  seller_detected: string | null
  external_url: string | null
  external_url_type: 'store_product' | null
}

/** Detalle de un producto */
export interface ProductDetail {
  id: number
  slug: string
  name: string
  category: string | null
  expected_unit: string | null
  image_url: string | null
  latest_checked_at: string | null
  stores: StorePrice[]
}

/** Respuesta del detalle */
export interface ProductDetailResponse {
  data: ProductDetail
}

/** Opción de producto en el select de filtros */
export interface FilterProduct {
  slug: string
  name: string
}

/** Opción de tienda en el select de filtros */
export interface FilterStore {
  slug: string
  name: string
  logo_url: string | null
}

/** Respuesta del endpoint de filtros */
export interface FiltersResponse {
  data: {
    products: FilterProduct[]
    stores: FilterStore[]
  }
}

/** Parámetros de filtrado del listado */
export interface ProductFilters {
  search: string
  product: string
  store: string
  page: number
}

