import { BuildCredentials } from '../../commands/credentials';
import { SeoMetaDataInput } from '../../../core/entities/seo-engine/seo-engine.schema';
import { RuntimeConfig } from '../../../utils/types';
import { FileSystemManager } from './file-system-manager';
import { ValidationError, ValidationManager } from './validation-manager';
import { DynamoDbSyncManager } from './dynamodb-sync';
/**
 * Options for the SEO update command
 */
export interface SeoUpdateOptions {
    stage: string;
    mode?: 'simple' | 'hierarchical';
    stackName?: string;
    serviceName?: string;
    useEnv?: boolean;
}
/**
 * Result of the update command execution
 */
export interface SeoUpdateResult {
    success: boolean;
    filesRead: number;
    filesValidated: number;
    recordsSynced: number;
    validationErrors: ValidationError[];
    syncErrors: string[];
    tableName?: string;
    defaultSynced?: boolean;
}
/**
 * CLI command for updating DynamoDB from SEO files.
 *
 * This command:
 * - Reads all SEO files from the .seo/ directory
 * - Reads default.seo.json if it exists
 * - Validates all files with Zod schemas
 * - Syncs validated data to DynamoDB
 * - Provides detailed error messages for failures
 * - Supports both hierarchical and simple file layout modes
 * - Requires --stage parameter for multi-stage support
 */
export declare class SeoUpdateCommand {
    private fileSystemManager;
    private validationManager;
    private readonly seoDir;
    constructor(fileSystemManager?: FileSystemManager, validationManager?: ValidationManager);
    /**
     * Reads and validates default SEO configuration file.
     * Returns undefined if file doesn't exist (backwards compatibility).
     *
     * @returns Promise resolving to default SEO metadata or undefined
     * @throws Error if file exists but is invalid
     */
    readDefaultSeoFile(): Promise<SeoMetaDataInput | undefined>;
    /**
     * Syncs default SEO configuration to DynamoDB.
     *
     * @param defaultSeo - The default SEO configuration
     * @param syncManager - The DynamoDB sync manager
     * @returns Promise resolving when sync is complete
     * @throws Error if sync fails
     */
    syncDefaultSeoToDb(defaultSeo: SeoMetaDataInput, syncManager: DynamoDbSyncManager): Promise<void>;
    /**
     * Executes the update command.
     *
     * Workflow:
     * 1. Validate required parameters (--stage)
     * 2. Read all SEO files based on mode
     * 3. Derive routes from file paths (hierarchical) or use route field (simple)
     * 4. Validate all files with Zod
     * 5. Initialize DynamoDB sync manager and resolve table name
     * 6. Read and sync default.seo.json (if exists)
     * 7. Sync route-specific entries to DynamoDB
     * 8. Clear CloudFormation cache on command completion
     *
     * @param options - Command options
     * @param config
     * @param credentials
     * @returns Promise resolving to update result
     * @throws Error if required parameters are missing
     */
    update(options: SeoUpdateOptions, config: RuntimeConfig, credentials?: BuildCredentials): Promise<SeoUpdateResult>;
    /**
     * Formats validation errors for display.
     * Creates human-readable error messages with file path, field path,
     * expected type, and received value.
     *
     * @param errors - Array of validation errors
     * @returns Formatted error message string
     */
    formatValidationErrors(errors: ValidationError[]): string;
    /**
     * Formats sync errors for display.
     * Creates human-readable error messages for DynamoDB sync failures.
     *
     * @param errors - Array of sync error messages
     * @returns Formatted error message string
     */
    formatSyncErrors(errors: string[]): string;
    /**
     * Formats success summary for display.
     * Shows number of files read, validated, and synced to DynamoDB.
     *
     * @param result - Update result
     * @returns Formatted success message string
     */
    formatSuccessSummary(result: SeoUpdateResult): string;
}
