import { Logger } from '@nestjs/common';
import { S3Client } from '@aws-sdk/client-s3';
import { IBackupStorageBackend, StorageBackendCredentials, HealthResult, UsageResult, ListObjectsResult, VeleroBSLConfig, RcloneRemoteConfig } from '../interfaces/backup-storage-backend.interface';
import { StorageBackendProvider } from '../enums/storage-backend-provider.enum';
export declare class GenericS3Backend implements IBackupStorageBackend {
    protected readonly logger: Logger;
    readonly provider: StorageBackendProvider;
    protected buildClient(creds: StorageBackendCredentials): S3Client;
    testConnection(creds: StorageBackendCredentials): Promise<HealthResult>;
    ensureBucket(creds: StorageBackendCredentials): Promise<void>;
    getUsage(creds: StorageBackendCredentials, prefix?: string): Promise<UsageResult>;
    listObjects(creds: StorageBackendCredentials, prefix: string, continuationToken?: string): Promise<ListObjectsResult>;
    deleteObjects(creds: StorageBackendCredentials, keys: string[]): Promise<void>;
    presignDownload(creds: StorageBackendCredentials, key: string, ttlSeconds: number): Promise<string>;
    toVeleroBSL(creds: StorageBackendCredentials): VeleroBSLConfig;
    toRcloneRemote(creds: StorageBackendCredentials): RcloneRemoteConfig;
    protected joinPrefix(...parts: (string | undefined)[]): string;
    /**
     * Helper for backends to write a small probe object then delete it,
     * used by health-check write/delete probe step.
     */
    writeAndDeleteProbe(creds: StorageBackendCredentials, keySuffix?: string): Promise<void>;
}
