// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.elastic.fluent;

import com.azure.core.http.HttpPipeline;
import java.time.Duration;

/** The interface for MicrosoftElastic class. */
public interface MicrosoftElastic {
    /**
     * Gets The Azure subscription ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000).
     *
     * @return the subscriptionId value.
     */
    String getSubscriptionId();

    /**
     * Gets server parameter.
     *
     * @return the endpoint value.
     */
    String getEndpoint();

    /**
     * Gets Api Version.
     *
     * @return the apiVersion value.
     */
    String getApiVersion();

    /**
     * Gets The HTTP pipeline to send requests through.
     *
     * @return the httpPipeline value.
     */
    HttpPipeline getHttpPipeline();

    /**
     * Gets The default poll interval for long-running operation.
     *
     * @return the defaultPollInterval value.
     */
    Duration getDefaultPollInterval();

    /**
     * Gets the OperationsClient object to access its operations.
     *
     * @return the OperationsClient object.
     */
    OperationsClient getOperations();

    /**
     * Gets the MonitorsClient object to access its operations.
     *
     * @return the MonitorsClient object.
     */
    MonitorsClient getMonitors();

    /**
     * Gets the ElasticVersionsClient object to access its operations.
     *
     * @return the ElasticVersionsClient object.
     */
    ElasticVersionsClient getElasticVersions();

    /**
     * Gets the MonitoredResourcesClient object to access its operations.
     *
     * @return the MonitoredResourcesClient object.
     */
    MonitoredResourcesClient getMonitoredResources();

    /**
     * Gets the DeploymentInfoesClient object to access its operations.
     *
     * @return the DeploymentInfoesClient object.
     */
    DeploymentInfoesClient getDeploymentInfoes();

    /**
     * Gets the ExternalUsersClient object to access its operations.
     *
     * @return the ExternalUsersClient object.
     */
    ExternalUsersClient getExternalUsers();

    /**
     * Gets the TagRulesClient object to access its operations.
     *
     * @return the TagRulesClient object.
     */
    TagRulesClient getTagRules();

    /**
     * Gets the VMHostsClient object to access its operations.
     *
     * @return the VMHostsClient object.
     */
    VMHostsClient getVMHosts();

    /**
     * Gets the VMIngestionsClient object to access its operations.
     *
     * @return the VMIngestionsClient object.
     */
    VMIngestionsClient getVMIngestions();

    /**
     * Gets the VMCollectionsClient object to access its operations.
     *
     * @return the VMCollectionsClient object.
     */
    VMCollectionsClient getVMCollections();

    /**
     * Gets the UpgradableVersionsClient object to access its operations.
     *
     * @return the UpgradableVersionsClient object.
     */
    UpgradableVersionsClient getUpgradableVersions();

    /**
     * Gets the MonitorOperationsClient object to access its operations.
     *
     * @return the MonitorOperationsClient object.
     */
    MonitorOperationsClient getMonitorOperations();

    /**
     * Gets the AllTrafficFiltersClient object to access its operations.
     *
     * @return the AllTrafficFiltersClient object.
     */
    AllTrafficFiltersClient getAllTrafficFilters();

    /**
     * Gets the ListAssociatedTrafficFiltersClient object to access its operations.
     *
     * @return the ListAssociatedTrafficFiltersClient object.
     */
    ListAssociatedTrafficFiltersClient getListAssociatedTrafficFilters();

    /**
     * Gets the CreateAndAssociateIpFiltersClient object to access its operations.
     *
     * @return the CreateAndAssociateIpFiltersClient object.
     */
    CreateAndAssociateIpFiltersClient getCreateAndAssociateIpFilters();

    /**
     * Gets the CreateAndAssociatePLFiltersClient object to access its operations.
     *
     * @return the CreateAndAssociatePLFiltersClient object.
     */
    CreateAndAssociatePLFiltersClient getCreateAndAssociatePLFilters();

    /**
     * Gets the AssociateTrafficFiltersClient object to access its operations.
     *
     * @return the AssociateTrafficFiltersClient object.
     */
    AssociateTrafficFiltersClient getAssociateTrafficFilters();

    /**
     * Gets the DetachAndDeleteTrafficFiltersClient object to access its operations.
     *
     * @return the DetachAndDeleteTrafficFiltersClient object.
     */
    DetachAndDeleteTrafficFiltersClient getDetachAndDeleteTrafficFilters();

    /**
     * Gets the DetachTrafficFiltersClient object to access its operations.
     *
     * @return the DetachTrafficFiltersClient object.
     */
    DetachTrafficFiltersClient getDetachTrafficFilters();

    /**
     * Gets the TrafficFiltersClient object to access its operations.
     *
     * @return the TrafficFiltersClient object.
     */
    TrafficFiltersClient getTrafficFilters();

    /**
     * Gets the OrganizationsClient object to access its operations.
     *
     * @return the OrganizationsClient object.
     */
    OrganizationsClient getOrganizations();
}
