import type { Draft } from "./draft.js"; import { type Namespace } from "./enums.js"; import { type WikimediaAsset } from "./wikimedia.js"; /** * If `path` is an http(s) URL, resolve it through the Wikimedia fetcher, saving * into a `wikimedia/` subdir of the draft's assets folder. Non-Wikimedia URLs * error — keeping network scope tight. Returns the local path + the fetched * asset (null for plain filesystem paths). */ export declare function resolveAssetPath(path: string, draftFilePath: string, kind: "video" | "audio", forceLicense?: boolean): Promise<{ localPath: string; asset: WikimediaAsset | null; warning?: string; }>; export declare function uuid(): string; export interface InitOptions { name: string; templateDir: string; draftsDir: string; } export declare function initDraft(opts: InitOptions): { draftPath: string; filePath: string; }; interface CompanionRefs { ids: string[]; materials: Array<{ type: string; data: Record; }>; } export declare function createCompanionMaterials(trackType: "text" | "video" | "audio" | "sticker" | "effect"): CompanionRefs; export declare function registerCompanions(draft: Draft, companions: CompanionRefs): void; export interface AddTextOptions { text: string; start: number; duration: number; fontSize?: number; color?: string; alignment?: number; x?: number; y?: number; trackName?: string; } export declare function copyTextStyle(draft: Draft, refSegmentId: string, targetMaterialId: string): void; export declare function addText(draft: Draft, _filePath: string, opts: AddTextOptions): { segmentId: string; materialId: string; trackId: string; }; export interface AddAudioOptions { path: string; start: number; duration: number; volume?: number; trackName?: string; } export declare function addAudio(draft: Draft, filePath: string, opts: AddAudioOptions): { segmentId: string; materialId: string; trackId: string; }; export interface AddVideoOptions { path: string; start: number; duration: number; type?: "video" | "photo"; width?: number; height?: number; trackName?: string; } export declare function addVideo(draft: Draft, filePath: string, opts: AddVideoOptions): { segmentId: string; materialId: string; trackId: string; }; export interface CutOptions { start: number; end: number; } export declare function cutProject(draft: Draft, opts: CutOptions): { kept: number; removed: number; }; export interface Template { name: string; type: string; segment: Record; material: { type: string; data: Record; }; extra_materials: Array<{ type: string; data: Record; }>; } export declare function saveTemplate(draft: Draft, segId: string, name: string, outPath: string): Template; export declare function applyTemplate(draft: Draft, templatePath: string, start: number, duration: number, overrides?: { x?: number; y?: number; scaleX?: number; scaleY?: number; text?: string; }): { segmentId: string; materialId: string; trackId: string; }; export interface AddStickerOptions { resourceId: string; start: number; duration: number; x?: number; y?: number; scale?: number; rotation?: number; trackName?: string; } export declare function addSticker(draft: Draft, opts: AddStickerOptions): { segmentId: string; materialId: string; trackId: string; }; export declare function effectSlugs(): string[]; export interface AddEffectOptions { slug: string; start: number; duration: number; params?: number[]; trackName?: string; namespace?: Namespace; } export declare function addEffect(draft: Draft, opts: AddEffectOptions): { segmentId: string; materialId: string; trackId: string; name: string; }; export declare const MIX_MODES: Record; export declare function mixModeSlugs(): string[]; export declare function setMixMode(draft: Draft, segmentId: string, mode: string): { segmentId: string; material_id: string; mix_mode: string; }; export declare function setAudioFade(draft: Draft, segmentId: string, opts: { fadeInUs?: number; fadeOutUs?: number; }): { segmentId: string; fade_id: string; fade_in_us: number; fade_out_us: number; }; export declare function setCover(draft: Draft, imagePath: string, timeMs?: number): { cover_path: string; time_ms: number; }; export declare function filterSlugs(namespace?: Namespace): string[]; export declare function filterCatalogue(): Array<{ slug: string; member: string; name: string; effect_id: string; resource_id: string; }>; export interface AddFilterOptions { slug: string; start: number; duration: number; intensity?: number; trackName?: string; namespace?: Namespace; } export declare function addFilter(draft: Draft, opts: AddFilterOptions): { segmentId: string; materialId: string; trackId: string; name: string; }; export {};