/**
 * Backup Workflow
 *
 * Handles backup creation, restoration, and management
 */
import { EventEmitter } from 'node:events';
import { type RestoreOptions } from '../infrastructure/backup.js';
/**
 * Backup type
 */
export type BackupType = 'plugins' | 'config' | 'full';
/**
 * Backup metadata
 */
export interface BackupMetadata {
    filename: string;
    path: string;
    type: BackupType;
    created: Date;
    size: number;
    fileCount?: number;
    description?: string;
}
/**
 * Backup progress event
 */
export interface BackupProgress {
    phase: 'scanning' | 'compressing' | 'writing' | 'done' | 'error';
    current?: number;
    total?: number;
    filename?: string;
    message?: string;
}
/**
 * Backup workflow options
 */
export interface BackupWorkflowOptions {
    backupDir: string;
    maxBackups?: number;
    description?: string;
    onProgress?: (progress: BackupProgress) => void;
}
/**
 * Backup workflow class
 */
export declare class BackupWorkflow extends EventEmitter {
    private options;
    constructor(options: BackupWorkflowOptions);
    /**
     * Create a backup of a directory
     */
    create(sourceDir: string, type?: BackupType): Promise<BackupMetadata>;
    /**
     * Restore a backup
     */
    restore(backupPath: string, targetDir: string, options?: RestoreOptions): Promise<{
        restoredFiles: number;
    }>;
    /**
     * List available backups
     */
    list(type?: BackupType): Promise<BackupMetadata[]>;
    /**
     * Delete a backup
     */
    delete(backupPath: string): Promise<void>;
    /**
     * Delete old backups, keeping only the specified number
     */
    cleanup(type: BackupType, keepCount: number): Promise<string[]>;
    /**
     * Get backup contents without extracting
     */
    getContents(backupPath: string): Promise<string[]>;
    /**
     * Get detailed backup information
     */
    getInfo(backupPath: string): Promise<BackupMetadata & {
        files: string[];
    }>;
}
/**
 * Create a backup workflow
 */
export declare function createBackupWorkflow(options: BackupWorkflowOptions): BackupWorkflow;
/**
 * Quick backup of plugins directory
 */
export declare function quickBackup(pluginsDir: string, backupDir: string, description?: string): Promise<BackupMetadata>;
/**
 * Quick restore of latest backup
 */
export declare function quickRestore(backupDir: string, targetDir: string, type?: BackupType): Promise<{
    restoredFiles: number;
} | null>;
//# sourceMappingURL=backup.d.ts.map