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

package com.azure.resourcemanager.alertsmanagement.models;

import com.azure.resourcemanager.alertsmanagement.fluent.models.SmartGroupInner;
import java.time.OffsetDateTime;
import java.util.List;

/** An immutable client-side representation of SmartGroup. */
public interface SmartGroup {
    /**
     * 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 alertsCount property: Total number of alerts in smart group.
     *
     * @return the alertsCount value.
     */
    Long alertsCount();

    /**
     * Gets the smartGroupState property: Smart group state.
     *
     * @return the smartGroupState value.
     */
    State smartGroupState();

    /**
     * Gets the severity property: Severity of smart group is the highest(Sev0 &gt;... &gt; Sev4) severity of all the
     * alerts in the group.
     *
     * @return the severity value.
     */
    Severity severity();

    /**
     * Gets the startDateTime property: Creation time of smart group. Date-Time in ISO-8601 format.
     *
     * @return the startDateTime value.
     */
    OffsetDateTime startDateTime();

    /**
     * Gets the lastModifiedDateTime property: Last updated time of smart group. Date-Time in ISO-8601 format.
     *
     * @return the lastModifiedDateTime value.
     */
    OffsetDateTime lastModifiedDateTime();

    /**
     * Gets the lastModifiedUsername property: Last modified by user name.
     *
     * @return the lastModifiedUsername value.
     */
    String lastModifiedUsername();

    /**
     * Gets the resources property: Summary of target resources in the smart group.
     *
     * @return the resources value.
     */
    List<SmartGroupAggregatedProperty> resources();

    /**
     * Gets the resourceTypes property: Summary of target resource types in the smart group.
     *
     * @return the resourceTypes value.
     */
    List<SmartGroupAggregatedProperty> resourceTypes();

    /**
     * Gets the resourceGroups property: Summary of target resource groups in the smart group.
     *
     * @return the resourceGroups value.
     */
    List<SmartGroupAggregatedProperty> resourceGroups();

    /**
     * Gets the monitorServices property: Summary of monitorServices in the smart group.
     *
     * @return the monitorServices value.
     */
    List<SmartGroupAggregatedProperty> monitorServices();

    /**
     * Gets the monitorConditions property: Summary of monitorConditions in the smart group.
     *
     * @return the monitorConditions value.
     */
    List<SmartGroupAggregatedProperty> monitorConditions();

    /**
     * Gets the alertStates property: Summary of alertStates in the smart group.
     *
     * @return the alertStates value.
     */
    List<SmartGroupAggregatedProperty> alertStates();

    /**
     * Gets the alertSeverities property: Summary of alertSeverities in the smart group.
     *
     * @return the alertSeverities value.
     */
    List<SmartGroupAggregatedProperty> alertSeverities();

    /**
     * Gets the nextLink property: The URI to fetch the next page of alerts. Call ListNext() with this URI to fetch the
     * next page alerts.
     *
     * @return the nextLink value.
     */
    String nextLink();

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