import type { VisionClawConfig } from "../config/types.js";
export type BackupProvider = "gdrive" | "tos";
export interface BackupUploadProgress {
    uploadedBytes: number;
}
export interface BackupUploadBaseOptions {
    localPath: string;
    name: string;
    contentType: string;
    onProgress?: (progress: BackupUploadProgress) => void;
}
export interface GdriveBackupUploadOptions extends BackupUploadBaseOptions {
    provider: "gdrive";
    config: VisionClawConfig;
    ownerEmail: string;
}
export interface TosBackupUploadOptions extends BackupUploadBaseOptions {
    provider: "tos";
    tos: {
        accessKeyId: string;
        accessKeySecret: string;
        bucket: string;
        region: string;
        endpoint: string;
        publicEndpoint: string;
        signedUrlExpiresSeconds: number;
        key: string;
    };
}
export type BackupUploadOptions = GdriveBackupUploadOptions | TosBackupUploadOptions;
export interface BackupUploadResult {
    provider: BackupProvider;
    location: string;
    signedUrl?: string;
    key?: string;
    bucket?: string;
    sizeBytes?: number;
    expiresAt?: string;
}
export declare function buildBackupTosKey(config: VisionClawConfig, zipName: string): string;
export declare function uploadBackup(options: BackupUploadOptions): Promise<BackupUploadResult>;
export declare function uploadBackupToGoogleDrive(options: GdriveBackupUploadOptions): Promise<BackupUploadResult>;
export declare function uploadBackupToTos(options: TosBackupUploadOptions): Promise<BackupUploadResult>;
//# sourceMappingURL=backup-uploader.d.ts.map