/**
 * Audio file utilities for CLI
 *
 * Provides functionality for saving TTS audio to files with proper
 * error handling and directory creation.
 *
 * @module cli/utils/audioFileUtils
 */
import type { TTSResult, AudioSaveResult, TTSAudioFormat } from "../../lib/types/index.js";
/**
 * Format file size in human-readable format
 *
 * @param bytes - Size in bytes
 * @returns Formatted string (e.g., "32 KB", "1.5 MB")
 */
export declare function formatFileSize(bytes: number): string;
/**
 * Resolve the output path, handling both absolute and relative paths
 *
 * @param outputPath - User-specified output path
 * @returns Resolved absolute path
 */
export declare function resolveOutputPath(outputPath: string): string;
/**
 * Ensure parent directories exist, creating them if necessary
 *
 * @param filePath - Full path to the file
 */
export declare function ensureDirectoryExists(filePath: string): Promise<void>;
/**
 * Get appropriate file extension for audio format
 *
 * @param format - Audio format
 * @returns File extension (including dot)
 */
export declare function getAudioExtension(format: TTSAudioFormat): string;
/**
 * Validate and normalize output path, adding extension if needed
 *
 * @param outputPath - User-specified output path
 * @param format - Audio format for extension
 * @returns Normalized output path
 */
export declare function normalizeOutputPath(outputPath: string, format?: TTSAudioFormat): string;
/**
 * Save TTS audio result to a file
 *
 * Creates parent directories if they don't exist and handles both
 * absolute and relative paths.
 *
 * @param audio - TTS result containing audio buffer
 * @param outputPath - Path where the audio should be saved
 * @returns Save result with success status, path, and size
 *
 * @example
 * ```typescript
 * const result = await saveAudioToFile(audioResult, "./output/audio.mp3");
 * if (result.success) {
 *   console.log(`Saved to ${result.path} (${formatFileSize(result.size)})`);
 * }
 * ```
 */
export declare function saveAudioToFile(audio: TTSResult, outputPath: string): Promise<AudioSaveResult>;
/**
 * Validate that a path is writable
 *
 * @param filePath - Path to validate
 * @returns True if the path is writable
 */
export declare function isPathWritable(filePath: string): Promise<boolean>;
