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

package com.azure.resourcemanager.commerce.models;

import com.azure.resourcemanager.commerce.fluent.models.UsageAggregationInner;
import java.time.OffsetDateTime;
import java.util.UUID;

/** An immutable client-side representation of UsageAggregation. */
public interface UsageAggregation {
    /**
     * Gets the id property: Unique Id for the usage aggregate.
     *
     * @return the id value.
     */
    String id();

    /**
     * Gets the name property: Name of the usage aggregate.
     *
     * @return the name value.
     */
    String name();

    /**
     * Gets the type property: Type of the resource being returned.
     *
     * @return the type value.
     */
    String type();

    /**
     * Gets the subscriptionId property: The subscription identifier for the Azure user.
     *
     * @return the subscriptionId value.
     */
    UUID subscriptionId();

    /**
     * Gets the meterId property: Unique ID for the resource that was consumed (aka ResourceID).
     *
     * @return the meterId value.
     */
    String meterId();

    /**
     * Gets the usageStartTime property: UTC start time for the usage bucket to which this usage aggregate belongs.
     *
     * @return the usageStartTime value.
     */
    OffsetDateTime usageStartTime();

    /**
     * Gets the usageEndTime property: UTC end time for the usage bucket to which this usage aggregate belongs.
     *
     * @return the usageEndTime value.
     */
    OffsetDateTime usageEndTime();

    /**
     * Gets the quantity property: The amount of the resource consumption that occurred in this time frame.
     *
     * @return the quantity value.
     */
    Float quantity();

    /**
     * Gets the unit property: The unit in which the usage for this resource is being counted, e.g. Hours, GB.
     *
     * @return the unit value.
     */
    String unit();

    /**
     * Gets the meterName property: Friendly name of the resource being consumed.
     *
     * @return the meterName value.
     */
    String meterName();

    /**
     * Gets the meterCategory property: Category of the consumed resource.
     *
     * @return the meterCategory value.
     */
    String meterCategory();

    /**
     * Gets the meterSubCategory property: Sub-category of the consumed resource.
     *
     * @return the meterSubCategory value.
     */
    String meterSubCategory();

    /**
     * Gets the meterRegion property: Region of the meterId used for billing purposes.
     *
     * @return the meterRegion value.
     */
    String meterRegion();

    /**
     * Gets the infoFields property: Key-value pairs of instance details (legacy format).
     *
     * @return the infoFields value.
     */
    InfoField infoFields();

    /**
     * Gets the instanceData property: Key-value pairs of instance details represented as a string.
     *
     * @return the instanceData value.
     */
    String instanceData();

    /**
     * Gets the inner com.azure.resourcemanager.commerce.fluent.models.UsageAggregationInner object.
     *
     * @return the inner object.
     */
    UsageAggregationInner innerModel();
}
