import { Logger } from '../types/cli.types';
import { RuntimeConfig } from '../../utils/types/runtime.config';
import { CloudFormationResolver } from '../services/cloudformation-resolver';
import { CacheClearOperationResult, CacheClearSummary } from '../utils/cache-clearing';
/**
 * Options for cache clearing execution
 */
export interface CacheClearExecutionOptions {
    /** Whether this is a dry-run (preview without executing) */
    dryRun?: boolean;
    /** Enable verbose logging */
    verbose?: boolean;
}
/**
 * Service for orchestrating cache clearing operations across all cache types
 *
 * This service provides a unified interface for clearing S3, CloudFront, and
 * CloudFormation caches with proper error handling and partial failure support.
 */
export declare class CacheClearService {
    private readonly region;
    private readonly logger;
    private readonly verbose;
    constructor(region: string, logger: Logger, verbose?: boolean);
    /**
     * Clear all cache types for a service/stage/region combination
     *
     * This method orchestrates clearing all three cache types:
     * - S3 cache directory (HTML cache with ETag validation)
     * - CloudFront distribution cache (CDN edge cache)
     * - CloudFormation output cache (in-memory cache)
     *
     * Implements partial failure resilience - if one cache type fails,
     * others will still be attempted.
     *
     * @param serviceName - Service name from configuration
     * @param stage - Deployment stage (dev, staging, prod)
     * @param config - Runtime CLI configuration
     * @param options - Execution options (dry-run, verbose)
     * @returns Promise<CacheClearSummary>
     */
    clearAllCaches(serviceName: string, stage: string, config: RuntimeConfig, options?: CacheClearExecutionOptions): Promise<CacheClearSummary>;
    /**
     * Clear S3 cache directory
     *
     * Clears the HTML cache stored in S3 bucket under the 'cache/' prefix.
     * Uses ETag validation to ensure cache consistency.
     *
     * @param bucketName - S3 bucket name from stack outputs
     * @param options - Operation options
     * @returns Promise<CacheClearOperationResult>
     */
    clearS3Cache(bucketName: string, options?: {
        dryRun?: boolean;
        verbose?: boolean;
    }): Promise<CacheClearOperationResult>;
    /**
     * Invalidate CloudFront distribution cache
     *
     * Creates a CloudFront invalidation to clear the CDN edge cache.
     * Invalidates all paths (/*) by default.
     *
     * @param distributionId - CloudFront distribution ID from stack outputs
     * @param options - Operation options
     * @returns Promise<CacheClearOperationResult>
     */
    clearCloudFrontCache(distributionId: string, options?: {
        dryRun?: boolean;
        verbose?: boolean;
    }): Promise<CacheClearOperationResult>;
    /**
     * Clear CloudFormation output cache
     *
     * Clears the in-memory cache of CloudFormation stack outputs
     * used by CLI commands for resource resolution.
     *
     * @param resolver - CloudFormation resolver instance
     * @param options - Operation options
     * @returns Promise<CacheClearOperationResult>
     */
    clearCloudFormationCache(resolver: CloudFormationResolver, options?: {
        dryRun?: boolean;
        verbose?: boolean;
    }): Promise<CacheClearOperationResult>;
}
