import { MulmoStudioContext, MulmoBeat, MulmoTransition, MulmoCanvasDimension, MulmoFillOption, MulmoVideoFilter } from "../types/index.js";
import { FfmpegContext } from "../utils/ffmpeg_utils.js";
type VideoId = string | undefined;
export declare const getVideoPart: (inputIndex: number, isMovie: boolean, duration: number, canvasInfo: MulmoCanvasDimension, fillOption: MulmoFillOption, speed: number, filters?: MulmoVideoFilter[], frameCount?: number) => {
    videoId: string;
    videoPart: string;
};
export declare const getAudioPart: (inputIndex: number, duration: number, delay: number, mixAudio: number) => {
    audioId: string;
    audioPart: string;
};
export declare const getOutOverlayCoords: (transitionType: string, d: number, t: number) => string;
export declare const getInOverlayCoords: (transitionType: string, d: number, t: number) => string;
export declare const getNeedFirstFrame: (context: MulmoStudioContext) => boolean[];
export declare const getNeedLastFrame: (context: MulmoStudioContext) => boolean[];
export declare const resolveMovieVolume: (beat: MulmoBeat, context: MulmoStudioContext) => number;
export declare const isExplicitMixMode: (context: MulmoStudioContext) => boolean;
export declare const mixAudiosFromMovieBeats: (ffmpegContext: FfmpegContext, artifactAudioId: string, audioIdsFromMovieBeats: string[], context: MulmoStudioContext) => string;
export declare const getExtraPadding: (context: MulmoStudioContext, index: number) => number;
export declare const getFillOption: (context: MulmoStudioContext, beat: MulmoBeat) => {
    style: "aspectFit" | "aspectFill";
};
export declare const getTransitionVideoId: (transition: MulmoTransition, videoIdsForBeats: VideoId[], index: number) => {
    videoId: string;
    nextVideoId: undefined;
    beatIndex: number;
} | {
    videoId: string;
    nextVideoId: string;
    beatIndex: number;
};
export declare const getConcatVideoFilter: (concatVideoId: string, videoIdsForBeats: VideoId[]) => string;
export declare const getTransitionFrameDurations: (context: MulmoStudioContext, index: number) => {
    firstDuration: number;
    lastDuration: number;
};
export declare const validateBeatSource: (studioBeat: MulmoStudioContext["studio"]["beats"][number], index: number) => string;
export declare const addSplitAndExtractFrames: (ffmpegContext: FfmpegContext, videoId: string, firstDuration: number, lastDuration: number, isMovie: boolean, needFirst: boolean, needLast: boolean, canvasInfo: {
    width: number;
    height: number;
}) => void;
export declare const createVideo: (audioArtifactFilePath: string, outputVideoPath: string, context: MulmoStudioContext, isTest?: boolean) => Promise<boolean | string[]>;
export declare const movieFilePath: (context: MulmoStudioContext) => string;
export declare const movie: (context: MulmoStudioContext) => Promise<boolean>;
export {};
