import { S3ClientConfig } from '@aws-sdk/client-s3'; import { BucketExistsArgs, CreateBucketArgs, CreateBucketResponse, DeleteBucketArgs, DeleteFileArgs, DeleteObjectArgs, DownloadFileArgs, GetMetadataArgs, GetObjectArgs, GetObjectResponse, GetPresignedUrlArgs, HeadObject, IterateFilesArgs, IterateFilesResponseItem, ListFilesArgs, PutBucketPolicyArgs, UploadContentArgs, UploadFileArgs, UploadStreamArgs } from './S3Types'; /** * Wrapper for AWS S3 client * * All commonly used operations with S3 will be implemented here to provide a consistent interface across the codebase. */ export interface IAwsS3 { /** * Upload a local file to S3 */ uploadFile(args: UploadFileArgs): Promise; /** * Upload contents of a file stored in memory directly to S3 */ uploadContent(args: UploadContentArgs): Promise; /** * Upload stream to S3 * * @returns number of bytes uploaded */ uploadStream(args: UploadStreamArgs): Promise; /** * Download a file from S3 to local file system */ downloadFile({ bucket, remotePath, filePath }: DownloadFileArgs): Promise; /** * List files in a particular path in a bucket */ listFiles({ bucket, remotePath }: ListFilesArgs): Promise; iterateFiles({ bucket, remotePath, pageSize }: IterateFilesArgs): AsyncGenerator; /** * Delete a file from S3 */ deleteFile(args: DeleteFileArgs): Promise; /** * Get object head */ getObjectHead({ bucket, remotePath }: GetMetadataArgs): Promise; /** * Gets an object from a bucket */ getObject({ bucket, key }: GetObjectArgs): Promise; /** * Removes an object from a bucket */ deleteObject({ bucket, key }: DeleteObjectArgs): Promise; /** * Creates a S3 bucket */ createBucket({ bucket }: CreateBucketArgs): Promise; /** * Removes a S3 bucket */ deleteBucket({ bucket }: DeleteBucketArgs): Promise; /** * Checks if S3 bucket exists */ bucketExists({ bucket }: BucketExistsArgs): Promise; /** * Sets a permission policy on a S3 bucket */ putBucketPolicy({ bucket, policy }: PutBucketPolicyArgs): Promise; /** * Get a pre-signed URL for an object in a bucket * @param bucket - bucket name * @param remotePath - path to the object in the bucket * @param expiration - URL expiration time in seconds */ getPresignedUrl({ bucket, remotePath, expirationInSec }: GetPresignedUrlArgs): Promise; } /** * Wrapper for AWS S3 client * * All commonly used operations with S3 will be implemented here to provide a consistent interface across the codebase. */ export declare class AwsS3 implements IAwsS3 { private client; /** * @param config.forcePathStyle - Whether to use path style URLs for S3 requests. * Defaults to the value of the `AWS_S3_FORCE_PATH_STYLE_URLS` environment variable or false if not set. */ constructor(config?: S3ClientConfig); uploadFile({ filePath, bucket, remotePath, contentType, metadata, cacheControl, storageClass, }: UploadFileArgs): Promise; uploadContent({ content, bucket, remotePath, contentType, metadata, cacheControl, storageClass, }: UploadContentArgs): Promise; uploadStream({ bucket, remotePath, stream, storageClass }: UploadStreamArgs): Promise; downloadFile({ bucket, remotePath, filePath }: DownloadFileArgs): Promise; iterateFiles({ bucket, remotePath, pageSize }: IterateFilesArgs): AsyncGenerator<{ key: string; lastModified: Date | undefined; size: number | undefined; }, void, unknown>; listFiles({ bucket, remotePath, maxKeys, startAfterKey }: ListFilesArgs): Promise; deleteFile({ bucket, remotePath }: DeleteFileArgs): Promise; getObjectHead({ bucket, remotePath }: GetMetadataArgs): Promise; getObject({ bucket, key }: GetObjectArgs): Promise; deleteObject({ bucket, key }: DeleteObjectArgs): Promise; createBucket({ bucket }: CreateBucketArgs): Promise; deleteBucket({ bucket }: DeleteBucketArgs): Promise; bucketExists({ bucket }: BucketExistsArgs): Promise; putBucketPolicy({ bucket, policy }: PutBucketPolicyArgs): Promise; getPresignedUrl({ bucket, remotePath, expirationInSec }: GetPresignedUrlArgs): Promise; }