import { Value } from '../../cloudformation/Value';
import { EncryptionInfoProps } from './cluster/EncryptionInfoProps';
import { OpenMonitoringProps } from './cluster/OpenMonitoringProps';
import { ConfigurationInfoProps } from './cluster/ConfigurationInfoProps';
import { BrokerNodeGroupInfoProps } from './cluster/BrokerNodeGroupInfoProps';
import { ClientAuthenticationProps } from './cluster/ClientAuthenticationProps';
import { LoggingInfoProps } from './cluster/LoggingInfoProps';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type ClusterAttributes = {
    Arn: Attribute<string>;
};
export type Cluster = AwsResource<'AWS::MSK::Cluster', ClusterProperties, ClusterAttributes>;
/**
  Creates a new MSK cluster. The following Python 3.6 examples shows how you can create a cluster that’s distributed over two Availability Zones. Before you run this Python script, replace the example subnet and security-group IDs with the IDs of your subnets and security group. When you create an MSK cluster, its brokers get evenly distributed over a number of Availability Zones that’s equal to the number of subnets that you specify in the <code>BrokerNodeGroupInfo</code> parameter. In this example, you can add a third subnet to get a cluster that’s distributed over three Availability Zones.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html">the AWS Docs</a>
*/
export declare function cluster(clusterProps: ClusterProperties): Cluster;
/**
  Creates a new MSK cluster. The following Python 3.6 examples shows how you can create a cluster that’s distributed over two Availability Zones. Before you run this Python script, replace the example subnet and security-group IDs with the IDs of your subnets and security group. When you create an MSK cluster, its brokers get evenly distributed over a number of Availability Zones that’s equal to the number of subnets that you specify in the <code>BrokerNodeGroupInfo</code> parameter. In this example, you can add a third subnet to get a cluster that’s distributed over three Availability Zones.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-msk-cluster.html">the AWS Docs</a>
*/
export interface ClusterProperties {
    /** <code>KafkaVersion</code>  <a name="cfn-msk-cluster-kafkaversion"></a>
  The version of Apache Kafka. You can use Amazon MSK to create clusters that use Apache Kafka versions 1.1.1 and 2.2.1.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    kafkaVersion: Value<string>;
    /** <code>NumberOfBrokerNodes</code>  <a name="cfn-msk-cluster-numberofbrokernodes"></a>
  The number of broker nodes in the cluster.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    numberOfBrokerNodes: Value<number>;
    /** <code>EncryptionInfo</code>  <a name="cfn-msk-cluster-encryptioninfo"></a>
  Includes all encryption-related information.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    encryptionInfo?: EncryptionInfoProps;
    /** <code>OpenMonitoring</code>  <a name="cfn-msk-cluster-openmonitoring"></a>
  The settings for open monitoring.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    openMonitoring?: OpenMonitoringProps;
    /** <code>CurrentVersion</code>  <a name="cfn-msk-cluster-currentversion"></a>
  The version of the cluster that you want to update.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    currentVersion?: Value<string>;
    /** <code>StorageMode</code>  <a name="cfn-msk-cluster-storagemode"></a>
  This controls storage mode for supported storage tiers.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    storageMode?: Value<string>;
    /** <code>ConfigurationInfo</code>  <a name="cfn-msk-cluster-configurationinfo"></a>
  Represents the configuration that you want MSK to use for the cluster.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    configurationInfo?: ConfigurationInfoProps;
    /** <code>BrokerNodeGroupInfo</code>  <a name="cfn-msk-cluster-brokernodegroupinfo"></a>
  Information about the broker nodes in the cluster.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    brokerNodeGroupInfo: BrokerNodeGroupInfoProps;
    /** <code>EnhancedMonitoring</code>  <a name="cfn-msk-cluster-enhancedmonitoring"></a>
  Specifies the level of monitoring for the MSK cluster. The possible values are <code>DEFAULT</code>, <code>PER_BROKER</code>, and <code>PER_TOPIC_PER_BROKER</code>.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    enhancedMonitoring?: Value<string>;
    /** <code>ClusterName</code>  <a name="cfn-msk-cluster-clustername"></a>
  The name of the cluster.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    clusterName: Value<string>;
    /** <code>ClientAuthentication</code>  <a name="cfn-msk-cluster-clientauthentication"></a>
  Includes all client authentication related information.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    clientAuthentication?: ClientAuthenticationProps;
    /** <code>LoggingInfo</code>  <a name="cfn-msk-cluster-logginginfo"></a>
  Logging Info details.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    loggingInfo?: LoggingInfoProps;
    /** <code>Tags</code>  <a name="cfn-msk-cluster-tags"></a>
  Create tags when creating the cluster.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    tags?: Value<{
        [key: string]: Value<string>;
    }>;
}
