import EventEmitter from "node:events";
import { createRecordExtraDataController } from "./record_extra_data_controller.js";
export type GetSavePath = (data: {
    startTime: number;
}) => string;
export declare class Segment extends EventEmitter {
    extraDataController: ReturnType<typeof createRecordExtraDataController> | null;
    init: boolean;
    getSavePath: GetSavePath;
    /** 原始的ffmpeg文件名，用于重命名 */
    rawRecordingVideoPath: string;
    /** 输出文件名名，不包含拓展名 */
    outputVideoFilePath: string;
    disableDanma: boolean;
    videoExt: "ts" | "mkv" | "mp4";
    constructor(getSavePath: GetSavePath, disableDanma: boolean, videoExt: "ts" | "mkv" | "mp4");
    handleSegmentEnd(): Promise<void>;
    onSegmentStart(stderrLine: string): Promise<void>;
    get outputFilePath(): string;
}
export declare class StreamManager extends EventEmitter {
    private segment;
    private extraDataController;
    recordSavePath: string;
    recordStartTime?: number;
    private videoFormat?;
    constructor(getSavePath: GetSavePath, hasSegment: boolean, disableDanma: boolean, videoFormat?: "auto" | "ts" | "mkv");
    handleVideoStarted(stderrLine: string): Promise<void>;
    handleVideoCompleted(): Promise<void>;
    getExtraDataController(): import("./record_extra_data_controller.js").RecordExtraDataController | null;
    get videoExt(): "ts" | "mkv" | "mp4";
    get videoFilePath(): string;
}
