import { RouterReader } from './router-reader';
import { FileSystemManager } from './file-system-manager';
import { ValidationManager } from './validation-manager';
/**
 * Options for the SEO init command
 */
export interface SeoInitOptions {
    mode?: 'simple' | 'hierarchical';
    routerPath?: string;
}
/**
 * Result of the init command execution
 */
export interface SeoInitResult {
    success: boolean;
    filesCreated: number;
    filesUpdated: number;
    errors: string[];
}
/**
 * CLI command for initializing SEO files from router configuration.
 *
 * This command:
 * - Reads the existing Runtime router configuration
 * - Generates SEO files for all discovered routes
 * - Preserves existing SEO data (idempotent operation)
 * - Validates all generated content with Zod
 * - Supports both hierarchical and simple file layout modes
 */
export declare class SeoInitCommand {
    private routerReader;
    private fileSystemManager;
    private validationManager;
    constructor(routerReader?: RouterReader, fileSystemManager?: FileSystemManager, validationManager?: ValidationManager);
    /**
     * Executes the init command.
     *
     * Workflow:
     * 1. Generate default.seo.json with all schema fields
     * 2. Read router configuration to discover all routes
     * 3. Read existing SEO files (if any)
     * 4. Merge new routes with existing data
     * 5. Generate default values for missing fields
     * 6. Validate all content with Zod
     * 7. Write files to disk
     *
     * @param options - Command options
     * @returns Promise resolving to init result
     */
    init(options?: SeoInitOptions): Promise<SeoInitResult>;
    /**
     * Extracts route paths from router configuration.
     * Filters out routes without paths and index routes without explicit paths.
     *
     * @param routes - Array of route information from router
     * @returns Array of route path strings
     */
    private extractRoutePaths;
    /**
     * Creates default SEO data based on schema defaults.
     * All fields are set to their default values as defined in SeoMetaDataSchema.
     *
     * @returns Default SEO metadata object
     */
    private createDefaultSeoData;
    /**
     * Merges existing SEO data with schema defaults.
     * Only adds fields that are missing in the existing data.
     * Preserves all existing field values.
     *
     * This implements the idempotency requirement - running init multiple times
     * will not overwrite user-entered data.
     *
     * @param existingData - Existing SEO data from file
     * @returns Merged data with defaults for missing fields
     */
    private mergeWithDefaults;
    /**
     * Generates default.seo.json file with all SEO schema fields populated.
     * This file serves as the framework-wide fallback for all routes.
     *
     * The function:
     * - Checks if default.seo.json already exists (idempotent)
     * - Creates .seo directory if it doesn't exist
     * - Generates default SEO object with all fields populated
     * - Validates with Zod before writing
     * - Writes to .seo/default.seo.json
     * - Displays informative console messages
     *
     * @param seoDir - The .seo directory path (default: '.seo')
     * @returns Promise<boolean> - true if file was created, false if it already existed
     * @throws Error if validation fails or file write fails
     */
    generateDefaultSeoFile(seoDir?: string): Promise<boolean>;
}
