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

// FunctionBindingClassification provides polymorphic access to related types.
// Call the interface's GetFunctionBinding() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureMachineLearningServiceFunctionBinding, *AzureMachineLearningStudioFunctionBinding, *CSharpFunctionBinding, *FunctionBinding,
// - *JavaScriptFunctionBinding
type FunctionBindingClassification interface {
	// GetFunctionBinding returns the FunctionBinding content of the underlying type.
	GetFunctionBinding() *FunctionBinding
}

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

// FunctionRetrieveDefaultDefinitionParametersClassification provides polymorphic access to related types.
// Call the interface's GetFunctionRetrieveDefaultDefinitionParameters() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureMachineLearningServiceFunctionRetrieveDefaultDefinitionParameters, *AzureMachineLearningStudioFunctionRetrieveDefaultDefinitionParameters,
// - *CSharpFunctionRetrieveDefaultDefinitionParameters, *FunctionRetrieveDefaultDefinitionParameters, *JavaScriptFunctionRetrieveDefaultDefinitionParameters
type FunctionRetrieveDefaultDefinitionParametersClassification interface {
	// GetFunctionRetrieveDefaultDefinitionParameters returns the FunctionRetrieveDefaultDefinitionParameters content of the underlying type.
	GetFunctionRetrieveDefaultDefinitionParameters() *FunctionRetrieveDefaultDefinitionParameters
}

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

// OutputDataSourceClassification provides polymorphic access to related types.
// Call the interface's GetOutputDataSource() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureDataExplorerOutputDataSource, *AzureDataLakeStoreOutputDataSource, *AzureFunctionOutputDataSource, *AzureSQLDatabaseOutputDataSource,
// - *AzureSynapseOutputDataSource, *AzureTableOutputDataSource, *BlobOutputDataSource, *DocumentDbOutputDataSource, *EventHubOutputDataSource,
// - *EventHubV2OutputDataSource, *GatewayMessageBusOutputDataSource, *OutputDataSource, *PostgreSQLOutputDataSource, *PowerBIOutputDataSource,
// - *RawOutputDatasource, *ServiceBusQueueOutputDataSource, *ServiceBusTopicOutputDataSource
type OutputDataSourceClassification interface {
	// GetOutputDataSource returns the OutputDataSource content of the underlying type.
	GetOutputDataSource() *OutputDataSource
}

// ReferenceInputDataSourceClassification provides polymorphic access to related types.
// Call the interface's GetReferenceInputDataSource() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AzureSQLReferenceInputDataSource, *BlobReferenceInputDataSource, *FileReferenceInputDataSource, *RawReferenceInputDataSource,
// - *ReferenceInputDataSource
type ReferenceInputDataSourceClassification interface {
	// GetReferenceInputDataSource returns the ReferenceInputDataSource content of the underlying type.
	GetReferenceInputDataSource() *ReferenceInputDataSource
}

// SerializationClassification provides polymorphic access to related types.
// Call the interface's GetSerialization() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *AvroSerialization, *CSVSerialization, *CustomClrSerialization, *DeltaSerialization, *JSONSerialization, *ParquetSerialization,
// - *Serialization
type SerializationClassification interface {
	// GetSerialization returns the Serialization content of the underlying type.
	GetSerialization() *Serialization
}

// StreamInputDataSourceClassification provides polymorphic access to related types.
// Call the interface's GetStreamInputDataSource() method to access the common type.
// Use a type switch to determine the concrete type.  The possible types are:
// - *BlobStreamInputDataSource, *EventGridStreamInputDataSource, *EventHubStreamInputDataSource, *EventHubV2StreamInputDataSource,
// - *GatewayMessageBusStreamInputDataSource, *IoTHubStreamInputDataSource, *RawStreamInputDataSource, *StreamInputDataSource
type StreamInputDataSourceClassification interface {
	// GetStreamInputDataSource returns the StreamInputDataSource content of the underlying type.
	GetStreamInputDataSource() *StreamInputDataSource
}
