import { StreamModeDetailsProps } from './stream/StreamModeDetailsProps';
import { StreamEncryptionProps } from './stream/StreamEncryptionProps';
import { Value } from '../../cloudformation/Value';
import { Tag } from '../Tag';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type StreamAttributes = {
    Arn: Attribute<string>;
};
export type Stream = AwsResource<'AWS::Kinesis::Stream', StreamProperties, StreamAttributes>;
/**
  Creates a Kinesis stream that captures and transports data records that are emitted from data sources. For information about creating streams, see <a href="https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html">CreateStream</a> in the Amazon Kinesis API Reference.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html">the AWS Docs</a>
*/
export declare function stream(streamProps?: StreamProperties): Stream;
/**
  Creates a Kinesis stream that captures and transports data records that are emitted from data sources. For information about creating streams, see <a href="https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html">CreateStream</a> in the Amazon Kinesis API Reference.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesis-stream.html">the AWS Docs</a>
*/
export interface StreamProperties {
    /** <code>StreamModeDetails</code>  <a name="cfn-kinesis-stream-streammodedetails"></a>
  Specifies the capacity mode to which you want to set your data stream. Currently, in Kinesis Data Streams, you can choose between an <strong>on-demand</strong> capacity mode and a <strong>provisioned</strong> capacity mode for your data streams.<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> */
    streamModeDetails?: StreamModeDetailsProps;
    /** <code>StreamEncryption</code>  <a name="cfn-kinesis-stream-streamencryption"></a>
  When specified, enables or updates server-side encryption using an AWS KMS key for a specified stream. Removing this property from your stack template and updating your stack disables encryption.<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> */
    streamEncryption?: StreamEncryptionProps;
    /** <code>RetentionPeriodHours</code>  <a name="cfn-kinesis-stream-retentionperiodhours"></a>
  The number of hours for the data records that are stored in shards to remain accessible. The default value is 24. For more information about the stream retention period, see <a href="https://docs.aws.amazon.com/streams/latest/dev/kinesis-extended-retention.html">Changing the Data Retention Period</a> in the Amazon Kinesis Developer Guide.<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> */
    retentionPeriodHours?: Value<number>;
    /** <code>Tags</code>  <a name="cfn-kinesis-stream-tags"></a>
  An arbitrary set of tags (key–value pairs) to associate with the Kinesis stream. For information about constraints for this property, see <a href="https://docs.aws.amazon.com/streams/latest/dev/tagging.html#tagging-restrictions">Tag Restrictions</a> in the
  Amazon Kinesis Developer Guide: 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?: Tag[];
    /** <code>Name</code>  <a name="cfn-kinesis-stream-name"></a>
  The name of the Kinesis stream. If you don’t specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the stream name. For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html">Name Type</a>.<br />
  If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.<br />
  
  Required: No<br />
  
  Minimum: <code>1</code><br />
  
  Maximum: <code>128</code><br />
  
  Pattern: <code>[a-zA-Z0-9_.-]+</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    name?: Value<string>;
    /** <code>ShardCount</code>  <a name="cfn-kinesis-stream-shardcount"></a>
  The number of shards that the stream uses. For greater provisioned throughput, increase the number of shards.<br />
  
  Required: No<br />
  
  Minimum: <code>1</code><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> */
    shardCount?: Value<number>;
}
