import type { NaturalNumber } from "../../../common/CustomTypes/Numerics";
import type { Arn } from "../../CustomTypes/Arn";
import type { AwsResourceCommon, CloudFormationTags } from "../common";
import type { CloudFormationValue } from "../IntrinsicFunctions";
export declare type QueueType = 'AWS::SQS::Queue';
export interface Queue extends AwsResourceCommon {
    Type: QueueType;
    Properties?: QueueProperties;
}
export interface QueueProperties {
    QueueName?: string;
    ContentBasedDeduplication?: boolean;
    DeduplicationScope?: DeduplicationScope;
    FifoThroughputLimit?: FifoThroughputLimit;
    DelaySeconds?: number;
    FifoQueue?: boolean;
    KmsMasterKeyId?: string;
    KmsDataKeyReusePeriodSeconds?: number;
    MaximumMessageSize?: number;
    MessageRetentionPeriod?: number;
    ReceiveMessageWaitTimeSeconds?: number;
    RedrivePolicy?: RedrivePolicy;
    VisibilityTimeout?: number;
    Tags?: CloudFormationTags;
}
export declare type DeduplicationScope = 'messageGroup' | 'queue';
export declare type FifoThroughputLimit = 'perMessageGroupId' | 'perQueue';
export interface RedrivePolicy {
    deadLetterTargetArn: CloudFormationValue<Arn>;
    maxReceiveCount: NaturalNumber;
}
