import { type StorageClass } from '@aws-sdk/client-s3'; import { webResourceHandler } from '@balena/pinejs'; import type { WebResourceType as WebResource } from '@balena/sbvr-types'; export interface S3HandlerProps { region: string; accessKey: string; secretKey: string; endpoint: string; bucket: string; maxSize?: number; signedUrlExpireTimeSeconds?: number; signedUrlCacheExpireTimeSeconds?: number; minimumMultipartUploadSize?: number; defaultMultipartUploadSize?: number; storageClass?: StorageClass; } export declare class S3Handler implements webResourceHandler.WebResourceHandler { private readonly config; private readonly bucket; private readonly maxFileSize; private readonly defaultMultipartUploadSize; private readonly minimumMultipartUploadSize; protected readonly signedUrlExpireTimeSeconds: number; protected readonly signedUrlCacheExpireTimeSeconds: number; protected cachedGetSignedUrl: (fileKey: string) => Promise; protected readonly storageClass: StorageClass | undefined; private client; constructor(config: S3HandlerProps); handleFile(resource: webResourceHandler.IncomingFile): Promise; removeFile(href: string): Promise; onPreRespond(webResource: WebResource): Promise; multipartUpload: { begin: (fieldName: string, payload: webResourceHandler.BeginMultipartUploadPayload) => Promise; commit: ({ fileKey, uploadId, filename, providerCommitData, }: webResourceHandler.CommitMultipartUploadPayload) => Promise; cancel: ({ fileKey, uploadId, }: webResourceHandler.CancelMultipartUploadPayload) => Promise; getMinimumPartSize: () => number; getDefaultPartSize: () => number; }; private s3SignUrl; private getS3URL; private getKeyFromHref; private getFileKey; private getUploadParts; private getPartUploadUrl; private getChunkSizesWithParts; }