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

import (
	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
	"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm"
)

// ClientFactory is a client factory used to create any client in this module.
// Don't use this type directly, use NewClientFactory instead.
type ClientFactory struct {
	subscriptionID string
	internal       *arm.Client
}

// NewClientFactory creates a new instance of ClientFactory with the specified values.
// The parameter values will be propagated to any client created from this factory.
//   - subscriptionID - The ID of the target subscription.
//   - credential - used to authorize requests. Usually a credential from azidentity.
//   - options - pass nil to accept the default values.
func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) {
	internal, err := arm.NewClient(moduleName, moduleVersion, credential, options)
	if err != nil {
		return nil, err
	}
	return &ClientFactory{
		subscriptionID: subscriptionID,
		internal:       internal,
	}, nil
}

// NewBatchDeploymentsClient creates a new instance of BatchDeploymentsClient.
func (c *ClientFactory) NewBatchDeploymentsClient() *BatchDeploymentsClient {
	return &BatchDeploymentsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewBatchEndpointsClient creates a new instance of BatchEndpointsClient.
func (c *ClientFactory) NewBatchEndpointsClient() *BatchEndpointsClient {
	return &BatchEndpointsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewCodeContainersClient creates a new instance of CodeContainersClient.
func (c *ClientFactory) NewCodeContainersClient() *CodeContainersClient {
	return &CodeContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewCodeVersionsClient creates a new instance of CodeVersionsClient.
func (c *ClientFactory) NewCodeVersionsClient() *CodeVersionsClient {
	return &CodeVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewComponentContainersClient creates a new instance of ComponentContainersClient.
func (c *ClientFactory) NewComponentContainersClient() *ComponentContainersClient {
	return &ComponentContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewComponentVersionsClient creates a new instance of ComponentVersionsClient.
func (c *ClientFactory) NewComponentVersionsClient() *ComponentVersionsClient {
	return &ComponentVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewComputeClient creates a new instance of ComputeClient.
func (c *ClientFactory) NewComputeClient() *ComputeClient {
	return &ComputeClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewDataContainersClient creates a new instance of DataContainersClient.
func (c *ClientFactory) NewDataContainersClient() *DataContainersClient {
	return &DataContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewDataVersionsClient creates a new instance of DataVersionsClient.
func (c *ClientFactory) NewDataVersionsClient() *DataVersionsClient {
	return &DataVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewDatastoresClient creates a new instance of DatastoresClient.
func (c *ClientFactory) NewDatastoresClient() *DatastoresClient {
	return &DatastoresClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewEnvironmentContainersClient creates a new instance of EnvironmentContainersClient.
func (c *ClientFactory) NewEnvironmentContainersClient() *EnvironmentContainersClient {
	return &EnvironmentContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewEnvironmentVersionsClient creates a new instance of EnvironmentVersionsClient.
func (c *ClientFactory) NewEnvironmentVersionsClient() *EnvironmentVersionsClient {
	return &EnvironmentVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewFeaturesClient creates a new instance of FeaturesClient.
func (c *ClientFactory) NewFeaturesClient() *FeaturesClient {
	return &FeaturesClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewFeaturesetContainersClient creates a new instance of FeaturesetContainersClient.
func (c *ClientFactory) NewFeaturesetContainersClient() *FeaturesetContainersClient {
	return &FeaturesetContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewFeaturesetVersionsClient creates a new instance of FeaturesetVersionsClient.
func (c *ClientFactory) NewFeaturesetVersionsClient() *FeaturesetVersionsClient {
	return &FeaturesetVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewFeaturestoreEntityContainersClient creates a new instance of FeaturestoreEntityContainersClient.
func (c *ClientFactory) NewFeaturestoreEntityContainersClient() *FeaturestoreEntityContainersClient {
	return &FeaturestoreEntityContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewFeaturestoreEntityVersionsClient creates a new instance of FeaturestoreEntityVersionsClient.
func (c *ClientFactory) NewFeaturestoreEntityVersionsClient() *FeaturestoreEntityVersionsClient {
	return &FeaturestoreEntityVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewJobsClient creates a new instance of JobsClient.
func (c *ClientFactory) NewJobsClient() *JobsClient {
	return &JobsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewManagedNetworkProvisionsClient creates a new instance of ManagedNetworkProvisionsClient.
func (c *ClientFactory) NewManagedNetworkProvisionsClient() *ManagedNetworkProvisionsClient {
	return &ManagedNetworkProvisionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewManagedNetworkSettingsRuleClient creates a new instance of ManagedNetworkSettingsRuleClient.
func (c *ClientFactory) NewManagedNetworkSettingsRuleClient() *ManagedNetworkSettingsRuleClient {
	return &ManagedNetworkSettingsRuleClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewMarketplaceSubscriptionsClient creates a new instance of MarketplaceSubscriptionsClient.
func (c *ClientFactory) NewMarketplaceSubscriptionsClient() *MarketplaceSubscriptionsClient {
	return &MarketplaceSubscriptionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewModelContainersClient creates a new instance of ModelContainersClient.
func (c *ClientFactory) NewModelContainersClient() *ModelContainersClient {
	return &ModelContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewModelVersionsClient creates a new instance of ModelVersionsClient.
func (c *ClientFactory) NewModelVersionsClient() *ModelVersionsClient {
	return &ModelVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewOnlineDeploymentsClient creates a new instance of OnlineDeploymentsClient.
func (c *ClientFactory) NewOnlineDeploymentsClient() *OnlineDeploymentsClient {
	return &OnlineDeploymentsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewOnlineEndpointsClient creates a new instance of OnlineEndpointsClient.
func (c *ClientFactory) NewOnlineEndpointsClient() *OnlineEndpointsClient {
	return &OnlineEndpointsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewOperationsClient creates a new instance of OperationsClient.
func (c *ClientFactory) NewOperationsClient() *OperationsClient {
	return &OperationsClient{
		internal: c.internal,
	}
}

// NewPrivateEndpointConnectionsClient creates a new instance of PrivateEndpointConnectionsClient.
func (c *ClientFactory) NewPrivateEndpointConnectionsClient() *PrivateEndpointConnectionsClient {
	return &PrivateEndpointConnectionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewPrivateLinkResourcesClient creates a new instance of PrivateLinkResourcesClient.
func (c *ClientFactory) NewPrivateLinkResourcesClient() *PrivateLinkResourcesClient {
	return &PrivateLinkResourcesClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewQuotasClient creates a new instance of QuotasClient.
func (c *ClientFactory) NewQuotasClient() *QuotasClient {
	return &QuotasClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistriesClient creates a new instance of RegistriesClient.
func (c *ClientFactory) NewRegistriesClient() *RegistriesClient {
	return &RegistriesClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryCodeContainersClient creates a new instance of RegistryCodeContainersClient.
func (c *ClientFactory) NewRegistryCodeContainersClient() *RegistryCodeContainersClient {
	return &RegistryCodeContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryCodeVersionsClient creates a new instance of RegistryCodeVersionsClient.
func (c *ClientFactory) NewRegistryCodeVersionsClient() *RegistryCodeVersionsClient {
	return &RegistryCodeVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryComponentContainersClient creates a new instance of RegistryComponentContainersClient.
func (c *ClientFactory) NewRegistryComponentContainersClient() *RegistryComponentContainersClient {
	return &RegistryComponentContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryComponentVersionsClient creates a new instance of RegistryComponentVersionsClient.
func (c *ClientFactory) NewRegistryComponentVersionsClient() *RegistryComponentVersionsClient {
	return &RegistryComponentVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryDataContainersClient creates a new instance of RegistryDataContainersClient.
func (c *ClientFactory) NewRegistryDataContainersClient() *RegistryDataContainersClient {
	return &RegistryDataContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryDataReferencesClient creates a new instance of RegistryDataReferencesClient.
func (c *ClientFactory) NewRegistryDataReferencesClient() *RegistryDataReferencesClient {
	return &RegistryDataReferencesClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryDataVersionsClient creates a new instance of RegistryDataVersionsClient.
func (c *ClientFactory) NewRegistryDataVersionsClient() *RegistryDataVersionsClient {
	return &RegistryDataVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryEnvironmentContainersClient creates a new instance of RegistryEnvironmentContainersClient.
func (c *ClientFactory) NewRegistryEnvironmentContainersClient() *RegistryEnvironmentContainersClient {
	return &RegistryEnvironmentContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryEnvironmentVersionsClient creates a new instance of RegistryEnvironmentVersionsClient.
func (c *ClientFactory) NewRegistryEnvironmentVersionsClient() *RegistryEnvironmentVersionsClient {
	return &RegistryEnvironmentVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryModelContainersClient creates a new instance of RegistryModelContainersClient.
func (c *ClientFactory) NewRegistryModelContainersClient() *RegistryModelContainersClient {
	return &RegistryModelContainersClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewRegistryModelVersionsClient creates a new instance of RegistryModelVersionsClient.
func (c *ClientFactory) NewRegistryModelVersionsClient() *RegistryModelVersionsClient {
	return &RegistryModelVersionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewSchedulesClient creates a new instance of SchedulesClient.
func (c *ClientFactory) NewSchedulesClient() *SchedulesClient {
	return &SchedulesClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewServerlessEndpointsClient creates a new instance of ServerlessEndpointsClient.
func (c *ClientFactory) NewServerlessEndpointsClient() *ServerlessEndpointsClient {
	return &ServerlessEndpointsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewUsagesClient creates a new instance of UsagesClient.
func (c *ClientFactory) NewUsagesClient() *UsagesClient {
	return &UsagesClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewVirtualMachineSizesClient creates a new instance of VirtualMachineSizesClient.
func (c *ClientFactory) NewVirtualMachineSizesClient() *VirtualMachineSizesClient {
	return &VirtualMachineSizesClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewWorkspaceConnectionsClient creates a new instance of WorkspaceConnectionsClient.
func (c *ClientFactory) NewWorkspaceConnectionsClient() *WorkspaceConnectionsClient {
	return &WorkspaceConnectionsClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewWorkspaceFeaturesClient creates a new instance of WorkspaceFeaturesClient.
func (c *ClientFactory) NewWorkspaceFeaturesClient() *WorkspaceFeaturesClient {
	return &WorkspaceFeaturesClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}

// NewWorkspacesClient creates a new instance of WorkspacesClient.
func (c *ClientFactory) NewWorkspacesClient() *WorkspacesClient {
	return &WorkspacesClient{
		subscriptionID: c.subscriptionID,
		internal:       c.internal,
	}
}
