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

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

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

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

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

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

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

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

// NFVIsClassification provides polymorphic access to related types.
// Call the interface's GetNFVIs() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureArcK8SClusterNFVIDetails, *AzureCoreNFVIDetails, *AzureOperatorNexusClusterNFVIDetails, *NFVIs
type NFVIsClassification interface {
	// GetNFVIs returns the NFVIs content of the underlying type.
	GetNFVIs() *NFVIs
}

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

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

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

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