import { S3Client } from '@aws-sdk/client-s3';
import { S3Body, S3CopyObjectOptions, S3CopyObjectResult, S3DeleteObjectResult, S3GetObjectResult, S3ListObjectsOptions, S3ListObjectsResult, S3ModuleOptions, S3ObjectOptions, S3PutObjectResult, S3SignedUrlOptions, S3UploadOptions, S3UploadResult } from './s3.interface';
export declare class S3Service {
    private readonly options;
    private readonly s3Client;
    private readonly logger?;
    constructor(options: S3ModuleOptions, s3Client: S3Client);
    upload(key: string, body: S3Body, options?: S3UploadOptions): Promise<S3UploadResult>;
    putObject(key: string, body: S3Body, options?: S3UploadOptions): Promise<S3PutObjectResult>;
    uploadObject(key: string, body: S3Body, options?: S3UploadOptions): Promise<S3PutObjectResult>;
    deleteObject(key: string, options?: S3ObjectOptions): Promise<S3DeleteObjectResult>;
    copyObject(sourceKey: string, destinationKey: string, options?: S3CopyObjectOptions): Promise<S3CopyObjectResult>;
    getObject(key: string, options?: S3ObjectOptions): Promise<S3GetObjectResult>;
    listObjects(options?: S3ListObjectsOptions): Promise<S3ListObjectsResult>;
    getSignedUrl(key: string, options?: S3SignedUrlOptions): Promise<string>;
    private createCopyObjectParams;
    private createPutObjectParams;
    private buildCopySource;
    private resolveBucket;
    private resolveSigningClient;
    private log;
    private logError;
}
