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

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

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

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

// ApplyRecoveryPointProviderSpecificInputClassification provides polymorphic access to related types.
// Call the interface's GetApplyRecoveryPointProviderSpecificInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2AApplyRecoveryPointInput, *A2ACrossClusterMigrationApplyRecoveryPointInput, *ApplyRecoveryPointProviderSpecificInput,
// - *HyperVReplicaAzureApplyRecoveryPointInput, *InMageAzureV2ApplyRecoveryPointInput, *InMageRcmApplyRecoveryPointInput
type ApplyRecoveryPointProviderSpecificInputClassification interface {
	// GetApplyRecoveryPointProviderSpecificInput returns the ApplyRecoveryPointProviderSpecificInput content of the underlying type.
	GetApplyRecoveryPointProviderSpecificInput() *ApplyRecoveryPointProviderSpecificInput
}

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

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

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

// ConfigurationSettingsClassification provides polymorphic access to related types.
// Call the interface's GetConfigurationSettings() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *ConfigurationSettings, *HyperVVirtualMachineDetails, *ReplicationGroupDetails, *VMwareVirtualMachineDetails, *VmmVirtualMachineDetails
type ConfigurationSettingsClassification interface {
	// GetConfigurationSettings returns the ConfigurationSettings content of the underlying type.
	GetConfigurationSettings() *ConfigurationSettings
}

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

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

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

// EnableProtectionProviderSpecificInputClassification provides polymorphic access to related types.
// Call the interface's GetEnableProtectionProviderSpecificInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2ACrossClusterMigrationEnableProtectionInput, *A2AEnableProtectionInput, *EnableProtectionProviderSpecificInput, *HyperVReplicaAzureEnableProtectionInput,
// - *InMageAzureV2EnableProtectionInput, *InMageEnableProtectionInput, *InMageRcmEnableProtectionInput
type EnableProtectionProviderSpecificInputClassification interface {
	// GetEnableProtectionProviderSpecificInput returns the EnableProtectionProviderSpecificInput content of the underlying type.
	GetEnableProtectionProviderSpecificInput() *EnableProtectionProviderSpecificInput
}

// EventProviderSpecificDetailsClassification provides polymorphic access to related types.
// Call the interface's GetEventProviderSpecificDetails() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2AEventDetails, *EventProviderSpecificDetails, *HyperVReplica2012EventDetails, *HyperVReplica2012R2EventDetails, *HyperVReplicaAzureEventDetails,
// - *HyperVReplicaBaseEventDetails, *InMageAzureV2EventDetails, *InMageRcmEventDetails, *InMageRcmFailbackEventDetails, *VMwareCbtEventDetails
type EventProviderSpecificDetailsClassification interface {
	// GetEventProviderSpecificDetails returns the EventProviderSpecificDetails content of the underlying type.
	GetEventProviderSpecificDetails() *EventProviderSpecificDetails
}

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

// FabricSpecificCreateNetworkMappingInputClassification provides polymorphic access to related types.
// Call the interface's GetFabricSpecificCreateNetworkMappingInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureToAzureCreateNetworkMappingInput, *FabricSpecificCreateNetworkMappingInput, *VmmToAzureCreateNetworkMappingInput,
// - *VmmToVmmCreateNetworkMappingInput
type FabricSpecificCreateNetworkMappingInputClassification interface {
	// GetFabricSpecificCreateNetworkMappingInput returns the FabricSpecificCreateNetworkMappingInput content of the underlying type.
	GetFabricSpecificCreateNetworkMappingInput() *FabricSpecificCreateNetworkMappingInput
}

// FabricSpecificCreationInputClassification provides polymorphic access to related types.
// Call the interface's GetFabricSpecificCreationInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureFabricCreationInput, *FabricSpecificCreationInput, *InMageRcmFabricCreationInput, *VMwareV2FabricCreationInput
type FabricSpecificCreationInputClassification interface {
	// GetFabricSpecificCreationInput returns the FabricSpecificCreationInput content of the underlying type.
	GetFabricSpecificCreationInput() *FabricSpecificCreationInput
}

// FabricSpecificDetailsClassification provides polymorphic access to related types.
// Call the interface's GetFabricSpecificDetails() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureFabricSpecificDetails, *FabricSpecificDetails, *HyperVSiteDetails, *InMageRcmFabricSpecificDetails, *VMwareDetails,
// - *VMwareV2FabricSpecificDetails, *VmmDetails
type FabricSpecificDetailsClassification interface {
	// GetFabricSpecificDetails returns the FabricSpecificDetails content of the underlying type.
	GetFabricSpecificDetails() *FabricSpecificDetails
}

// FabricSpecificUpdateNetworkMappingInputClassification provides polymorphic access to related types.
// Call the interface's GetFabricSpecificUpdateNetworkMappingInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureToAzureUpdateNetworkMappingInput, *FabricSpecificUpdateNetworkMappingInput, *VmmToAzureUpdateNetworkMappingInput,
// - *VmmToVmmUpdateNetworkMappingInput
type FabricSpecificUpdateNetworkMappingInputClassification interface {
	// GetFabricSpecificUpdateNetworkMappingInput returns the FabricSpecificUpdateNetworkMappingInput content of the underlying type.
	GetFabricSpecificUpdateNetworkMappingInput() *FabricSpecificUpdateNetworkMappingInput
}

// GroupTaskDetailsClassification provides polymorphic access to related types.
// Call the interface's GetGroupTaskDetails() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *GroupTaskDetails, *InlineWorkflowTaskDetails, *RecoveryPlanGroupTaskDetails, *RecoveryPlanShutdownGroupTaskDetails
type GroupTaskDetailsClassification interface {
	// GetGroupTaskDetails returns the GroupTaskDetails content of the underlying type.
	GetGroupTaskDetails() *GroupTaskDetails
}

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

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

// JobDetailsClassification provides polymorphic access to related types.
// Call the interface's GetJobDetails() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AsrJobDetails, *ClusterFailoverJobDetails, *ClusterSwitchProtectionJobDetails, *ClusterTestFailoverJobDetails, *ExportJobDetails,
// - *FailoverJobDetails, *JobDetails, *SwitchProtectionJobDetails, *TestFailoverJobDetails
type JobDetailsClassification interface {
	// GetJobDetails returns the JobDetails content of the underlying type.
	GetJobDetails() *JobDetails
}

// JobTaskDetailsClassification provides polymorphic access to related types.
// Call the interface's GetJobTaskDetails() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *FabricReplicationGroupTaskDetails, *JobTaskDetails, *VirtualMachineTaskDetails
type JobTaskDetailsClassification interface {
	TaskTypeDetailsClassification
	// GetJobTaskDetails returns the JobTaskDetails content of the underlying type.
	GetJobTaskDetails() *JobTaskDetails
}

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

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

// NetworkMappingFabricSpecificSettingsClassification provides polymorphic access to related types.
// Call the interface's GetNetworkMappingFabricSpecificSettings() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureToAzureNetworkMappingSettings, *NetworkMappingFabricSpecificSettings, *VmmToAzureNetworkMappingSettings, *VmmToVmmNetworkMappingSettings
type NetworkMappingFabricSpecificSettingsClassification interface {
	// GetNetworkMappingFabricSpecificSettings returns the NetworkMappingFabricSpecificSettings content of the underlying type.
	GetNetworkMappingFabricSpecificSettings() *NetworkMappingFabricSpecificSettings
}

// PlannedFailoverProviderSpecificFailoverInputClassification provides polymorphic access to related types.
// Call the interface's GetPlannedFailoverProviderSpecificFailoverInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *HyperVReplicaAzureFailbackProviderInput, *HyperVReplicaAzurePlannedFailoverProviderInput, *InMageRcmFailbackPlannedFailoverProviderInput,
// - *PlannedFailoverProviderSpecificFailoverInput
type PlannedFailoverProviderSpecificFailoverInputClassification interface {
	// GetPlannedFailoverProviderSpecificFailoverInput returns the PlannedFailoverProviderSpecificFailoverInput content of the underlying type.
	GetPlannedFailoverProviderSpecificFailoverInput() *PlannedFailoverProviderSpecificFailoverInput
}

// PolicyProviderSpecificDetailsClassification provides polymorphic access to related types.
// Call the interface's GetPolicyProviderSpecificDetails() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2APolicyDetails, *HyperVReplicaAzurePolicyDetails, *HyperVReplicaBasePolicyDetails, *HyperVReplicaBluePolicyDetails,
// - *HyperVReplicaPolicyDetails, *InMageAzureV2PolicyDetails, *InMageBasePolicyDetails, *InMagePolicyDetails, *InMageRcmFailbackPolicyDetails,
// - *InMageRcmPolicyDetails, *PolicyProviderSpecificDetails, *VmwareCbtPolicyDetails
type PolicyProviderSpecificDetailsClassification interface {
	// GetPolicyProviderSpecificDetails returns the PolicyProviderSpecificDetails content of the underlying type.
	GetPolicyProviderSpecificDetails() *PolicyProviderSpecificDetails
}

// PolicyProviderSpecificInputClassification provides polymorphic access to related types.
// Call the interface's GetPolicyProviderSpecificInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2ACrossClusterMigrationPolicyCreationInput, *A2APolicyCreationInput, *HyperVReplicaAzurePolicyInput, *HyperVReplicaBluePolicyInput,
// - *HyperVReplicaPolicyInput, *InMageAzureV2PolicyInput, *InMagePolicyInput, *InMageRcmFailbackPolicyCreationInput, *InMageRcmPolicyCreationInput,
// - *PolicyProviderSpecificInput, *VMwareCbtPolicyCreationInput
type PolicyProviderSpecificInputClassification interface {
	// GetPolicyProviderSpecificInput returns the PolicyProviderSpecificInput content of the underlying type.
	GetPolicyProviderSpecificInput() *PolicyProviderSpecificInput
}

// ProtectionContainerMappingProviderSpecificDetailsClassification provides polymorphic access to related types.
// Call the interface's GetProtectionContainerMappingProviderSpecificDetails() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2AProtectionContainerMappingDetails, *InMageRcmProtectionContainerMappingDetails, *ProtectionContainerMappingProviderSpecificDetails,
// - *VMwareCbtProtectionContainerMappingDetails
type ProtectionContainerMappingProviderSpecificDetailsClassification interface {
	// GetProtectionContainerMappingProviderSpecificDetails returns the ProtectionContainerMappingProviderSpecificDetails content of the underlying type.
	GetProtectionContainerMappingProviderSpecificDetails() *ProtectionContainerMappingProviderSpecificDetails
}

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

// ProviderSpecificRecoveryPointDetailsClassification provides polymorphic access to related types.
// Call the interface's GetProviderSpecificRecoveryPointDetails() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2ARecoveryPointDetails, *InMageAzureV2RecoveryPointDetails, *InMageRcmRecoveryPointDetails, *ProviderSpecificRecoveryPointDetails
type ProviderSpecificRecoveryPointDetailsClassification interface {
	// GetProviderSpecificRecoveryPointDetails returns the ProviderSpecificRecoveryPointDetails content of the underlying type.
	GetProviderSpecificRecoveryPointDetails() *ProviderSpecificRecoveryPointDetails
}

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

// RecoveryPlanActionDetailsClassification provides polymorphic access to related types.
// Call the interface's GetRecoveryPlanActionDetails() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *RecoveryPlanActionDetails, *RecoveryPlanAutomationRunbookActionDetails, *RecoveryPlanManualActionDetails, *RecoveryPlanScriptActionDetails
type RecoveryPlanActionDetailsClassification interface {
	// GetRecoveryPlanActionDetails returns the RecoveryPlanActionDetails content of the underlying type.
	GetRecoveryPlanActionDetails() *RecoveryPlanActionDetails
}

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

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

// RecoveryPlanProviderSpecificFailoverInputClassification provides polymorphic access to related types.
// Call the interface's GetRecoveryPlanProviderSpecificFailoverInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *RecoveryPlanA2AFailoverInput, *RecoveryPlanHyperVReplicaAzureFailbackInput, *RecoveryPlanHyperVReplicaAzureFailoverInput,
// - *RecoveryPlanInMageAzureV2FailoverInput, *RecoveryPlanInMageFailoverInput, *RecoveryPlanInMageRcmFailbackFailoverInput,
// - *RecoveryPlanInMageRcmFailoverInput, *RecoveryPlanProviderSpecificFailoverInput
type RecoveryPlanProviderSpecificFailoverInputClassification interface {
	// GetRecoveryPlanProviderSpecificFailoverInput returns the RecoveryPlanProviderSpecificFailoverInput content of the underlying type.
	GetRecoveryPlanProviderSpecificFailoverInput() *RecoveryPlanProviderSpecificFailoverInput
}

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

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

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

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

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

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

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

// ReplicationProviderSpecificContainerCreationInputClassification provides polymorphic access to related types.
// Call the interface's GetReplicationProviderSpecificContainerCreationInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2AContainerCreationInput, *A2ACrossClusterMigrationContainerCreationInput, *ReplicationProviderSpecificContainerCreationInput,
// - *VMwareCbtContainerCreationInput
type ReplicationProviderSpecificContainerCreationInputClassification interface {
	// GetReplicationProviderSpecificContainerCreationInput returns the ReplicationProviderSpecificContainerCreationInput content of the underlying type.
	GetReplicationProviderSpecificContainerCreationInput() *ReplicationProviderSpecificContainerCreationInput
}

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

// ReplicationProviderSpecificSettingsClassification provides polymorphic access to related types.
// Call the interface's GetReplicationProviderSpecificSettings() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2ACrossClusterMigrationReplicationDetails, *A2AReplicationDetails, *HyperVReplicaAzureReplicationDetails, *HyperVReplicaBaseReplicationDetails,
// - *HyperVReplicaBlueReplicationDetails, *HyperVReplicaReplicationDetails, *InMageAzureV2ReplicationDetails, *InMageRcmFailbackReplicationDetails,
// - *InMageRcmReplicationDetails, *InMageReplicationDetails, *ReplicationProviderSpecificSettings
type ReplicationProviderSpecificSettingsClassification interface {
	// GetReplicationProviderSpecificSettings returns the ReplicationProviderSpecificSettings content of the underlying type.
	GetReplicationProviderSpecificSettings() *ReplicationProviderSpecificSettings
}

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

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

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

// ReverseReplicationProviderSpecificInputClassification provides polymorphic access to related types.
// Call the interface's GetReverseReplicationProviderSpecificInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2AReprotectInput, *HyperVReplicaAzureReprotectInput, *InMageAzureV2ReprotectInput, *InMageRcmFailbackReprotectInput,
// - *InMageRcmReprotectInput, *InMageReprotectInput, *ReverseReplicationProviderSpecificInput
type ReverseReplicationProviderSpecificInputClassification interface {
	// GetReverseReplicationProviderSpecificInput returns the ReverseReplicationProviderSpecificInput content of the underlying type.
	GetReverseReplicationProviderSpecificInput() *ReverseReplicationProviderSpecificInput
}

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

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

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

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

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

// TaskTypeDetailsClassification provides polymorphic access to related types.
// Call the interface's GetTaskTypeDetails() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AutomationRunbookTaskDetails, *ConsistencyCheckTaskDetails, *FabricReplicationGroupTaskDetails, *JobTaskDetails, *ManualActionTaskDetails,
// - *ScriptActionTaskDetails, *TaskTypeDetails, *VMNicUpdatesTaskDetails, *VirtualMachineTaskDetails
type TaskTypeDetailsClassification interface {
	// GetTaskTypeDetails returns the TaskTypeDetails content of the underlying type.
	GetTaskTypeDetails() *TaskTypeDetails
}

// TestFailoverProviderSpecificInputClassification provides polymorphic access to related types.
// Call the interface's GetTestFailoverProviderSpecificInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2ATestFailoverInput, *HyperVReplicaAzureTestFailoverInput, *InMageAzureV2TestFailoverInput, *InMageRcmTestFailoverInput,
// - *InMageTestFailoverInput, *TestFailoverProviderSpecificInput
type TestFailoverProviderSpecificInputClassification interface {
	// GetTestFailoverProviderSpecificInput returns the TestFailoverProviderSpecificInput content of the underlying type.
	GetTestFailoverProviderSpecificInput() *TestFailoverProviderSpecificInput
}

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

// UnplannedFailoverProviderSpecificInputClassification provides polymorphic access to related types.
// Call the interface's GetUnplannedFailoverProviderSpecificInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2AUnplannedFailoverInput, *HyperVReplicaAzureUnplannedFailoverInput, *InMageAzureV2UnplannedFailoverInput, *InMageRcmUnplannedFailoverInput,
// - *InMageUnplannedFailoverInput, *UnplannedFailoverProviderSpecificInput
type UnplannedFailoverProviderSpecificInputClassification interface {
	// GetUnplannedFailoverProviderSpecificInput returns the UnplannedFailoverProviderSpecificInput content of the underlying type.
	GetUnplannedFailoverProviderSpecificInput() *UnplannedFailoverProviderSpecificInput
}

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

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

// UpdateReplicationProtectedItemProviderInputClassification provides polymorphic access to related types.
// Call the interface's GetUpdateReplicationProtectedItemProviderInput() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *A2AUpdateReplicationProtectedItemInput, *HyperVReplicaAzureUpdateReplicationProtectedItemInput, *InMageAzureV2UpdateReplicationProtectedItemInput,
// - *InMageRcmUpdateReplicationProtectedItemInput, *UpdateReplicationProtectedItemProviderInput
type UpdateReplicationProtectedItemProviderInputClassification interface {
	// GetUpdateReplicationProtectedItemProviderInput returns the UpdateReplicationProtectedItemProviderInput content of the underlying type.
	GetUpdateReplicationProtectedItemProviderInput() *UpdateReplicationProtectedItemProviderInput
}
