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

package com.azure.resourcemanager.cosmosdbforpostgresql.models;

import com.azure.core.management.SystemData;
import com.azure.resourcemanager.cosmosdbforpostgresql.fluent.models.ClusterServerInner;

/** An immutable client-side representation of ClusterServer. */
public interface ClusterServer {
    /**
     * Gets the id property: Fully qualified resource Id for the resource.
     *
     * @return the id value.
     */
    String id();

    /**
     * Gets the name property: The name of the resource.
     *
     * @return the name value.
     */
    String name();

    /**
     * Gets the type property: The type of the resource.
     *
     * @return the type value.
     */
    String type();

    /**
     * Gets the systemData property: Azure Resource Manager metadata containing createdBy and modifiedBy information.
     *
     * @return the systemData value.
     */
    SystemData systemData();

    /**
     * Gets the fullyQualifiedDomainName property: The fully qualified domain name of a server.
     *
     * @return the fullyQualifiedDomainName value.
     */
    String fullyQualifiedDomainName();

    /**
     * Gets the role property: The role of server in the cluster.
     *
     * @return the role value.
     */
    ServerRole role();

    /**
     * Gets the state property: A state of a cluster/server that is visible to user.
     *
     * @return the state value.
     */
    String state();

    /**
     * Gets the haState property: A state of HA feature for the cluster.
     *
     * @return the haState value.
     */
    String haState();

    /**
     * Gets the availabilityZone property: Availability Zone information of the server.
     *
     * @return the availabilityZone value.
     */
    String availabilityZone();

    /**
     * Gets the postgresqlVersion property: The major PostgreSQL version of server.
     *
     * @return the postgresqlVersion value.
     */
    String postgresqlVersion();

    /**
     * Gets the citusVersion property: The Citus extension version of server.
     *
     * @return the citusVersion value.
     */
    String citusVersion();

    /**
     * Gets the serverEdition property: The edition of a server.
     *
     * @return the serverEdition value.
     */
    String serverEdition();

    /**
     * Gets the storageQuotaInMb property: The storage of a server in MB.
     *
     * @return the storageQuotaInMb value.
     */
    Integer storageQuotaInMb();

    /**
     * Gets the vCores property: The vCores count of a server.
     *
     * @return the vCores value.
     */
    Integer vCores();

    /**
     * Gets the enableHa property: If high availability (HA) is enabled or not for the server.
     *
     * @return the enableHa value.
     */
    Boolean enableHa();

    /**
     * Gets the enablePublicIpAccess property: If public access is enabled on server.
     *
     * @return the enablePublicIpAccess value.
     */
    Boolean enablePublicIpAccess();

    /**
     * Gets the isReadOnly property: If server database is set to read-only by system maintenance depending on high disk
     * space usage.
     *
     * @return the isReadOnly value.
     */
    Boolean isReadOnly();

    /**
     * Gets the administratorLogin property: The administrator's login name of the servers in the cluster.
     *
     * @return the administratorLogin value.
     */
    String administratorLogin();

    /**
     * Gets the inner com.azure.resourcemanager.cosmosdbforpostgresql.fluent.models.ClusterServerInner object.
     *
     * @return the inner object.
     */
    ClusterServerInner innerModel();
}
