import { ToolResult } from '../types/index.js';
export interface VideoInfo {
    filename: string;
    format: string;
    duration?: number;
    width?: number;
    height?: number;
    fps?: number;
    bitrate?: number;
    codec?: string;
    size: string;
}
export interface FrameExtraction {
    frames: ExtractedFrame[];
    totalFrames: number;
    outputDir: string;
}
export interface ExtractedFrame {
    path: string;
    timestamp: number;
    frameNumber: number;
}
/**
 * Video Tool for processing and analyzing video files
 * Supports frame extraction, metadata reading, and video analysis
 */
export declare class VideoTool {
    private readonly supportedFormats;
    private readonly _maxFileSizeMB;
    private vfs;
    /**
     * Get video file information
     */
    getInfo(filePath: string): Promise<ToolResult>;
    /**
     * Get video info using ffprobe
     */
    private getFFProbeInfo;
    /**
     * Extract frames from video
     */
    extractFrames(filePath: string, options?: {
        interval?: number;
        count?: number;
        timestamps?: number[];
        outputDir?: string;
        format?: 'jpg' | 'png';
    }): Promise<ToolResult>;
    /**
     * Extract a single frame at a specific timestamp
     */
    private extractFrameAtTimestamp;
    /**
     * Create a thumbnail from video
     */
    createThumbnail(filePath: string, timestamp?: number, outputPath?: string): Promise<ToolResult>;
    /**
     * Extract audio from video
     */
    extractAudio(filePath: string, outputPath?: string): Promise<ToolResult>;
    /**
     * Check if ffmpeg is available
     */
    private checkFFmpeg;
    /**
     * List video files in directory
     */
    listVideos(dirPath?: string): Promise<ToolResult>;
    /**
     * Check if file is a video
     */
    isVideo(filePath: string): boolean;
    /**
     * Format file size
     */
    private formatSize;
    /**
     * Format duration
     */
    private formatDuration;
    /**
     * Format video info for display
     */
    private formatVideoInfo;
    /**
     * Format frame extraction result
     */
    private formatFrameExtraction;
}
