import { Construct } from 'constructs';
import { ITopic, TopicBase } from './topic-base';
import { IRole } from '../../aws-iam';
import { IKey } from '../../aws-kms';
/**
 * Properties for a new SNS topic
 */
export interface TopicProps {
    /**
     * A developer-defined string that can be used to identify this SNS topic.
     *
     * @default None
     */
    readonly displayName?: string;
    /**
     * A name for the topic.
     *
     * If you don't specify a name, AWS CloudFormation generates a unique
     * physical ID and uses that ID for the topic name. For more information,
     * see Name Type.
     *
     * @default Generated name
     */
    readonly topicName?: string;
    /**
     * A KMS Key, either managed by this CDK app, or imported.
     *
     * @default None
     */
    readonly masterKey?: IKey;
    /**
     * Enables content-based deduplication for FIFO topics.
     *
     * @default None
     */
    readonly contentBasedDeduplication?: boolean;
    /**
     * Set to true to create a FIFO topic.
     *
     * @default None
     */
    readonly fifo?: boolean;
    /**
     * The list of delivery status logging configurations for the topic.
     *
     * For more information, see https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html.
     *
     * @default None
     */
    readonly loggingConfigs?: LoggingConfig[];
}
/**
 * A logging configuration for delivery status of messages sent from SNS topic to subscribed endpoints.
 *
 * For more information, see https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html.
 */
export interface LoggingConfig {
    /**
     * Indicates one of the supported protocols for the SNS topic.
     */
    readonly protocol: LoggingProtocol;
    /**
     * The IAM role to be used when logging failed message deliveries in Amazon CloudWatch.
     *
     * @default None
     */
    readonly failureFeedbackRole?: IRole;
    /**
     * The IAM role to be used when logging successful message deliveries in Amazon CloudWatch.
     *
     * @default None
     */
    readonly successFeedbackRole?: IRole;
    /**
     * The percentage of successful message deliveries to be logged in Amazon CloudWatch.
     *
     * Valid values are integer between 0-100
     *
     * @default None
     */
    readonly successFeedbackSampleRate?: number;
}
/**
 * The type of supported protocol for delivery status logging.
 */
export declare enum LoggingProtocol {
    /**
     * HTTP
     */
    HTTP = "http/s",
    /**
     * Amazon Simple Queue Service
     */
    SQS = "sqs",
    /**
     * AWS Lambda
     */
    LAMBDA = "lambda",
    /**
     * Amazon Kinesis Data Firehose
     */
    FIREHOSE = "firehose",
    /**
     * Platform application endpoint
     */
    APPLICATION = "application"
}
/**
 * A new SNS topic
 */
export declare class Topic extends TopicBase {
    /**
     * Import an existing SNS topic provided an ARN
     *
     * @param scope The parent creating construct
     * @param id The construct's name
     * @param topicArn topic ARN (i.e. arn:aws:sns:us-east-2:444455556666:MyTopic)
     */
    static fromTopicArn(scope: Construct, id: string, topicArn: string): ITopic;
    readonly topicArn: string;
    readonly topicName: string;
    readonly contentBasedDeduplication: boolean;
    readonly fifo: boolean;
    protected readonly autoCreatePolicy: boolean;
    private readonly loggingConfigs;
    constructor(scope: Construct, id: string, props?: TopicProps);
    private renderLoggingConfigs;
    /**
     * Adds a delivery status logging configuration to the topic.
     */
    addLoggingConfig(config: LoggingConfig): void;
}
