import * as cdk from "@aws-cdk/core"; import * as sns from "@aws-cdk/aws-sns"; import * as snsSubscriptions from "@aws-cdk/aws-sns-subscriptions"; import { Function as Fn, FunctionProps, FunctionDefinition } from "./Function"; import { Queue } from "./Queue"; import { Permissions } from "./util/permission"; export interface TopicProps { readonly snsTopic?: sns.ITopic | sns.TopicProps; readonly subscribers?: (FunctionDefinition | TopicFunctionSubscriberProps | Queue | TopicQueueSubscriberProps)[]; readonly defaultFunctionProps?: FunctionProps; } export interface TopicFunctionSubscriberProps { readonly function: FunctionDefinition; readonly subscriberProps?: snsSubscriptions.LambdaSubscriptionProps; } export interface TopicQueueSubscriberProps { readonly queue: Queue; readonly subscriberProps?: snsSubscriptions.SqsSubscriptionProps; } export declare class Topic extends cdk.Construct { readonly snsTopic: sns.Topic; private readonly subscribers; private readonly permissionsAttachedForAllSubscribers; private readonly defaultFunctionProps?; constructor(scope: cdk.Construct, id: string, props?: TopicProps); get topicArn(): string; get topicName(): string; get subscriberFunctions(): Fn[]; get snsSubscriptions(): sns.Subscription[]; addSubscribers(scope: cdk.Construct, subscribers: (FunctionDefinition | TopicFunctionSubscriberProps | Queue | TopicQueueSubscriberProps)[]): void; attachPermissions(permissions: Permissions): void; attachPermissionsToSubscriber(index: number, permissions: Permissions): void; private addSubscriber; private addQueueSubscriber; private addFunctionSubscriber; }