import cdk = require('@aws-cdk/cdk');
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html
     */
    interface QueueResourceProps {
        /**
         * ``AWS::SQS::Queue.ContentBasedDeduplication``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-contentbaseddeduplication
         */
        contentBasedDeduplication?: boolean | cdk.Token;
        /**
         * ``AWS::SQS::Queue.DelaySeconds``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-delayseconds
         */
        delaySeconds?: number | cdk.Token;
        /**
         * ``AWS::SQS::Queue.FifoQueue``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-fifoqueue
         */
        fifoQueue?: boolean | cdk.Token;
        /**
         * ``AWS::SQS::Queue.KmsDataKeyReusePeriodSeconds``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-kmsdatakeyreuseperiodseconds
         */
        kmsDataKeyReusePeriodSeconds?: number | cdk.Token;
        /**
         * ``AWS::SQS::Queue.KmsMasterKeyId``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-kmsmasterkeyid
         */
        kmsMasterKeyId?: string | cdk.Token;
        /**
         * ``AWS::SQS::Queue.MaximumMessageSize``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-maxmesgsize
         */
        maximumMessageSize?: number | cdk.Token;
        /**
         * ``AWS::SQS::Queue.MessageRetentionPeriod``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-msgretentionperiod
         */
        messageRetentionPeriod?: number | cdk.Token;
        /**
         * ``AWS::SQS::Queue.QueueName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-name
         */
        queueName?: string | cdk.Token;
        /**
         * ``AWS::SQS::Queue.ReceiveMessageWaitTimeSeconds``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-receivemsgwaittime
         */
        receiveMessageWaitTimeSeconds?: number | cdk.Token;
        /**
         * ``AWS::SQS::Queue.RedrivePolicy``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-redrive
         */
        redrivePolicy?: object | cdk.Token;
        /**
         * ``AWS::SQS::Queue.VisibilityTimeout``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-visiblitytimeout
         */
        visibilityTimeout?: number | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html
     */
    class QueueResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * @cloudformation_attribute Arn
         */
        readonly queueArn: QueueArn;
        /**
         * @cloudformation_attribute QueueName
         */
        readonly queueName: QueueName;
        /**
         * Creates a new ``AWS::SQS::Queue``.
         *
         * @param parent     the ``cdk.Construct`` this ``QueueResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``QueueResource``
         */
        constructor(parent: cdk.Construct, name: string, properties?: QueueResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
export declare class QueueArn extends cdk.Arn {
}
export declare class QueueName extends cdk.Token {
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html
     */
    interface QueuePolicyResourceProps {
        /**
         * ``AWS::SQS::QueuePolicy.PolicyDocument``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html#cfn-sqs-queuepolicy-policydoc
         */
        policyDocument: object | cdk.Token;
        /**
         * ``AWS::SQS::QueuePolicy.Queues``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html#cfn-sqs-queuepolicy-queues
         */
        queues: Array<string | cdk.Token> | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html
     */
    class QueuePolicyResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * Creates a new ``AWS::SQS::QueuePolicy``.
         *
         * @param parent     the ``cdk.Construct`` this ``QueuePolicyResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``QueuePolicyResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: QueuePolicyResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
