import * as cdk from "@aws-cdk/core"; import * as s3 from "@aws-cdk/aws-s3"; import { Function as Fn, FunctionProps, FunctionDefinition } from "./Function"; import { Queue } from "./Queue"; import { Topic } from "./Topic"; import { Permissions } from "./util/permission"; export interface BucketProps { readonly s3Bucket?: s3.Bucket | s3.BucketProps; readonly notifications?: (FunctionDefinition | BucketFunctionNotificationProps | Queue | BucketQueueNotificationProps | Topic | BucketTopicNotificationProps)[]; readonly defaultFunctionProps?: FunctionProps; } export interface BucketNotificationProps { readonly events?: s3.EventType[]; readonly filters?: s3.NotificationKeyFilter[]; } export interface BucketFunctionNotificationProps { readonly function: FunctionDefinition; readonly notificationProps?: BucketNotificationProps; } export interface BucketQueueNotificationProps { readonly queue: Queue; readonly notificationProps?: BucketNotificationProps; } export interface BucketTopicNotificationProps { readonly topic: Topic; readonly notificationProps?: BucketNotificationProps; } export declare class Bucket extends cdk.Construct { readonly s3Bucket: s3.Bucket; private readonly notifications; private readonly permissionsAttachedForAllNotifications; private readonly defaultFunctionProps?; constructor(scope: cdk.Construct, id: string, props?: BucketProps); get bucketArn(): string; get bucketName(): string; get notificationFunctions(): Fn[]; addNotifications(scope: cdk.Construct, notifications: (FunctionDefinition | BucketFunctionNotificationProps | Queue | BucketQueueNotificationProps | Topic | BucketTopicNotificationProps)[]): void; attachPermissions(permissions: Permissions): void; attachPermissionsToNotification(index: number, permissions: Permissions): void; private addNotification; private addQueueNotification; private addTopicNotification; private addFunctionNotification; }