/**
 * Sync Workflow
 *
 * Synchronizes plugins between production and test servers.
 * Supports per-file progress tracking for large file operations.
 *
 * @since v1.0.0
 * @updated v1.38.0 - Added per-file progress tracking
 */
import { EventEmitter } from 'node:events';
import { type SyncAction, type SyncDirection, type SyncOptions, type SyncProgress, type SyncResult } from './sync-types.js';
export type { SyncDirection, SyncAction, SyncProgress, SyncResult, SyncOptions } from './sync-types.js';
/**
 * Sync workflow class
 */
export declare class SyncWorkflow extends EventEmitter {
    private options;
    private currentPhase;
    private totalBytes;
    private bytesTransferred;
    private largeFileThreshold;
    constructor(options: SyncOptions);
    /**
     * Execute sync in the specified direction
     */
    sync(direction: SyncDirection): Promise<SyncResult>;
    /**
     * Report progress with enhanced tracking
     */
    private reportProgress;
    /**
     * Internal sync implementation (wrapped by sleep prevention)
     */
    private syncInternal;
    /**
     * Record action result
     */
    private recordAction;
    /**
     * Execute action with per-file progress tracking
     */
    private executeActionWithProgress;
    /**
     * Check if a filename is a disabled JAR file
     */
    private isDisabledJar;
    /**
     * Get the enabled filename from a disabled filename
     * Converts .jarDIS, .jar.dis, .jar.disabled back to .jar
     */
    private getEnabledFilename;
    /**
     * Plan sync actions
     */
    private planSync;
    /**
     * Get sync preview (dry run)
     */
    preview(direction: SyncDirection): Promise<SyncAction[]>;
}
/**
 * Create a sync workflow
 */
export declare function createSyncWorkflow(options: SyncOptions): SyncWorkflow;
/**
 * Quick sync from prod to test
 */
export declare function syncProdToTest(prodDir: string, testDir: string, disableOnTest?: string[], onProgress?: (progress: SyncProgress) => void): Promise<SyncResult>;
//# sourceMappingURL=sync.d.ts.map