import { ConfigService } from "@nestjs/config";
import { FieldMetadata } from "../../entities/field-metadata.entity";
import { Media } from "../../entities/media.entity";
import { MediaStorageProvider } from "../../interfaces";
import { DiskFileService, S3FileService } from "../../services/file";
import { Readable } from "stream";
import { MediaRepository } from "../../repository/media.repository";
export declare class FileS3StorageProvider<T> implements MediaStorageProvider<T> {
    private readonly configService;
    readonly diskFileService: DiskFileService;
    readonly s3FileService: S3FileService;
    readonly mediaRepository: MediaRepository;
    private logger;
    constructor(configService: ConfigService, diskFileService: DiskFileService, s3FileService: S3FileService, mediaRepository: MediaRepository);
    storeStreams(streamPairs: [Readable, string][], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;
    retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;
    store(files: Express.Multer.File[], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;
    delete(entity: T, mediaFieldMetadata: FieldMetadata): Promise<void>;
    deleteByMediaRecord(media: Media): Promise<void>;
    private getEffectiveRegion;
    private getFullFilePath;
    private getFileName;
}
//# sourceMappingURL=file-s3-storage-provider.d.ts.map