import { TorrentFile } from 'webtorrent'; export interface SubtitleCue { start: number; end: number; text: string; } export interface ExtractedSubtitleTrack { id: string; number: number; name: string; language: string; type: string; header?: string; cues: SubtitleCue[]; } export interface ExtractedAudioTrack { id: string; number: number; name: string; language: string; languageLabel: string; flag?: string; codec: string; isDefault: boolean; } export declare class MkvSubtitleExtractor { private tracks; private audioTracks; private parser; private stream; constructor(); /** * Begins parsing the MKV file to extract embedded subtitle tracks and audio tracks. */ start(file: TorrentFile): void; /** * Cleans raw ASS/SSA markup, removes formatting tags like {\i1}, and converts line breaks. */ private cleanSubtitleText; /** * Returns all discovered subtitle tracks. */ getTracks(): ExtractedSubtitleTrack[]; /** * Returns a specific track by its track number. */ getTrack(trackNumber: number): ExtractedSubtitleTrack | undefined; /** * Returns structured JSON for the track including all parsed cues. */ getTrackJson(trackNumber: number): { track: number; name: string; type: string; cues: SubtitleCue[]; } | null; /** * Formats the extracted track into an ASS script string or WebVTT string. */ formatTrackAsText(trackNumber: number): string; private formatAssTime; private formatVttTime; /** * Returns all discovered audio tracks from the MKV container. */ getAudioTracks(): ExtractedAudioTrack[]; /** * Cleans up streams and parsers. */ stop(): void; }