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

package com.azure.resourcemanager.consumption.models;

import com.azure.resourcemanager.consumption.fluent.models.ModernReservationTransactionInner;
import java.math.BigDecimal;
import java.time.OffsetDateTime;
import java.util.List;
import java.util.UUID;

/** An immutable client-side representation of ModernReservationTransaction. */
public interface ModernReservationTransaction {
    /**
     * Gets the id property: Fully qualified resource Id for the resource.
     *
     * @return the id value.
     */
    String id();

    /**
     * Gets the name property: The name of the resource.
     *
     * @return the name value.
     */
    String name();

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

    /**
     * Gets the tags property: Resource tags.
     *
     * @return the tags value.
     */
    List<String> tags();

    /**
     * Gets the amount property: The charge of the transaction.
     *
     * @return the amount value.
     */
    BigDecimal amount();

    /**
     * Gets the armSkuName property: This is the ARM Sku name. It can be used to join with the serviceType field in
     * additional info in usage records.
     *
     * @return the armSkuName value.
     */
    String armSkuName();

    /**
     * Gets the billingFrequency property: The billing frequency, which can be either one-time or recurring.
     *
     * @return the billingFrequency value.
     */
    String billingFrequency();

    /**
     * Gets the billingProfileId property: Billing profile Id.
     *
     * @return the billingProfileId value.
     */
    String billingProfileId();

    /**
     * Gets the billingProfileName property: Billing profile name.
     *
     * @return the billingProfileName value.
     */
    String billingProfileName();

    /**
     * Gets the currency property: The ISO currency in which the transaction is charged, for example, USD.
     *
     * @return the currency value.
     */
    String currency();

    /**
     * Gets the description property: The description of the transaction.
     *
     * @return the description value.
     */
    String description();

    /**
     * Gets the eventDate property: The date of the transaction.
     *
     * @return the eventDate value.
     */
    OffsetDateTime eventDate();

    /**
     * Gets the eventType property: The type of the transaction (Purchase, Cancel, etc.).
     *
     * @return the eventType value.
     */
    String eventType();

    /**
     * Gets the invoice property: Invoice Number.
     *
     * @return the invoice value.
     */
    String invoice();

    /**
     * Gets the invoiceId property: Invoice Id as on the invoice where the specific transaction appears.
     *
     * @return the invoiceId value.
     */
    String invoiceId();

    /**
     * Gets the invoiceSectionId property: Invoice Section Id.
     *
     * @return the invoiceSectionId value.
     */
    String invoiceSectionId();

    /**
     * Gets the invoiceSectionName property: Invoice Section Name.
     *
     * @return the invoiceSectionName value.
     */
    String invoiceSectionName();

    /**
     * Gets the purchasingSubscriptionGuid property: The subscription guid that makes the transaction.
     *
     * @return the purchasingSubscriptionGuid value.
     */
    UUID purchasingSubscriptionGuid();

    /**
     * Gets the purchasingSubscriptionName property: The subscription name that makes the transaction.
     *
     * @return the purchasingSubscriptionName value.
     */
    String purchasingSubscriptionName();

    /**
     * Gets the quantity property: The quantity of the transaction.
     *
     * @return the quantity value.
     */
    BigDecimal quantity();

    /**
     * Gets the region property: The region of the transaction.
     *
     * @return the region value.
     */
    String region();

    /**
     * Gets the reservationOrderId property: The reservation order ID is the identifier for a reservation purchase. Each
     * reservation order ID represents a single purchase transaction. A reservation order contains reservations. The
     * reservation order specifies the VM size and region for the reservations.
     *
     * @return the reservationOrderId value.
     */
    String reservationOrderId();

    /**
     * Gets the reservationOrderName property: The name of the reservation order.
     *
     * @return the reservationOrderName value.
     */
    String reservationOrderName();

    /**
     * Gets the term property: This is the term of the transaction.
     *
     * @return the term value.
     */
    String term();

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