import { Value } from '../../cloudformation/Value';
import { Tag } from '../Tag';
import { AwsResource } from '../../cloudformation/resources/AwsResource';
/**
  The <code>AWS::QLDB::Ledger</code> resource specifies a new Amazon Quantum Ledger Database (Amazon QLDB) ledger in your AWS account. Amazon QLDB is a fully managed ledger database that provides a transparent, immutable, and cryptographically verifiable transaction log owned by a central trusted authority. You can use QLDB to track all application data changes, and maintain a complete and verifiable history of changes over time.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-ledger.html">the AWS Docs</a>
*/
export type Ledger = AwsResource<'AWS::QLDB::Ledger', LedgerProperties>;
export declare function ledger(ledgerProps: LedgerProperties): Ledger;
/**
  The <code>AWS::QLDB::Ledger</code> resource specifies a new Amazon Quantum Ledger Database (Amazon QLDB) ledger in your AWS account. Amazon QLDB is a fully managed ledger database that provides a transparent, immutable, and cryptographically verifiable transaction log owned by a central trusted authority. You can use QLDB to track all application data changes, and maintain a complete and verifiable history of changes over time.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-ledger.html">the AWS Docs</a>
*/
export interface LedgerProperties {
    /** <p> */
    permissionsMode: Value<string>;
    /** <code>DeletionProtection</code>  <a name="cfn-qldb-ledger-deletionprotection"></a>
  Specifies whether the ledger is protected from being deleted by any user. If not defined during ledger creation, this feature is enabled (<code>true</code>) by default.<br />
  If deletion protection is enabled, you must first disable it before you can delete the ledger. You can disable it by calling the <code>UpdateLedger</code> operation to set this parameter to <code>false</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> */
    deletionProtection?: Value<boolean>;
    /** <code>KmsKey</code>  <a name="cfn-qldb-ledger-kmskey"></a>
  The key in AWS Key Management Service (AWS KMS) to use for encryption of data at rest in the ledger. For more information, see <a href="https://docs.aws.amazon.com/qldb/latest/developerguide/encryption-at-rest.html">Encryption at rest</a> in the
  Amazon QLDB Developer Guide: br />
  Use one of the following options to specify this parameter: */
    kmsKey?: Value<string>;
    /** <code>Tags</code>  <a name="cfn-qldb-ledger-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>Name</code>  <a name="cfn-qldb-ledger-name"></a>
  The name of the ledger that you want to create. The name must be unique among all of the ledgers in your AWS account in the current Region.<br />
  Naming constraints for ledger names are defined in <a href="https://docs.aws.amazon.com/qldb/latest/developerguide/limits.html#limits.naming">Quotas in Amazon QLDB</a> in the
  Amazon QLDB Developer Guide: br />
  
  Required: No<br />
  
  Minimum: <code>1</code><br />
  
  Maximum: <code>32</code><br />
  
  Pattern: <code>(?!^.*--)(?!^[0-9]+$)(?!^-)(?!.*-$)^[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>;
}
