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

package com.azure.resourcemanager.managednetworkfabric.fluent;

import com.azure.core.annotation.ReturnType;
import com.azure.core.annotation.ServiceMethod;
import com.azure.core.http.rest.PagedIterable;
import com.azure.core.http.rest.Response;
import com.azure.core.management.polling.PollResult;
import com.azure.core.util.Context;
import com.azure.core.util.polling.SyncPoller;
import com.azure.resourcemanager.managednetworkfabric.fluent.models.ExternalNetworkInner;
import com.azure.resourcemanager.managednetworkfabric.models.EnableDisableOnResources;
import com.azure.resourcemanager.managednetworkfabric.models.ExternalNetworkPatch;
import com.azure.resourcemanager.managednetworkfabric.models.UpdateAdministrativeState;

/** An instance of this class provides access to all the operations defined in ExternalNetworksClient. */
public interface ExternalNetworksClient {
    /**
     * Creates ExternalNetwork for Layer3 Isolation Domain for communication of computes with external services
     *
     * <p>Creates ExternalNetwork PUT method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of defines the ExternalNetwork item.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<ExternalNetworkInner>, ExternalNetworkInner> beginCreate(
        String resourceGroupName, String l3IsolationDomainName, String externalNetworkName, ExternalNetworkInner body);

    /**
     * Creates ExternalNetwork for Layer3 Isolation Domain for communication of computes with external services
     *
     * <p>Creates ExternalNetwork PUT method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of defines the ExternalNetwork item.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<ExternalNetworkInner>, ExternalNetworkInner> beginCreate(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        ExternalNetworkInner body,
        Context context);

    /**
     * Creates ExternalNetwork for Layer3 Isolation Domain for communication of computes with external services
     *
     * <p>Creates ExternalNetwork PUT method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return defines the ExternalNetwork item.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    ExternalNetworkInner create(
        String resourceGroupName, String l3IsolationDomainName, String externalNetworkName, ExternalNetworkInner body);

    /**
     * Creates ExternalNetwork for Layer3 Isolation Domain for communication of computes with external services
     *
     * <p>Creates ExternalNetwork PUT method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return defines the ExternalNetwork item.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    ExternalNetworkInner create(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        ExternalNetworkInner body,
        Context context);

    /**
     * Retrieves details of ExternalNetwork.
     *
     * <p>Implements ExternalNetworks GET method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return defines the ExternalNetwork item along with {@link Response}.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    Response<ExternalNetworkInner> getWithResponse(
        String resourceGroupName, String l3IsolationDomainName, String externalNetworkName, Context context);

    /**
     * Retrieves details of ExternalNetwork.
     *
     * <p>Implements ExternalNetworks GET method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return defines the ExternalNetwork item.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    ExternalNetworkInner get(String resourceGroupName, String l3IsolationDomainName, String externalNetworkName);

    /**
     * Updates a ExternalNetworks.
     *
     * <p>API to update certain properties of the ExternalNetworks resource.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body ExternalNetwork properties to update. Only annotations are supported.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of defines the ExternalNetwork item.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<ExternalNetworkInner>, ExternalNetworkInner> beginUpdate(
        String resourceGroupName, String l3IsolationDomainName, String externalNetworkName, ExternalNetworkPatch body);

    /**
     * Updates a ExternalNetworks.
     *
     * <p>API to update certain properties of the ExternalNetworks resource.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body ExternalNetwork properties to update. Only annotations are supported.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of defines the ExternalNetwork item.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<ExternalNetworkInner>, ExternalNetworkInner> beginUpdate(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        ExternalNetworkPatch body,
        Context context);

    /**
     * Updates a ExternalNetworks.
     *
     * <p>API to update certain properties of the ExternalNetworks resource.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body ExternalNetwork properties to update. Only annotations are supported.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return defines the ExternalNetwork item.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    ExternalNetworkInner update(
        String resourceGroupName, String l3IsolationDomainName, String externalNetworkName, ExternalNetworkPatch body);

    /**
     * Updates a ExternalNetworks.
     *
     * <p>API to update certain properties of the ExternalNetworks resource.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body ExternalNetwork properties to update. Only annotations are supported.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return defines the ExternalNetwork item.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    ExternalNetworkInner update(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        ExternalNetworkPatch body,
        Context context);

    /**
     * Deletes a ExternalNetworks.
     *
     * <p>Implements ExternalNetworks DELETE method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginDelete(
        String resourceGroupName, String l3IsolationDomainName, String externalNetworkName);

    /**
     * Deletes a ExternalNetworks.
     *
     * <p>Implements ExternalNetworks DELETE method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginDelete(
        String resourceGroupName, String l3IsolationDomainName, String externalNetworkName, Context context);

    /**
     * Deletes a ExternalNetworks.
     *
     * <p>Implements ExternalNetworks DELETE method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void delete(String resourceGroupName, String l3IsolationDomainName, String externalNetworkName);

    /**
     * Deletes a ExternalNetworks.
     *
     * <p>Implements ExternalNetworks DELETE method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void delete(String resourceGroupName, String l3IsolationDomainName, String externalNetworkName, Context context);

    /**
     * Executes list operation to display External Networks within an isolation domain.
     *
     * <p>Implements External Networks list by resource group GET method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return list of ExternalNetworks as paginated response with {@link PagedIterable}.
     */
    @ServiceMethod(returns = ReturnType.COLLECTION)
    PagedIterable<ExternalNetworkInner> list(String resourceGroupName, String l3IsolationDomainName);

    /**
     * Executes list operation to display External Networks within an isolation domain.
     *
     * <p>Implements External Networks list by resource group GET method.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return list of ExternalNetworks as paginated response with {@link PagedIterable}.
     */
    @ServiceMethod(returns = ReturnType.COLLECTION)
    PagedIterable<ExternalNetworkInner> list(String resourceGroupName, String l3IsolationDomainName, Context context);

    /**
     * Implements the operation to the underlying resources.
     *
     * <p>Executes update operation to enable or disable administrative State for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginUpdateAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body);

    /**
     * Implements the operation to the underlying resources.
     *
     * <p>Executes update operation to enable or disable administrative State for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginUpdateAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body,
        Context context);

    /**
     * Implements the operation to the underlying resources.
     *
     * <p>Executes update operation to enable or disable administrative State for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void updateAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body);

    /**
     * Implements the operation to the underlying resources.
     *
     * <p>Executes update operation to enable or disable administrative State for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void updateAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body,
        Context context);

    /**
     * Executes BGP state update operation to the underlying resources.
     *
     * <p>Update BGP for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginUpdateBgpAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body);

    /**
     * Executes BGP state update operation to the underlying resources.
     *
     * <p>Update BGP for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginUpdateBgpAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body,
        Context context);

    /**
     * Executes BGP state update operation to the underlying resources.
     *
     * <p>Update BGP for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void updateBgpAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body);

    /**
     * Executes BGP state update operation to the underlying resources.
     *
     * <p>Update BGP for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void updateBgpAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body,
        Context context);

    /**
     * Execute BfdForBgp update operation to the underlying resources.
     *
     * <p>Update BfdForBgp for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginUpdateBfdForBgpAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body);

    /**
     * Execute BfdForBgp update operation to the underlying resources.
     *
     * <p>Update BfdForBgp for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginUpdateBfdForBgpAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body,
        Context context);

    /**
     * Execute BfdForBgp update operation to the underlying resources.
     *
     * <p>Update BfdForBgp for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void updateBfdForBgpAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body);

    /**
     * Execute BfdForBgp update operation to the underlying resources.
     *
     * <p>Update BfdForBgp for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void updateBfdForBgpAdministrativeState(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        UpdateAdministrativeState body,
        Context context);

    /**
     * Executes clearIpv6Neighbors table operation to the underlying resources.
     *
     * <p>clearIpv6Neighbors for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginClearIpv6Neighbors(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        EnableDisableOnResources body);

    /**
     * Executes clearIpv6Neighbors table operation to the underlying resources.
     *
     * <p>clearIpv6Neighbors for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginClearIpv6Neighbors(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        EnableDisableOnResources body,
        Context context);

    /**
     * Executes clearIpv6Neighbors table operation to the underlying resources.
     *
     * <p>clearIpv6Neighbors for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void clearIpv6Neighbors(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        EnableDisableOnResources body);

    /**
     * Executes clearIpv6Neighbors table operation to the underlying resources.
     *
     * <p>clearIpv6Neighbors for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void clearIpv6Neighbors(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        EnableDisableOnResources body,
        Context context);

    /**
     * Implements the operation to the underlying resources.
     *
     * <p>clearArpEntries for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginClearArpEntries(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        EnableDisableOnResources body);

    /**
     * Implements the operation to the underlying resources.
     *
     * <p>clearArpEntries for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     * @return the {@link SyncPoller} for polling of long-running operation.
     */
    @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)
    SyncPoller<PollResult<Void>, Void> beginClearArpEntries(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        EnableDisableOnResources body,
        Context context);

    /**
     * Implements the operation to the underlying resources.
     *
     * <p>clearArpEntries for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void clearArpEntries(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        EnableDisableOnResources body);

    /**
     * Implements the operation to the underlying resources.
     *
     * <p>clearArpEntries for externalNetwork.
     *
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param l3IsolationDomainName Name of the L3IsolationDomain.
     * @param externalNetworkName Name of the ExternalNetwork.
     * @param body Request payload.
     * @param context The context to associate with this operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation.
     * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server.
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
     */
    @ServiceMethod(returns = ReturnType.SINGLE)
    void clearArpEntries(
        String resourceGroupName,
        String l3IsolationDomainName,
        String externalNetworkName,
        EnableDisableOnResources body,
        Context context);
}
