//go:build go1.18
// +build go1.18

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

package armmonitor

// MetricAlertCriteriaClassification provides polymorphic access to related types.
// Call the interface's GetMetricAlertCriteria() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *MetricAlertCriteria, *MetricAlertMultipleResourceMultipleMetricCriteria, *MetricAlertSingleResourceMultipleMetricCriteria,
// - *WebtestLocationAvailabilityCriteria
type MetricAlertCriteriaClassification interface {
	// GetMetricAlertCriteria returns the MetricAlertCriteria content of the underlying type.
	GetMetricAlertCriteria() *MetricAlertCriteria
}

// MultiMetricCriteriaClassification provides polymorphic access to related types.
// Call the interface's GetMultiMetricCriteria() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *DynamicMetricCriteria, *MetricCriteria, *MultiMetricCriteria
type MultiMetricCriteriaClassification interface {
	// GetMultiMetricCriteria returns the MultiMetricCriteria content of the underlying type.
	GetMultiMetricCriteria() *MultiMetricCriteria
}

// RuleActionClassification provides polymorphic access to related types.
// Call the interface's GetRuleAction() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *RuleAction, *RuleEmailAction, *RuleWebhookAction
type RuleActionClassification interface {
	// GetRuleAction returns the RuleAction content of the underlying type.
	GetRuleAction() *RuleAction
}

// RuleConditionClassification provides polymorphic access to related types.
// Call the interface's GetRuleCondition() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *LocationThresholdRuleCondition, *ManagementEventRuleCondition, *RuleCondition, *ThresholdRuleCondition
type RuleConditionClassification interface {
	// GetRuleCondition returns the RuleCondition content of the underlying type.
	GetRuleCondition() *RuleCondition
}

// RuleDataSourceClassification provides polymorphic access to related types.
// Call the interface's GetRuleDataSource() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *RuleDataSource, *RuleManagementEventDataSource, *RuleMetricDataSource
type RuleDataSourceClassification interface {
	// GetRuleDataSource returns the RuleDataSource content of the underlying type.
	GetRuleDataSource() *RuleDataSource
}
