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

package com.azure.resourcemanager.azurestack.models;

import com.azure.resourcemanager.azurestack.fluent.models.ExtendedProductInner;
import java.util.List;

/** An immutable client-side representation of ExtendedProduct. */
public interface ExtendedProduct {
    /**
     * Gets the galleryPackageBlobSasUri property: The URI to the .azpkg file that provides information required for
     * showing product in the gallery.
     *
     * @return the galleryPackageBlobSasUri value.
     */
    String galleryPackageBlobSasUri();

    /**
     * Gets the productKind property: Specifies the kind of the product (virtualMachine or virtualMachineExtension).
     *
     * @return the productKind value.
     */
    String productKind();

    /**
     * Gets the version property: Specifies product version.
     *
     * @return the version value.
     */
    String version();

    /**
     * Gets the osDiskImage property: OS disk image used by product.
     *
     * @return the osDiskImage value.
     */
    OsDiskImage osDiskImage();

    /**
     * Gets the dataDiskImages property: List of attached data disks.
     *
     * @return the dataDiskImages value.
     */
    List<DataDiskImage> dataDiskImages();

    /**
     * Gets the computeRole property: Specifies kind of compute role included in the package.
     *
     * @return the computeRole value.
     */
    ComputeRole computeRole();

    /**
     * Gets the isSystemExtension property: Specifies if product is a Virtual Machine Extension.
     *
     * @return the isSystemExtension value.
     */
    Boolean isSystemExtension();

    /**
     * Gets the uri property: The URI.
     *
     * @return the uri value.
     */
    String uri();

    /**
     * Gets the supportMultipleExtensions property: Indicates if specified product supports multiple extensions.
     *
     * @return the supportMultipleExtensions value.
     */
    Boolean supportMultipleExtensions();

    /**
     * Gets the vmOsType property: Specifies operating system used by the product.
     *
     * @return the vmOsType value.
     */
    OperatingSystem vmOsType();

    /**
     * Gets the vmScaleSetEnabled property: Indicates if virtual machine Scale Set is enabled in the specified product.
     *
     * @return the vmScaleSetEnabled value.
     */
    Boolean vmScaleSetEnabled();

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