// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.maps.weather.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.OffsetDateTime;

/** The DailyHistoricalActuals model. */
@Fluent
public final class DailyHistoricalActuals {
    /*
     * Date and time of the current observation displayed in ISO 8601 format, for example, 2019-10-27T19:39:57-08:00.
     */
    @JsonProperty(value = "date")
    private OffsetDateTime timestamp;

    /*
     * Temperature values.
     */
    @JsonProperty(value = "temperature")
    private WeatherValueMaxMinAvg temperature;

    /*
     * Summary of heating or cooling degree day information. Degree days are measures of how cold or warm a location
     * is. A degree day compares the mean (the average of the high and low) outdoor temperatures recorded for a
     * location to a standard temperature of 65 degrees F/ 18 degree C.
     */
    @JsonProperty(value = "degreeDaySummary")
    private DegreeDaySummary degreeDaySummary;

    /*
     * The amount of precipitation (liquid equivalent) that has fallen.
     */
    @JsonProperty(value = "precipitation")
    private WeatherUnitDetails precipitation;

    /*
     * The amount of snow that has fallen.
     */
    @JsonProperty(value = "snowfall")
    private WeatherUnitDetails snowfall;

    /*
     * Snow depth.
     */
    @JsonProperty(value = "snowDepth")
    private WeatherUnitDetails snowDepth;

    /** Set default DailyHistoricalActuals constructor to private */
    private DailyHistoricalActuals() {}

    /**
     * Get the timestamp property: Date and time of the current observation displayed in ISO 8601 format, for example,
     * 2019-10-27T19:39:57-08:00.
     *
     * @return the timestamp value.
     */
    public OffsetDateTime getTimestamp() {
        return this.timestamp;
    }

    /**
     * Get the temperature property: Temperature values.
     *
     * @return the temperature value.
     */
    public WeatherValueMaxMinAvg getTemperature() {
        return this.temperature;
    }

    /**
     * Get the degreeDaySummary property: Summary of heating or cooling degree day information. Degree days are measures
     * of how cold or warm a location is. A degree day compares the mean (the average of the high and low) outdoor
     * temperatures recorded for a location to a standard temperature of 65 degrees F/ 18 degree C.
     *
     * @return the degreeDaySummary value.
     */
    public DegreeDaySummary getDegreeDaySummary() {
        return this.degreeDaySummary;
    }

    /**
     * Get the precipitation property: The amount of precipitation (liquid equivalent) that has fallen.
     *
     * @return the precipitation value.
     */
    public WeatherUnitDetails getPrecipitation() {
        return this.precipitation;
    }

    /**
     * Get the snowfall property: The amount of snow that has fallen.
     *
     * @return the snowfall value.
     */
    public WeatherUnitDetails getSnowfall() {
        return this.snowfall;
    }

    /**
     * Get the snowDepth property: Snow depth.
     *
     * @return the snowDepth value.
     */
    public WeatherUnitDetails getSnowDepth() {
        return this.snowDepth;
    }
}
