import { RemovalPolicy } from 'aws-cdk-lib'; import type { IDistribution } from 'aws-cdk-lib/aws-cloudfront'; import { Bucket, EventType, NotificationKeyFilter } from 'aws-cdk-lib/aws-s3'; import { BucketDeployment } from 'aws-cdk-lib/aws-s3-deployment'; import { IGrantable } from 'aws-cdk-lib/aws-iam'; import { Function } from 'aws-cdk-lib/aws-lambda'; import { StringParameter } from 'aws-cdk-lib/aws-ssm'; import { DotStack } from '../constructs/Stack'; import { AddNodeFunctionOptions } from './node-function'; export { EventType } from 'aws-cdk-lib/aws-s3'; export { RemovalPolicy } from 'aws-cdk-lib'; interface BucketEventHandlerOptions { events: EventType[]; handler: Omit | Function; keyFilters?: BucketKeyFilterOptions[]; } interface BucketKeyFilterOptions extends NotificationKeyFilter { } export interface AddBucketDeploymentOptions { bucket: Bucket; distribution?: IDistribution; invalidateCache?: boolean; removalPolicy?: RemovalPolicy.DESTROY | RemovalPolicy.RETAIN; scope: DotStack; sourcePath: string; } export interface AddBucketDeploymentResult { deployment: BucketDeployment; } export interface AddBucketOptions { autoDeleteObjects?: boolean; cors?: boolean; enableACLs?: boolean; eventBridgeEnabled?: boolean; expireAfterDays?: number; handlers?: BucketEventHandlerOptions[]; name: string; publicReadAccess?: boolean; retain?: boolean; scope: DotStack; staticHosting?: boolean; versioning?: boolean; } interface AddBucketResult { bucket: Bucket; deployment?: BucketDeployment; params: { arnParam: StringParameter; nameParam: StringParameter; }; } interface GrantFullBucketAccessOptions { bucket?: Bucket; bucketName?: string; consumers: IGrantable[]; scope: DotStack; } export declare const addBucket: (options: AddBucketOptions) => AddBucketResult; export declare const addBucketDeployment: (options: AddBucketDeploymentOptions) => AddBucketDeploymentResult; export declare const grantFullBucketAccess: ({ bucket, bucketName, consumers, scope }: GrantFullBucketAccessOptions) => Promise;