/**
 * Preview Types
 *
 * Type definitions for dry run / operation preview functionality.
 *
 * @since v1.32.0
 */
/**
 * Types of operations that can be previewed
 */
export type OperationType = 'sync' | 'migrate' | 'update' | 'download' | 'backup' | 'restore' | 'batch-update';
/**
 * Types of changes that can occur
 */
export type ChangeType = 'add' | 'remove' | 'modify' | 'unchanged' | 'skip' | 'conflict';
/**
 * A single file/plugin change
 */
export interface FileChange {
    /** Type of change */
    type: ChangeType;
    /** Full path to the file */
    path: string;
    /** Filename only */
    filename: string;
    /** Plugin name (if applicable) */
    pluginName?: string;
    /** Current/old version */
    oldVersion?: string;
    /** New version to be installed */
    newVersion?: string;
    /** Current file size in bytes */
    oldSize?: number;
    /** New file size in bytes */
    newSize?: number;
    /** Human-readable reason for this change */
    reason?: string;
    /** Source of the new file (modrinth, spigot, etc.) */
    source?: string;
}
/**
 * Summary of all changes
 */
export interface PreviewSummary {
    /** Total number of changes (excluding unchanged) */
    totalChanges: number;
    /** Files to be added */
    added: number;
    /** Files to be removed */
    removed: number;
    /** Files to be modified/updated */
    modified: number;
    /** Files that won't change */
    unchanged: number;
    /** Files being skipped */
    skipped: number;
    /** Files with conflicts */
    conflicts: number;
    /** Net size change in bytes (negative = freeing space) */
    totalSizeChange: number;
    /** Total download size in bytes */
    totalDownloadSize: number;
}
/**
 * Complete operation preview
 */
export interface OperationPreview {
    /** Type of operation */
    operation: OperationType;
    /** When preview was generated */
    timestamp: string;
    /** Operation-specific title */
    title: string;
    /** Operation-specific description */
    description?: string;
    /** Summary of changes */
    summary: PreviewSummary;
    /** List of individual changes */
    changes: FileChange[];
    /** Warning messages */
    warnings: string[];
    /** Error messages that would prevent operation */
    errors: string[];
    /** Estimated duration in milliseconds */
    estimatedDuration?: number;
    /** Space required in bytes */
    spaceRequired?: number;
    /** Space that would be freed in bytes */
    spaceFreed?: number;
    /** Whether the operation can proceed */
    canProceed: boolean;
}
/**
 * Options for generating previews
 */
export interface PreviewOptions {
    /** Include unchanged files in the preview */
    includeUnchanged?: boolean;
    /** Calculate estimated time */
    estimateTime?: boolean;
    /** Check disk space availability */
    checkSpace?: boolean;
    /** Include detailed reasons for each change */
    includeReasons?: boolean;
}
/**
 * Direction for sync operations
 */
export type SyncDirection = 'prod-to-test' | 'test-to-prod';
/**
 * Plugin info for update previews
 */
export interface PluginUpdateInfo {
    name: string;
    currentVersion: string;
    newVersion: string;
    source: string;
    downloadUrl?: string;
    downloadSize?: number;
    releaseNotes?: string;
}
/**
 * Default preview options
 */
export declare const DEFAULT_PREVIEW_OPTIONS: PreviewOptions;
/**
 * Estimated time per operation type (ms per file)
 */
export declare const ESTIMATED_TIME_PER_FILE: {
    copy: number;
    download: number;
    backup: number;
    restore: number;
};
/**
 * Create empty preview summary
 */
export declare function createEmptyPreviewSummary(): PreviewSummary;
/**
 * Create empty operation preview
 */
export declare function createEmptyPreview(operation: OperationType, title: string): OperationPreview;
/**
 * Get change type symbol for display
 */
export declare function getChangeSymbol(type: ChangeType): string;
/**
 * Get change type color for display
 */
export declare function getChangeColor(type: ChangeType): string;
//# sourceMappingURL=preview-types.d.ts.map