defmodule Kagi.MapsResult do
@moduledoc """
A single Kagi Maps point-of-interest result.
Returned in `Kagi.Maps.results`. Most fields are optional because Kagi Maps
providers return different metadata.
## Fields
* `:name` - place name.
* `:address` - street address.
* `:coordinates` - `Kagi.MapsResult.Coordinates` with latitude/longitude.
* `:phone` - phone number in international format.
* `:url` - website URL.
* `:source` - upstream provider name.
* `:id` - Kagi or upstream provider identifier.
* `:rating` - average rating.
* `:review_count` - number of reviews backing `:rating`.
* `:price` - price tier string such as `"$"` or `"$$"`.
* `:distance` - distance from `:ll`, when supplied.
* `:hours_now` - open/closed indicator string.
* `:types` - category tags.
* `:links` - provider-specific links payload.
* `:images` - image references payload.
"""
alias Kagi.MapsResult.Coordinates
@typedoc "A single Maps point of interest."
@type t :: %__MODULE__{
name: String.t(),
address: String.t() | nil,
coordinates: Coordinates.t(),
phone: String.t() | nil,
url: String.t() | nil,
source: String.t() | nil,
id: String.t() | nil,
rating: float() | nil,
review_count: non_neg_integer() | nil,
price: String.t() | nil,
distance: float() | nil,
hours_now: String.t() | nil,
types: [String.t()] | nil,
links: term() | nil,
images: term() | nil
}
defstruct [
:name,
:address,
:coordinates,
:phone,
:url,
:source,
:id,
:rating,
:review_count,
:price,
:distance,
:hours_now,
:types,
:links,
:images
]
end