/**
 * CLI Service for Legal Markdown Processing
 *
 * This module provides a service class that handles the business logic for
 * the CLI tool, including file processing, output generation, error handling,
 * and user feedback. It coordinates between the core processing functions
 * and the command-line interface.
 *
 * Features:
 * - File and content processing orchestration
 * - Multi-format output generation (HTML, PDF, Markdown)
 * - Error handling and user feedback
 * - Verbose logging and debugging support
 * - Path resolution and file system operations
 * - Flexible output options (file, stdout)
 *
 * @example
 * ```typescript
 * import { CliService } from './cli/service';
 *
 * const service = new CliService({
 *   verbose: true,
 *   pdf: true,
 *   highlight: true
 * });
 *
 * await service.processFile('input.md', 'output.md');
 * ```
 *
 * @module
 */
import { LegalMarkdownOptions } from '../types';
/**
 * Extended options interface for CLI operations
 *
 * @interface CliOptions
 * @extends LegalMarkdownOptions
 */
export interface CliOptions extends LegalMarkdownOptions {
    /** Input file path */
    input?: string;
    /** Output file path */
    output?: string;
    /** Enable verbose logging */
    verbose?: boolean;
    /** Suppress success output messages */
    silent?: boolean;
    /** Generate PDF output */
    pdf?: boolean;
    /** Generate HTML output */
    html?: boolean;
    /** Enable field highlighting */
    highlight?: boolean;
    /** Path to custom CSS file */
    css?: string;
    /** Document title */
    title?: string;
    /** Archive source file after successful processing */
    archiveSource?: string | boolean;
}
/**
 * Service class for CLI operations and document processing
 *
 * Handles file processing, output generation, and error management
 * for the Legal Markdown CLI tool.
 *
 * @class CliService
 * @example
 * ```typescript
 * const service = new CliService({
 *   verbose: true,
 *   pdf: true,
 *   highlight: true
 * });
 * ```
 */
export declare class CliService {
    private options;
    /**
     * Creates a new CLI service instance
     *
     * @param {CliOptions} [options={}] - Configuration options
     */
    constructor(options?: CliOptions);
    /**
     * Resolves output file path using environment variables for relative paths
     *
     * @param {string} outputPath - The output path to resolve
     * @returns {string} The resolved absolute output path
     * @private
     */
    private resolveOutputPath;
    /**
     * Determines the output directory for generated files
     *
     * @param {string | undefined} outputPath - The output path (if provided)
     * @returns {string} The directory to use for output files
     * @private
     */
    private getOutputDirectory;
    /**
     * Processes a file from input path to output path
     *
     * @param {string} inputPath - Path to the input file
     * @param {string} [outputPath] - Path for output file (optional for stdout)
     * @returns {Promise<void>}
     * @throws {FileNotFoundError} When input file doesn't exist
     * @throws {LegalMarkdownError} When processing fails
     */
    processFile(inputPath: string, outputPath?: string): Promise<void>;
    /**
     * Processes content directly without file I/O
     *
     * @param {string} content - The content to process
     * @returns {Promise<string>} The processed content
     * @throws {LegalMarkdownError} When processing fails
     */
    processContent(content: string): Promise<string>;
    /**
     * Logs messages with appropriate styling and prefixes
     *
     * @private
     * @param {string} message - The message to log
     * @param {'info' | 'success' | 'warn' | 'error'} [level='info'] - The log level
     * @returns {void}
     */
    private log;
    /**
     * Generates formatted output (HTML/PDF) from processed content
     *
     * @private
     * @param {string} content - The content to format
     * @param {string} inputPath - Original input path for naming
     * @param {string} [outputPath] - Output path override
     * @returns {Promise<void>}
     */
    private generateFormattedOutputWithOptions;
    /**
     * Show generated files with proper grouping and formatting
     *
     * @private
     * @param {string[]} files - Array of generated file paths
     * @param {boolean} hasHighlight - Whether highlight versions were generated
     */
    private showGeneratedFiles;
    /**
     * Handle archiving of source file after successful processing
     *
     * @private
     * @param {string} inputPath - Path to the source file to archive
     * @param {string} originalContent - Original file content
     * @param {string} processedContent - Processed file content
     * @returns {Promise<void>}
     */
    private handleArchiving;
    /**
     * Handles and formats errors for user display
     *
     * @private
     * @param {unknown} error - The error to handle
     * @returns {void}
     */
    private handleError;
    /**
     * Process force commands from content and apply them to options
     *
     * @private
     * @param {string} content - The content to analyze for force commands
     * @param {Partial<CliOptions>} baseOptions - Base options to extend
     * @returns {Partial<CliOptions>} Updated options with force commands applied
     */
    private processForceCommands;
}
//# sourceMappingURL=service.d.ts.map