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

// AzureIaaSVMProtectedItemClassification provides polymorphic access to related types.
// Call the interface's GetAzureIaaSVMProtectedItem() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureIaaSClassicComputeVMProtectedItem, *AzureIaaSComputeVMProtectedItem, *AzureIaaSVMProtectedItem
type AzureIaaSVMProtectedItemClassification interface {
	ProtectedItemClassification
	// GetAzureIaaSVMProtectedItem returns the AzureIaaSVMProtectedItem content of the underlying type.
	GetAzureIaaSVMProtectedItem() *AzureIaaSVMProtectedItem
}

// AzureRecoveryServiceVaultProtectionIntentClassification provides polymorphic access to related types.
// Call the interface's GetAzureRecoveryServiceVaultProtectionIntent() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureRecoveryServiceVaultProtectionIntent, *AzureWorkloadAutoProtectionIntent, *AzureWorkloadSQLAutoProtectionIntent
type AzureRecoveryServiceVaultProtectionIntentClassification interface {
	ProtectionIntentClassification
	// GetAzureRecoveryServiceVaultProtectionIntent returns the AzureRecoveryServiceVaultProtectionIntent content of the underlying type.
	GetAzureRecoveryServiceVaultProtectionIntent() *AzureRecoveryServiceVaultProtectionIntent
}

// AzureVMWorkloadItemClassification provides polymorphic access to related types.
// Call the interface's GetAzureVMWorkloadItem() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureVMWorkloadItem, *AzureVMWorkloadSAPAseDatabaseWorkloadItem, *AzureVMWorkloadSAPAseSystemWorkloadItem, *AzureVMWorkloadSAPHanaDatabaseWorkloadItem,
// - *AzureVMWorkloadSAPHanaSystemWorkloadItem, *AzureVMWorkloadSQLDatabaseWorkloadItem, *AzureVMWorkloadSQLInstanceWorkloadItem
type AzureVMWorkloadItemClassification interface {
	WorkloadItemClassification
	// GetAzureVMWorkloadItem returns the AzureVMWorkloadItem content of the underlying type.
	GetAzureVMWorkloadItem() *AzureVMWorkloadItem
}

// AzureVMWorkloadProtectableItemClassification provides polymorphic access to related types.
// Call the interface's GetAzureVMWorkloadProtectableItem() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureVMWorkloadProtectableItem, *AzureVMWorkloadSAPAseDatabaseProtectableItem, *AzureVMWorkloadSAPAseSystemProtectableItem,
// - *AzureVMWorkloadSAPHanaDBInstance, *AzureVMWorkloadSAPHanaDatabaseProtectableItem, *AzureVMWorkloadSAPHanaHSRProtectableItem,
// - *AzureVMWorkloadSAPHanaSystemProtectableItem, *AzureVMWorkloadSQLAvailabilityGroupProtectableItem, *AzureVMWorkloadSQLDatabaseProtectableItem,
// - *AzureVMWorkloadSQLInstanceProtectableItem
type AzureVMWorkloadProtectableItemClassification interface {
	WorkloadProtectableItemClassification
	// GetAzureVMWorkloadProtectableItem returns the AzureVMWorkloadProtectableItem content of the underlying type.
	GetAzureVMWorkloadProtectableItem() *AzureVMWorkloadProtectableItem
}

// AzureVMWorkloadProtectedItemClassification provides polymorphic access to related types.
// Call the interface's GetAzureVMWorkloadProtectedItem() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureVMWorkloadProtectedItem, *AzureVMWorkloadSAPAseDatabaseProtectedItem, *AzureVMWorkloadSAPHanaDBInstanceProtectedItem,
// - *AzureVMWorkloadSAPHanaDatabaseProtectedItem, *AzureVMWorkloadSQLDatabaseProtectedItem
type AzureVMWorkloadProtectedItemClassification interface {
	ProtectedItemClassification
	// GetAzureVMWorkloadProtectedItem returns the AzureVMWorkloadProtectedItem content of the underlying type.
	GetAzureVMWorkloadProtectedItem() *AzureVMWorkloadProtectedItem
}

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

// AzureWorkloadContainerClassification provides polymorphic access to related types.
// Call the interface's GetAzureWorkloadContainer() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureSQLAGWorkloadContainerProtectionContainer, *AzureVMAppContainerProtectionContainer, *AzureWorkloadContainer
type AzureWorkloadContainerClassification interface {
	ProtectionContainerClassification
	// GetAzureWorkloadContainer returns the AzureWorkloadContainer content of the underlying type.
	GetAzureWorkloadContainer() *AzureWorkloadContainer
}

// AzureWorkloadPointInTimeRecoveryPointClassification provides polymorphic access to related types.
// Call the interface's GetAzureWorkloadPointInTimeRecoveryPoint() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureWorkloadPointInTimeRecoveryPoint, *AzureWorkloadSAPAsePointInTimeRecoveryPoint, *AzureWorkloadSAPHanaPointInTimeRecoveryPoint
type AzureWorkloadPointInTimeRecoveryPointClassification interface {
	AzureWorkloadRecoveryPointClassification
	// GetAzureWorkloadPointInTimeRecoveryPoint returns the AzureWorkloadPointInTimeRecoveryPoint content of the underlying type.
	GetAzureWorkloadPointInTimeRecoveryPoint() *AzureWorkloadPointInTimeRecoveryPoint
}

// AzureWorkloadRecoveryPointClassification provides polymorphic access to related types.
// Call the interface's GetAzureWorkloadRecoveryPoint() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureWorkloadPointInTimeRecoveryPoint, *AzureWorkloadRecoveryPoint, *AzureWorkloadSAPAsePointInTimeRecoveryPoint, *AzureWorkloadSAPAseRecoveryPoint,
// - *AzureWorkloadSAPHanaPointInTimeRecoveryPoint, *AzureWorkloadSAPHanaRecoveryPoint, *AzureWorkloadSQLPointInTimeRecoveryPoint,
// - *AzureWorkloadSQLRecoveryPoint
type AzureWorkloadRecoveryPointClassification interface {
	RecoveryPointClassification
	// GetAzureWorkloadRecoveryPoint returns the AzureWorkloadRecoveryPoint content of the underlying type.
	GetAzureWorkloadRecoveryPoint() *AzureWorkloadRecoveryPoint
}

// AzureWorkloadRestoreRequestClassification provides polymorphic access to related types.
// Call the interface's GetAzureWorkloadRestoreRequest() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureWorkloadPointInTimeRestoreRequest, *AzureWorkloadRestoreRequest, *AzureWorkloadSAPAsePointInTimeRestoreRequest,
// - *AzureWorkloadSAPAseRestoreRequest, *AzureWorkloadSAPHanaPointInTimeRestoreRequest, *AzureWorkloadSAPHanaPointInTimeRestoreWithRehydrateRequest,
// - *AzureWorkloadSAPHanaRestoreRequest, *AzureWorkloadSAPHanaRestoreWithRehydrateRequest, *AzureWorkloadSQLPointInTimeRestoreRequest,
// - *AzureWorkloadSQLPointInTimeRestoreWithRehydrateRequest, *AzureWorkloadSQLRestoreRequest, *AzureWorkloadSQLRestoreWithRehydrateRequest
type AzureWorkloadRestoreRequestClassification interface {
	RestoreRequestClassification
	// GetAzureWorkloadRestoreRequest returns the AzureWorkloadRestoreRequest content of the underlying type.
	GetAzureWorkloadRestoreRequest() *AzureWorkloadRestoreRequest
}

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

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

// AzureWorkloadSAPHanaRestoreRequestClassification provides polymorphic access to related types.
// Call the interface's GetAzureWorkloadSAPHanaRestoreRequest() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureWorkloadSAPHanaPointInTimeRestoreRequest, *AzureWorkloadSAPHanaPointInTimeRestoreWithRehydrateRequest, *AzureWorkloadSAPHanaRestoreRequest,
// - *AzureWorkloadSAPHanaRestoreWithRehydrateRequest
type AzureWorkloadSAPHanaRestoreRequestClassification interface {
	AzureWorkloadRestoreRequestClassification
	// GetAzureWorkloadSAPHanaRestoreRequest returns the AzureWorkloadSAPHanaRestoreRequest content of the underlying type.
	GetAzureWorkloadSAPHanaRestoreRequest() *AzureWorkloadSAPHanaRestoreRequest
}

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

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

// AzureWorkloadSQLRestoreRequestClassification provides polymorphic access to related types.
// Call the interface's GetAzureWorkloadSQLRestoreRequest() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureWorkloadSQLPointInTimeRestoreRequest, *AzureWorkloadSQLPointInTimeRestoreWithRehydrateRequest, *AzureWorkloadSQLRestoreRequest,
// - *AzureWorkloadSQLRestoreWithRehydrateRequest
type AzureWorkloadSQLRestoreRequestClassification interface {
	AzureWorkloadRestoreRequestClassification
	// GetAzureWorkloadSQLRestoreRequest returns the AzureWorkloadSQLRestoreRequest content of the underlying type.
	GetAzureWorkloadSQLRestoreRequest() *AzureWorkloadSQLRestoreRequest
}

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

// BackupRequestClassification provides polymorphic access to related types.
// Call the interface's GetBackupRequest() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureFileShareBackupRequest, *AzureWorkloadBackupRequest, *BackupRequest, *IaasVMBackupRequest
type BackupRequestClassification interface {
	// GetBackupRequest returns the BackupRequest content of the underlying type.
	GetBackupRequest() *BackupRequest
}

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

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

// FetchTieringCostInfoRequestClassification provides polymorphic access to related types.
// Call the interface's GetFetchTieringCostInfoRequest() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *FetchTieringCostInfoForRehydrationRequest, *FetchTieringCostInfoRequest, *FetchTieringCostSavingsInfoForPolicyRequest,
// - *FetchTieringCostSavingsInfoForProtectedItemRequest, *FetchTieringCostSavingsInfoForVaultRequest
type FetchTieringCostInfoRequestClassification interface {
	// GetFetchTieringCostInfoRequest returns the FetchTieringCostInfoRequest content of the underlying type.
	GetFetchTieringCostInfoRequest() *FetchTieringCostInfoRequest
}

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

// IaaSVMContainerClassification provides polymorphic access to related types.
// Call the interface's GetIaaSVMContainer() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureIaaSClassicComputeVMContainer, *AzureIaaSComputeVMContainer, *IaaSVMContainer
type IaaSVMContainerClassification interface {
	ProtectionContainerClassification
	// GetIaaSVMContainer returns the IaaSVMContainer content of the underlying type.
	GetIaaSVMContainer() *IaaSVMContainer
}

// IaaSVMProtectableItemClassification provides polymorphic access to related types.
// Call the interface's GetIaaSVMProtectableItem() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureIaaSClassicComputeVMProtectableItem, *AzureIaaSComputeVMProtectableItem, *IaaSVMProtectableItem
type IaaSVMProtectableItemClassification interface {
	WorkloadProtectableItemClassification
	// GetIaaSVMProtectableItem returns the IaaSVMProtectableItem content of the underlying type.
	GetIaaSVMProtectableItem() *IaaSVMProtectableItem
}

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

// JobClassification provides polymorphic access to related types.
// Call the interface's GetJob() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureIaaSVMJob, *AzureIaaSVMJobV2, *AzureStorageJob, *AzureWorkloadJob, *DpmJob, *Job, *MabJob, *VaultJob
type JobClassification interface {
	// GetJob returns the Job content of the underlying type.
	GetJob() *Job
}

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

// OperationStatusExtendedInfoClassification provides polymorphic access to related types.
// Call the interface's GetOperationStatusExtendedInfo() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *OperationStatusExtendedInfo, *OperationStatusJobExtendedInfo, *OperationStatusJobsExtendedInfo, *OperationStatusProvisionILRExtendedInfo,
// - *OperationStatusValidateOperationExtendedInfo
type OperationStatusExtendedInfoClassification interface {
	// GetOperationStatusExtendedInfo returns the OperationStatusExtendedInfo content of the underlying type.
	GetOperationStatusExtendedInfo() *OperationStatusExtendedInfo
}

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

// ProtectedItemClassification provides polymorphic access to related types.
// Call the interface's GetProtectedItem() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureFileshareProtectedItem, *AzureIaaSClassicComputeVMProtectedItem, *AzureIaaSComputeVMProtectedItem, *AzureIaaSVMProtectedItem,
// - *AzureSQLProtectedItem, *AzureVMWorkloadProtectedItem, *AzureVMWorkloadSAPAseDatabaseProtectedItem, *AzureVMWorkloadSAPHanaDBInstanceProtectedItem,
// - *AzureVMWorkloadSAPHanaDatabaseProtectedItem, *AzureVMWorkloadSQLDatabaseProtectedItem, *DPMProtectedItem, *GenericProtectedItem,
// - *MabFileFolderProtectedItem, *ProtectedItem
type ProtectedItemClassification interface {
	// GetProtectedItem returns the ProtectedItem content of the underlying type.
	GetProtectedItem() *ProtectedItem
}

// ProtectionContainerClassification provides polymorphic access to related types.
// Call the interface's GetProtectionContainer() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureBackupServerContainer, *AzureIaaSClassicComputeVMContainer, *AzureIaaSComputeVMContainer, *AzureSQLAGWorkloadContainerProtectionContainer,
// - *AzureSQLContainer, *AzureStorageContainer, *AzureVMAppContainerProtectionContainer, *AzureWorkloadContainer, *DpmContainer,
// - *GenericContainer, *IaaSVMContainer, *MabContainer, *ProtectionContainer
type ProtectionContainerClassification interface {
	// GetProtectionContainer returns the ProtectionContainer content of the underlying type.
	GetProtectionContainer() *ProtectionContainer
}

// ProtectionIntentClassification provides polymorphic access to related types.
// Call the interface's GetProtectionIntent() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureRecoveryServiceVaultProtectionIntent, *AzureResourceProtectionIntent, *AzureWorkloadAutoProtectionIntent, *AzureWorkloadContainerAutoProtectionIntent,
// - *AzureWorkloadSQLAutoProtectionIntent, *ProtectionIntent
type ProtectionIntentClassification interface {
	// GetProtectionIntent returns the ProtectionIntent content of the underlying type.
	GetProtectionIntent() *ProtectionIntent
}

// ProtectionPolicyClassification provides polymorphic access to related types.
// Call the interface's GetProtectionPolicy() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureFileShareProtectionPolicy, *AzureIaaSVMProtectionPolicy, *AzureSQLProtectionPolicy, *AzureVMWorkloadProtectionPolicy,
// - *GenericProtectionPolicy, *MabProtectionPolicy, *ProtectionPolicy
type ProtectionPolicyClassification interface {
	// GetProtectionPolicy returns the ProtectionPolicy content of the underlying type.
	GetProtectionPolicy() *ProtectionPolicy
}

// RecoveryPointClassification provides polymorphic access to related types.
// Call the interface's GetRecoveryPoint() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureFileShareRecoveryPoint, *AzureWorkloadPointInTimeRecoveryPoint, *AzureWorkloadRecoveryPoint, *AzureWorkloadSAPAsePointInTimeRecoveryPoint,
// - *AzureWorkloadSAPAseRecoveryPoint, *AzureWorkloadSAPHanaPointInTimeRecoveryPoint, *AzureWorkloadSAPHanaRecoveryPoint,
// - *AzureWorkloadSQLPointInTimeRecoveryPoint, *AzureWorkloadSQLRecoveryPoint, *GenericRecoveryPoint, *IaasVMRecoveryPoint,
// - *RecoveryPoint
type RecoveryPointClassification interface {
	// GetRecoveryPoint returns the RecoveryPoint content of the underlying type.
	GetRecoveryPoint() *RecoveryPoint
}

// RestoreRequestClassification provides polymorphic access to related types.
// Call the interface's GetRestoreRequest() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureFileShareRestoreRequest, *AzureWorkloadPointInTimeRestoreRequest, *AzureWorkloadRestoreRequest, *AzureWorkloadSAPAsePointInTimeRestoreRequest,
// - *AzureWorkloadSAPAseRestoreRequest, *AzureWorkloadSAPHanaPointInTimeRestoreRequest, *AzureWorkloadSAPHanaPointInTimeRestoreWithRehydrateRequest,
// - *AzureWorkloadSAPHanaRestoreRequest, *AzureWorkloadSAPHanaRestoreWithRehydrateRequest, *AzureWorkloadSQLPointInTimeRestoreRequest,
// - *AzureWorkloadSQLPointInTimeRestoreWithRehydrateRequest, *AzureWorkloadSQLRestoreRequest, *AzureWorkloadSQLRestoreWithRehydrateRequest,
// - *IaasVMRestoreRequest, *IaasVMRestoreWithRehydrationRequest, *RestoreRequest
type RestoreRequestClassification interface {
	// GetRestoreRequest returns the RestoreRequest content of the underlying type.
	GetRestoreRequest() *RestoreRequest
}

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

// SchedulePolicyClassification provides polymorphic access to related types.
// Call the interface's GetSchedulePolicy() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *LogSchedulePolicy, *LongTermSchedulePolicy, *SchedulePolicy, *SimpleSchedulePolicy, *SimpleSchedulePolicyV2
type SchedulePolicyClassification interface {
	// GetSchedulePolicy returns the SchedulePolicy content of the underlying type.
	GetSchedulePolicy() *SchedulePolicy
}

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

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

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

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

// WorkloadItemClassification provides polymorphic access to related types.
// Call the interface's GetWorkloadItem() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureVMWorkloadItem, *AzureVMWorkloadSAPAseDatabaseWorkloadItem, *AzureVMWorkloadSAPAseSystemWorkloadItem, *AzureVMWorkloadSAPHanaDatabaseWorkloadItem,
// - *AzureVMWorkloadSAPHanaSystemWorkloadItem, *AzureVMWorkloadSQLDatabaseWorkloadItem, *AzureVMWorkloadSQLInstanceWorkloadItem,
// - *WorkloadItem
type WorkloadItemClassification interface {
	// GetWorkloadItem returns the WorkloadItem content of the underlying type.
	GetWorkloadItem() *WorkloadItem
}

// WorkloadProtectableItemClassification provides polymorphic access to related types.
// Call the interface's GetWorkloadProtectableItem() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureFileShareProtectableItem, *AzureIaaSClassicComputeVMProtectableItem, *AzureIaaSComputeVMProtectableItem, *AzureVMWorkloadProtectableItem,
// - *AzureVMWorkloadSAPAseDatabaseProtectableItem, *AzureVMWorkloadSAPAseSystemProtectableItem, *AzureVMWorkloadSAPHanaDBInstance,
// - *AzureVMWorkloadSAPHanaDatabaseProtectableItem, *AzureVMWorkloadSAPHanaHSRProtectableItem, *AzureVMWorkloadSAPHanaSystemProtectableItem,
// - *AzureVMWorkloadSQLAvailabilityGroupProtectableItem, *AzureVMWorkloadSQLDatabaseProtectableItem, *AzureVMWorkloadSQLInstanceProtectableItem,
// - *IaaSVMProtectableItem, *WorkloadProtectableItem
type WorkloadProtectableItemClassification interface {
	// GetWorkloadProtectableItem returns the WorkloadProtectableItem content of the underlying type.
	GetWorkloadProtectableItem() *WorkloadProtectableItem
}
