//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 armdataprotection

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

// AzureBackupRecoveryPointBasedRestoreRequestClassification provides polymorphic access to related types.
// Call the interface's GetAzureBackupRecoveryPointBasedRestoreRequest() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureBackupRecoveryPointBasedRestoreRequest, *AzureBackupRestoreWithRehydrationRequest
type AzureBackupRecoveryPointBasedRestoreRequestClassification interface {
	AzureBackupRestoreRequestClassification
	// GetAzureBackupRecoveryPointBasedRestoreRequest returns the AzureBackupRecoveryPointBasedRestoreRequest content of the underlying type.
	GetAzureBackupRecoveryPointBasedRestoreRequest() *AzureBackupRecoveryPointBasedRestoreRequest
}

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

// AzureBackupRestoreRequestClassification provides polymorphic access to related types.
// Call the interface's GetAzureBackupRestoreRequest() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureBackupRecoveryPointBasedRestoreRequest, *AzureBackupRecoveryTimeBasedRestoreRequest, *AzureBackupRestoreRequest,
// - *AzureBackupRestoreWithRehydrationRequest
type AzureBackupRestoreRequestClassification interface {
	// GetAzureBackupRestoreRequest returns the AzureBackupRestoreRequest content of the underlying type.
	GetAzureBackupRestoreRequest() *AzureBackupRestoreRequest
}

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

// BackupDatasourceParametersClassification provides polymorphic access to related types.
// Call the interface's GetBackupDatasourceParameters() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *BackupDatasourceParameters, *BlobBackupDatasourceParameters, *KubernetesClusterBackupDatasourceParameters
type BackupDatasourceParametersClassification interface {
	// GetBackupDatasourceParameters returns the BackupDatasourceParameters content of the underlying type.
	GetBackupDatasourceParameters() *BackupDatasourceParameters
}

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

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

// BasePolicyRuleClassification provides polymorphic access to related types.
// Call the interface's GetBasePolicyRule() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureBackupRule, *AzureRetentionRule, *BasePolicyRule
type BasePolicyRuleClassification interface {
	// GetBasePolicyRule returns the BasePolicyRule content of the underlying type.
	GetBasePolicyRule() *BasePolicyRule
}

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

// CopyOptionClassification provides polymorphic access to related types.
// Call the interface's GetCopyOption() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *CopyOnExpiryOption, *CopyOption, *CustomCopyOption, *ImmediateCopyOption
type CopyOptionClassification interface {
	// GetCopyOption returns the CopyOption content of the underlying type.
	GetCopyOption() *CopyOption
}

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

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

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

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

// ItemLevelRestoreCriteriaClassification provides polymorphic access to related types.
// Call the interface's GetItemLevelRestoreCriteria() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *ItemLevelRestoreCriteria, *ItemPathBasedRestoreCriteria, *KubernetesClusterRestoreCriteria, *KubernetesClusterVaultTierRestoreCriteria,
// - *KubernetesPVRestoreCriteria, *KubernetesStorageClassRestoreCriteria, *RangeBasedItemLevelRestoreCriteria
type ItemLevelRestoreCriteriaClassification interface {
	// GetItemLevelRestoreCriteria returns the ItemLevelRestoreCriteria content of the underlying type.
	GetItemLevelRestoreCriteria() *ItemLevelRestoreCriteria
}

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

// RestoreTargetInfoBaseClassification provides polymorphic access to related types.
// Call the interface's GetRestoreTargetInfoBase() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *ItemLevelRestoreTargetInfo, *RestoreFilesTargetInfo, *RestoreTargetInfo, *RestoreTargetInfoBase
type RestoreTargetInfoBaseClassification interface {
	// GetRestoreTargetInfoBase returns the RestoreTargetInfoBase content of the underlying type.
	GetRestoreTargetInfoBase() *RestoreTargetInfoBase
}

// TriggerContextClassification provides polymorphic access to related types.
// Call the interface's GetTriggerContext() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AdhocBasedTriggerContext, *ScheduleBasedTriggerContext, *TriggerContext
type TriggerContextClassification interface {
	// GetTriggerContext returns the TriggerContext content of the underlying type.
	GetTriggerContext() *TriggerContext
}
