import { OnModuleDestroy } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Readable, PassThrough } from 'stream';
export declare const DEFAULT_S3_REPROBE_INTERVAL_MS = 60000;
export declare function isMissingObjectError(error: unknown): boolean;
export declare class StorageService implements OnModuleDestroy {
    private readonly configService;
    private readonly logger;
    private readonly storageType;
    private readonly localPath;
    private s3Client;
    private s3Bucket;
    private s3Available;
    private s3ReprobeTimer;
    private readonly s3ReprobeIntervalMs;
    constructor(configService: ConfigService);
    onModuleDestroy(): void;
    private initializeS3Bucket;
    private warnLocalFallback;
    private startS3Reprobe;
    private clearS3Reprobe;
    getCurrentStorageType(): string;
    isS3Available(): boolean;
    private lastS3Check;
    private s3CheckInFlight;
    refreshS3Availability(): Promise<boolean>;
    listFiles(): Promise<string[]>;
    iterateFiles(prefix?: string): AsyncGenerator<string>;
    getFile(filePath: string): Promise<Buffer>;
    putFile(filePath: string, data: Buffer): Promise<void>;
    deleteFile(filePath: string): Promise<void>;
    getFileCount(): Promise<{
        count: number;
        sizeBytes: number;
    }>;
    private getS3CountAndSize;
    createExportStream(): Promise<PassThrough>;
    private listAllFiles;
    importFromStream(inputStream: Readable): Promise<number>;
    private listLocalFiles;
    private iterateLocalFiles;
    private getLocalFile;
    private putLocalFile;
    private deleteLocalFile;
    private listS3Files;
    private iterateS3Files;
    private getS3File;
    private putS3File;
    private deleteS3File;
}
