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

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 - Your Azure subscription ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000).
//   - 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
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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