import { automation } from "@pulumi/pulumi";
import type { Logger, DeploymentStatus } from "../../types/index.js";
export declare function performRollback(stack: automation.Stack, logger: Logger, onProgress: (status: DeploymentStatus, message: string, metadata?: Record<string, any>) => void): Promise<void>;
interface ConfigurationSnapshot {
    version: number;
    timestamp: Date;
    stackName: string;
    config: Record<string, automation.ConfigValue>;
    outputs?: Record<string, any>;
    metadata?: Record<string, any>;
}
export declare class ConfigurationSnapshotManager {
    private logger;
    private snapshots;
    private maxSnapshots;
    constructor(logger: Logger, maxSnapshots?: number);
    /**
     * Store a configuration snapshot after a successful deployment
     */
    storeSnapshot(stack: automation.Stack, version: number, outputs?: Record<string, any>, metadata?: Record<string, any>): Promise<void>;
    /**
     * Retrieve the most recent successful configuration snapshot
     */
    getLatestSnapshot(stackName: string): ConfigurationSnapshot | undefined;
    /**
     * Retrieve a specific configuration snapshot by version
     */
    getSnapshotByVersion(stackName: string, version: number): ConfigurationSnapshot | undefined;
    /**
     * Get all snapshots for a stack (most recent first)
     */
    getAllSnapshots(stackName: string): ConfigurationSnapshot[];
    /**
     * Restore configuration from a snapshot
     */
    restoreFromSnapshot(stack: automation.Stack, snapshot: ConfigurationSnapshot): Promise<boolean>;
    /**
     * Clean up old snapshots beyond the retention limit
     */
    cleanupOldSnapshots(stackName: string): void;
}
export declare function getSnapshotManager(logger: Logger): ConfigurationSnapshotManager;
export declare function performEnhancedRollback(stack: automation.Stack, logger: Logger, onProgress: (status: DeploymentStatus, message: string, metadata?: Record<string, any>) => void, targetVersion?: number): Promise<void>;
/**
 * Store a snapshot after a successful deployment
 * This should be called after successful 'up' operations
 */
export declare function storeDeploymentSnapshot(stack: automation.Stack, logger: Logger, result: automation.UpResult, metadata?: Record<string, any>): Promise<void>;
/**
 * List available rollback targets for a stack
 */
export declare function listRollbackTargets(stack: automation.Stack, logger: Logger): Promise<Array<{
    version: number;
    timestamp: Date;
    result: string;
    kind: string;
}>>;
export {};
//# sourceMappingURL=rollback-manager.d.ts.map