import { SSESpecificationProps } from './table/SSESpecificationProps';
import { KinesisStreamSpecificationProps } from './table/KinesisStreamSpecificationProps';
import { StreamSpecificationProps } from './table/StreamSpecificationProps';
import { ContributorInsightsSpecificationProps } from './table/ContributorInsightsSpecificationProps';
import { ImportSourceSpecificationProps } from './table/ImportSourceSpecificationProps';
import { PointInTimeRecoverySpecificationProps } from './table/PointInTimeRecoverySpecificationProps';
import { ProvisionedThroughputProps } from './table/ProvisionedThroughputProps';
import { Value } from '../../cloudformation/Value';
import { AttributeDefinitionProps } from './table/AttributeDefinitionProps';
import { GlobalSecondaryIndexProps } from './table/GlobalSecondaryIndexProps';
import { KeySchemaProps } from './table/KeySchemaProps';
import { LocalSecondaryIndexProps } from './table/LocalSecondaryIndexProps';
import { Tag } from '../Tag';
import { TimeToLiveSpecificationProps } from './table/TimeToLiveSpecificationProps';
import { Attribute } from '../../cloudformation/Attribute';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
export type TableAttributes = {
    Arn: Attribute<string>;
    StreamArn: Attribute<string>;
};
export type Table = AwsResource<'AWS::DynamoDB::Table', TableProperties, TableAttributes>;
/**
  The <code>AWS::DynamoDB::Table</code> resource creates a DynamoDB table. For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html">CreateTable</a> in the <em>Amazon DynamoDB API Reference</em>.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html">the AWS Docs</a>
*/
export declare function table(tableProps: TableProperties): Table;
/**
  The <code>AWS::DynamoDB::Table</code> resource creates a DynamoDB table. For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html">CreateTable</a> in the <em>Amazon DynamoDB API Reference</em>.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html">the AWS Docs</a>
*/
export interface TableProperties {
    /** <code>SSESpecification</code>  <a name="cfn-dynamodb-table-ssespecification"></a>
  Specifies the settings to enable server-side 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-some-interrupt">Some interruptions</a> */
    sSESpecification?: SSESpecificationProps;
    /** <code>KinesisStreamSpecification</code>  <a name="cfn-dynamodb-table-kinesisstreamspecification"></a>
  The Kinesis Data Streams configuration for the specified table.<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> */
    kinesisStreamSpecification?: KinesisStreamSpecificationProps;
    /** <code>StreamSpecification</code>  <a name="cfn-dynamodb-table-streamspecification"></a>
  The settings for the DynamoDB table stream, which capture changes to items stored in the table.<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> */
    streamSpecification?: StreamSpecificationProps;
    /** <code>ContributorInsightsSpecification</code>  <a name="cfn-dynamodb-table-contributorinsightsspecification"></a>
  The settings used to enable or disable CloudWatch Contributor Insights for the specified table.<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> */
    contributorInsightsSpecification?: ContributorInsightsSpecificationProps;
    /** <code>ImportSourceSpecification</code>  <a name="cfn-dynamodb-table-importsourcespecification"></a>
  Specifies the properties of data being imported from the S3 bucket source to the table.<br />
  If you specify the <code>ImportSourceSpecification</code> property, and also specify either the <code>StreamSpecification</code>, the <code>TableClass</code> property, or the <code>DeletionProtectionEnabled</code> property, the IAM entity creating/updating stack must have <code>UpdateTable</code> permission.
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement">Replacement</a> */
    importSourceSpecification?: ImportSourceSpecificationProps;
    /** <code>PointInTimeRecoverySpecification</code>  <a name="cfn-dynamodb-table-pointintimerecoveryspecification"></a>
  The settings used to enable point in time recovery.<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> */
    pointInTimeRecoverySpecification?: PointInTimeRecoverySpecificationProps;
    /** <code>ProvisionedThroughput</code>  <a name="cfn-dynamodb-table-provisionedthroughput"></a>
  Throughput for the specified table, which consists of values for <code>ReadCapacityUnits</code> and <code>WriteCapacityUnits</code>. For more information about the contents of a provisioned throughput structure, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ProvisionedThroughput.html">Amazon DynamoDB Table ProvisionedThroughput</a>.<br />
  If you set <code>BillingMode</code> as <code>PROVISIONED</code>, you must specify this property. If you set <code>BillingMode</code> as <code>PAY_PER_REQUEST</code>, you cannot specify this property.<br />
  
  Required: Conditional<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> */
    provisionedThroughput?: ProvisionedThroughputProps;
    /** <code>TableName</code>  <a name="cfn-dynamodb-table-tablename"></a>
  A name for the table. If you don’t specify a name, AWS CloudFormation generates a unique physical ID and uses that ID for the table 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.
  
  Required: No<br />
  
  Minimum: <code>3</code><br />
  
  Maximum: <code>255</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> */
    tableName?: Value<string>;
    /** <code>AttributeDefinitions</code>  <a name="cfn-dynamodb-table-attributedefinitions"></a>
  A list of attributes that describe the key schema for the table and indexes.<br />
  This property is required to create a DynamoDB table.<br />
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt">Some interruptions</a>. Replacement if you edit an existing AttributeDefinition.<br />
  
  Required: Conditional<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> */
    attributeDefinitions?: AttributeDefinitionProps[];
    /** <p> */
    billingMode?: Value<string>;
    /** <p> */
    globalSecondaryIndexes?: GlobalSecondaryIndexProps[];
    /** <code>KeySchema</code>  <a name="cfn-dynamodb-table-keyschema"></a>
  Specifies the attributes that make up the primary key for the table. The attributes in the <code>KeySchema</code> property must also be defined in the <code>AttributeDefinitions</code> property.<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> */
    keySchema: KeySchemaProps[];
    /** <code>LocalSecondaryIndexes</code>  <a name="cfn-dynamodb-table-localsecondaryindexes"></a>
  Local secondary indexes to be created on the table. You can create up to 5 local secondary indexes. Each index is scoped to a given hash key value. The size of each hash key can be up to 10 gigabytes.<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> */
    localSecondaryIndexes?: LocalSecondaryIndexProps[];
    /** <code>DeletionProtectionEnabled</code>  <a name="cfn-dynamodb-table-deletionprotectionenabled"></a>
  Determines if a table is protected from deletion. When enabled, the table cannot be deleted by any user or process. This setting is disabled by default. For more information, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.Basics.html#WorkingWithTables.Basics.DeletionProtection">Using deletion protection</a> in the
  Amazon DynamoDBDeveloper 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> */
    deletionProtectionEnabled?: Value<boolean>;
    /** <code>TableClass</code>  <a name="cfn-dynamodb-table-tableclass"></a>
  The table class of the new table. Valid values are <code>STANDARD</code> and <code>STANDARD_INFREQUENT_ACCESS</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> */
    tableClass?: Value<string>;
    /** <code>Tags</code>  <a name="cfn-dynamodb-table-tags"></a>
  An array of key-value pairs to apply to this resource.<br />
  For more information, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html">Tag</a>.<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>TimeToLiveSpecification</code>  <a name="cfn-dynamodb-table-timetolivespecification"></a>
  Specifies the Time to Live (TTL) settings for the table.<br />
  For detailed information about the limits in DynamoDB, see <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html">Limits in Amazon DynamoDB</a> in the Amazon DynamoDB Developer Guide.
  
  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> */
    timeToLiveSpecification?: TimeToLiveSpecificationProps;
}
