import cdk = require('@aws-cdk/cdk');
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html
     */
    interface AliasResourceProps {
        /**
         * ``AWS::KMS::Alias.AliasName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html#cfn-kms-alias-aliasname
         */
        aliasName: string | cdk.Token;
        /**
         * ``AWS::KMS::Alias.TargetKeyId``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html#cfn-kms-alias-targetkeyid
         */
        targetKeyId: string | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-alias.html
     */
    class AliasResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * Creates a new ``AWS::KMS::Alias``.
         *
         * @param parent     the ``cdk.Construct`` this ``AliasResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``AliasResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: AliasResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html
     */
    interface KeyResourceProps {
        /**
         * ``AWS::KMS::Key.KeyPolicy``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keypolicy
         */
        keyPolicy: object | cdk.Token;
        /**
         * ``AWS::KMS::Key.Description``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-description
         */
        description?: string | cdk.Token;
        /**
         * ``AWS::KMS::Key.Enabled``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-enabled
         */
        enabled?: boolean | cdk.Token;
        /**
         * ``AWS::KMS::Key.EnableKeyRotation``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-enablekeyrotation
         */
        enableKeyRotation?: boolean | cdk.Token;
        /**
         * ``AWS::KMS::Key.KeyUsage``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keyusage
         */
        keyUsage?: string | cdk.Token;
        /**
         * ``AWS::KMS::Key.Tags``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-tags
         */
        tags?: Array<cdk.Tag | cdk.Token> | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html
     */
    class KeyResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * @cloudformation_attribute Arn
         */
        readonly keyArn: KeyArn;
        /**
         * Creates a new ``AWS::KMS::Key``.
         *
         * @param parent     the ``cdk.Construct`` this ``KeyResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``KeyResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: KeyResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
export declare class KeyArn extends cdk.Arn {
}
