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

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

// ImageTemplateCustomizerClassification provides polymorphic access to related types.
// Call the interface's GetImageTemplateCustomizer() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *ImageTemplateCustomizer, *ImageTemplateFileCustomizer, *ImageTemplatePowerShellCustomizer, *ImageTemplateRestartCustomizer,
// - *ImageTemplateShellCustomizer, *ImageTemplateWindowsUpdateCustomizer
type ImageTemplateCustomizerClassification interface {
	// GetImageTemplateCustomizer returns the ImageTemplateCustomizer content of the underlying type.
	GetImageTemplateCustomizer() *ImageTemplateCustomizer
}

// ImageTemplateDistributorClassification provides polymorphic access to related types.
// Call the interface's GetImageTemplateDistributor() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *ImageTemplateDistributor, *ImageTemplateManagedImageDistributor, *ImageTemplateSharedImageDistributor, *ImageTemplateVhdDistributor
type ImageTemplateDistributorClassification interface {
	// GetImageTemplateDistributor returns the ImageTemplateDistributor content of the underlying type.
	GetImageTemplateDistributor() *ImageTemplateDistributor
}

// ImageTemplateInVMValidatorClassification provides polymorphic access to related types.
// Call the interface's GetImageTemplateInVMValidator() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *ImageTemplateFileValidator, *ImageTemplateInVMValidator, *ImageTemplatePowerShellValidator, *ImageTemplateShellValidator
type ImageTemplateInVMValidatorClassification interface {
	// GetImageTemplateInVMValidator returns the ImageTemplateInVMValidator content of the underlying type.
	GetImageTemplateInVMValidator() *ImageTemplateInVMValidator
}

// ImageTemplateSourceClassification provides polymorphic access to related types.
// Call the interface's GetImageTemplateSource() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *ImageTemplateManagedImageSource, *ImageTemplatePlatformImageSource, *ImageTemplateSharedImageVersionSource, *ImageTemplateSource
type ImageTemplateSourceClassification interface {
	// GetImageTemplateSource returns the ImageTemplateSource content of the underlying type.
	GetImageTemplateSource() *ImageTemplateSource
}

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