import { SeoFileEntry } from './file-system-manager';
/**
 * Result of a DynamoDB sync operation
 */
export interface SyncResult {
    success: boolean;
    created: number;
    updated: number;
    failed: number;
    errors: SyncError[];
}
/**
 * Error that occurred during sync
 */
export interface SyncError {
    route: string;
    error: string;
}
/**
 * Options for DynamoDbSyncManager constructor
 */
export interface DynamoDbSyncManagerOptions {
    stackName?: string;
    serviceName?: string;
    useEnv?: boolean;
    region?: string;
}
/**
 * DynamoDB sync manager for SEO metadata.
 * Handles upserting SEO metadata entries to DynamoDB with route-based primary keys.
 * Uses CloudFormation stack outputs to resolve table names dynamically.
 */
export declare class DynamoDbSyncManager {
    private client;
    private tableName;
    private resolver;
    /**
     * Creates a new DynamoDB sync manager.
     *
     * @param stage - The target stage (dev, staging, prod, etc.)
     * @param options - Optional configuration for CloudFormation resolution
     * @throws StackNotFoundError if CloudFormation stack doesn't exist
     * @throws OutputNotFoundError if required output is missing
     * @throws CredentialsError if AWS credentials are not configured
     * @throws RegionNotSpecifiedError if AWS region is not specified
     */
    constructor(stage: string, options?: DynamoDbSyncManagerOptions);
    /**
     * Resolves the DynamoDB table name from CloudFormation or environment variables.
     * Must be called before performing any sync operations.
     *
     * @throws Error if table name cannot be resolved
     */
    resolveTableName(): Promise<void>;
    /**
     * Syncs SEO metadata entries to DynamoDB.
     * Performs batch upserts with error handling.
     * Automatically resolves table name if not already resolved.
     *
     * @param entries - Array of SEO file entries to sync
     * @returns Sync result with success status and error details
     */
    syncToDb(entries: SeoFileEntry[]): Promise<SyncResult>;
    /**
     * Upserts a single SEO entry to DynamoDB.
     * Uses route-based primary key pattern: SEO#{route}
     *
     * @param entry - The SEO file entry to upsert
     * @throws Error if DynamoDB operation fails
     */
    private upsertEntry;
    /**
     * Gets the table name being used for sync operations.
     * Useful for testing and debugging.
     *
     * @returns The DynamoDB table name
     */
    getTableName(): string;
    /**
     * Clears the CloudFormation resolver cache.
     * Should be called after command completion to ensure fresh data on next execution.
     */
    clearCache(): void;
}
