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

package com.azure.resourcemanager.billing.fluent;

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

/** The interface for BillingManagementClient class. */
public interface BillingManagementClient {
    /**
     * Gets The ID that uniquely identifies an Azure subscription.
     *
     * @return the subscriptionId value.
     */
    String getSubscriptionId();

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

    /**
     * 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 BillingAccountsClient object to access its operations.
     *
     * @return the BillingAccountsClient object.
     */
    BillingAccountsClient getBillingAccounts();

    /**
     * Gets the AddressClient object to access its operations.
     *
     * @return the AddressClient object.
     */
    AddressClient getAddress();

    /**
     * Gets the AvailableBalancesClient object to access its operations.
     *
     * @return the AvailableBalancesClient object.
     */
    AvailableBalancesClient getAvailableBalances();

    /**
     * Gets the InstructionsClient object to access its operations.
     *
     * @return the InstructionsClient object.
     */
    InstructionsClient getInstructions();

    /**
     * Gets the BillingProfilesClient object to access its operations.
     *
     * @return the BillingProfilesClient object.
     */
    BillingProfilesClient getBillingProfiles();

    /**
     * Gets the CustomersClient object to access its operations.
     *
     * @return the CustomersClient object.
     */
    CustomersClient getCustomers();

    /**
     * Gets the InvoiceSectionsClient object to access its operations.
     *
     * @return the InvoiceSectionsClient object.
     */
    InvoiceSectionsClient getInvoiceSections();

    /**
     * Gets the BillingPermissionsClient object to access its operations.
     *
     * @return the BillingPermissionsClient object.
     */
    BillingPermissionsClient getBillingPermissions();

    /**
     * Gets the BillingSubscriptionsClient object to access its operations.
     *
     * @return the BillingSubscriptionsClient object.
     */
    BillingSubscriptionsClient getBillingSubscriptions();

    /**
     * Gets the ProductsClient object to access its operations.
     *
     * @return the ProductsClient object.
     */
    ProductsClient getProducts();

    /**
     * Gets the InvoicesClient object to access its operations.
     *
     * @return the InvoicesClient object.
     */
    InvoicesClient getInvoices();

    /**
     * Gets the TransactionsClient object to access its operations.
     *
     * @return the TransactionsClient object.
     */
    TransactionsClient getTransactions();

    /**
     * Gets the PoliciesClient object to access its operations.
     *
     * @return the PoliciesClient object.
     */
    PoliciesClient getPolicies();

    /**
     * Gets the BillingPropertiesClient object to access its operations.
     *
     * @return the BillingPropertiesClient object.
     */
    BillingPropertiesClient getBillingProperties();

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

    /**
     * Gets the BillingRoleDefinitionsClient object to access its operations.
     *
     * @return the BillingRoleDefinitionsClient object.
     */
    BillingRoleDefinitionsClient getBillingRoleDefinitions();

    /**
     * Gets the BillingRoleAssignmentsClient object to access its operations.
     *
     * @return the BillingRoleAssignmentsClient object.
     */
    BillingRoleAssignmentsClient getBillingRoleAssignments();

    /**
     * Gets the AgreementsClient object to access its operations.
     *
     * @return the AgreementsClient object.
     */
    AgreementsClient getAgreements();

    /**
     * Gets the ReservationsClient object to access its operations.
     *
     * @return the ReservationsClient object.
     */
    ReservationsClient getReservations();

    /**
     * Gets the EnrollmentAccountsClient object to access its operations.
     *
     * @return the EnrollmentAccountsClient object.
     */
    EnrollmentAccountsClient getEnrollmentAccounts();

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