import * as PIXI from "pixi.js"; import { z } from "zod"; import { BackgroundTimer } from "./modules/background-timer/BackgroundTimer"; import { CustomClip } from "./modules/clip/clips/custom/CustomClip"; import { Display, DisplayOptions } from "./modules/display/Display"; import { EventEmitter } from "./modules/event-emitter"; import { FontRegistry } from "./modules/font-registry"; import { Library, LibrarySetupData } from "./modules/library"; import { OutputChunkHelper } from "./modules/renderer/OutputChunkHelper"; import { Settings, SettingsSchema, VideoCodec } from "./modules/settings"; import { StorageProviderBase } from "./modules/storage"; import { StorageController } from "./modules/storage/StorageController"; import { SubtitlesManager } from "./modules/subtitles"; import { Timeline } from "./modules/timeline/Timeline"; import { ITranscodeProvider } from "./modules/transcode/ITranscodeProvider"; import { UndoManager } from "./modules/undo/UndoManager"; /** * Selects which media streams should be written during a project export. */ export declare enum ExportVideoType { VIDEO_ONLY = "video_only", AUDIO_ONLY = "audio_only", VIDEO_AUDIO = "video_audio" } interface EngineLicense { enableRemoteValidation?: boolean; isSublicense?: boolean; licenseName: string; licenseKey?: string; } /** * Supported output file extensions for audio-only exports. */ export type AudioExtensions = "aac" | "m4a" | "mp3" | "wav" | "ogg"; /** * Supported output file extensions for media exports produced by the SDK. */ export type MediaExtensions = AudioExtensions | "mp4" | "webm"; /** * File extensions returned by engine export operations. */ export type ExportExtensions = MediaExtensions; /** * Describes the artifact returned by an export operation. */ export interface ExportResult { /** * Binary contents of the exported file when the export completed as a single blob. */ blob?: Blob; /** * Chunk helper returned for chunked or streaming-style exports. */ outputChunkHelper?: OutputChunkHelper; /** * File extension that should be used when naming the exported output. */ extension: ExportExtensions; } /** * Configures a standard project export. */ export interface ExportOptions { /** * Combination of audio and video streams to include in the export. */ type?: ExportVideoType; /** * Timeline start time, in seconds, for the exported range. */ from?: number; /** * Timeline end time, in seconds, for the exported range. */ to?: number; /** * Multiplier applied to the project resolution during export. */ resolutionScale?: number; /** * Audio container or codec extension to use when exporting audio-only output. */ audioFormat?: AudioExtensions; } /** * Configures audio-only export for a specific timeline range. */ export interface AudioRangeExportOptions { /** * Timeline start time, in seconds, for the exported audio range. */ from?: number; /** * Timeline end time, in seconds, for the exported audio range. */ to?: number; /** * Restricts the export to audio produced by the listed clips. */ includeClipIds?: string[]; /** * Omits audio produced by the listed clips from the export. */ excludeClipIds?: string[]; /** * Audio file extension to generate. */ audioFormat?: AudioExtensions; } /** * Provides optional overrides for locating FFmpeg runtime assets. */ export interface FFmpegOptions { /** * Base URL or directory that contains the FFmpeg core, WASM, and worker files. */ path?: string; } /** * Configures engine initialization, including rendering, storage, licensing, and media services. */ export interface EngineOptions { /** * Display configuration applied to the engine canvas. */ display?: DisplayOptions; /** * Licensing data used to authenticate FFmpeg-enabled export features. */ license?: EngineLicense; /** * Storage providers registered for project asset persistence. */ storages?: StorageProviderBase[]; /** * Optional transcode provider used for media compatibility workflows. */ transcoder?: ITranscodeProvider; /** * Optional FFmpeg runtime location overrides. */ ffmpeg?: FFmpegOptions; /** * Enables undo and redo tracking after initialization. */ enableUndoRedo?: boolean; /** * Settings values that should override the defaults loaded by the engine. */ forcedSettings?: Partial>; /** * Callback invoked after project data is loaded when required library assets are missing. */ onSetupLibrary?: (data: LibrarySetupData) => Promise; /** * Custom hashing function used to derive media identity from raw bytes. */ dataHashFunction?: (data: Uint8Array) => Promise; } /** * Zod schema for serialized engine state. */ export declare const EngineSchema: z.ZodObject<{ version: z.ZodOptional; createdAt: z.ZodOptional; projectId: z.ZodOptional; display: z.ZodObject<{ width: z.ZodNumber; height: z.ZodNumber; backgroundColor: z.ZodString; }, "strip", z.ZodTypeAny, { width: number; height: number; backgroundColor: string; }, { width: number; height: number; backgroundColor: string; }>; timeline: z.ZodObject<{ startTime: z.ZodNumber; fps: z.ZodNumber; layers: z.ZodArray; visible: z.ZodOptional; muted: z.ZodOptional; volume: z.ZodOptional; clips: z.ZodArray; transitions: z.ZodArray, "many">; }, "strip", z.ZodTypeAny, { properties: [string, any][]; id: string; provider: string; startClipId: string; endClipId: string; inDuration: number; outDuration: number; transitionId: string; }, { properties: [string, any][]; id: string; provider: string; startClipId: string; endClipId: string; inDuration: number; outDuration: number; transitionId: string; }>, "many">; customData: z.ZodOptional, "many">>; }, "strip", z.ZodTypeAny, { id: string; transitions: { properties: [string, any][]; id: string; provider: string; startClipId: string; endClipId: string; inDuration: number; outDuration: number; transitionId: string; }[]; clips: any[]; name?: string | undefined; visible?: boolean | undefined; muted?: boolean | undefined; volume?: number | undefined; customData?: [string, unknown][] | undefined; }, { id: string; transitions: { properties: [string, any][]; id: string; provider: string; startClipId: string; endClipId: string; inDuration: number; outDuration: number; transitionId: string; }[]; clips: any[]; name?: string | undefined; visible?: boolean | undefined; muted?: boolean | undefined; volume?: number | undefined; customData?: [string, unknown][] | undefined; }>, "many">; fitDuration: z.ZodDefault>; volume: z.ZodDefault>; customData: z.ZodOptional, "many">>; }, "strip", z.ZodTypeAny, { startTime: number; volume: number; fps: number; layers: { id: string; transitions: { properties: [string, any][]; id: string; provider: string; startClipId: string; endClipId: string; inDuration: number; outDuration: number; transitionId: string; }[]; clips: any[]; name?: string | undefined; visible?: boolean | undefined; muted?: boolean | undefined; volume?: number | undefined; customData?: [string, unknown][] | undefined; }[]; fitDuration: number; customData?: [string, unknown][] | undefined; }, { startTime: number; fps: number; layers: { id: string; transitions: { properties: [string, any][]; id: string; provider: string; startClipId: string; endClipId: string; inDuration: number; outDuration: number; transitionId: string; }[]; clips: any[]; name?: string | undefined; visible?: boolean | undefined; muted?: boolean | undefined; volume?: number | undefined; customData?: [string, unknown][] | undefined; }[]; fitDuration?: number | undefined; volume?: number | undefined; customData?: [string, unknown][] | undefined; }>; library: z.ZodObject<{ media: z.ZodArray; filename: z.ZodString; permanentUrl: z.ZodOptional; hash: z.ZodOptional; mimeType: z.ZodOptional; customData: z.ZodOptional, "many">>; placeholderClipIds: z.ZodOptional>; }, "strip", z.ZodTypeAny, { type: string; id: string; filename: string; name?: string | undefined; permanentUrl?: string | undefined; hash?: string | undefined; mimeType?: string | undefined; customData?: [string, unknown][] | undefined; placeholderClipIds?: string[] | undefined; }, { type: string; id: string; filename: string; name?: string | undefined; permanentUrl?: string | undefined; hash?: string | undefined; mimeType?: string | undefined; customData?: [string, unknown][] | undefined; placeholderClipIds?: string[] | undefined; }>, "many">; subtitles: z.ZodArray>; }, "strip", z.ZodTypeAny, { text: string; time: number; duration: number; wordTimings?: number[] | undefined; }, { text: string; time: number; duration: number; wordTimings?: number[] | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { id: string; duration: number; language: string; textBlocks: { text: string; time: number; duration: number; wordTimings?: number[] | undefined; }[]; }, { id: string; duration: number; language: string; textBlocks: { text: string; time: number; duration: number; wordTimings?: number[] | undefined; }[]; }>, "many">; effects: z.ZodArray; label: z.ZodOptional; description: z.ZodOptional; defaultValue: z.ZodType, z.ZodTypeDef, Required>; min: z.ZodOptional]>>; max: z.ZodOptional]>>; step: z.ZodOptional]>>; initOnly: z.ZodOptional; }, "strip", z.ZodTypeAny, { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }, { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }>, "many">; inputTextures: z.ZodOptional>; scaleMode: z.ZodOptional>; mipmap: z.ZodOptional>; }, "strip", z.ZodTypeAny, { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }, { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }>, "many">>; autoFit: z.ZodOptional; noTransform: z.ZodOptional; blendMode: z.ZodOptional>; padding: z.ZodOptional; }, "strip", z.ZodTypeAny, { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; fragmentSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; autoFit?: boolean | undefined; noTransform?: boolean | undefined; blendMode?: import("./types").BlendModeEnum | undefined; padding?: number | undefined; }, { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; fragmentSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; autoFit?: boolean | undefined; noTransform?: boolean | undefined; blendMode?: import("./types").BlendModeEnum | undefined; padding?: number | undefined; }>, "many">; filters: z.ZodArray, "many">; transitions: z.ZodArray; label: z.ZodOptional; description: z.ZodOptional; defaultValue: z.ZodType, z.ZodTypeDef, Required>; min: z.ZodOptional]>>; max: z.ZodOptional]>>; step: z.ZodOptional]>>; initOnly: z.ZodOptional; }, "strip", z.ZodTypeAny, { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }, { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }>, "many">; inputTextures: z.ZodOptional>; scaleMode: z.ZodOptional>; mipmap: z.ZodOptional>; }, "strip", z.ZodTypeAny, { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }, { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }>, "many">>; }, "strip", z.ZodTypeAny, { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; transitionSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; }, { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; transitionSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; }>, "many">; customData: z.ZodOptional, "many">>; }, "strip", z.ZodTypeAny, { subtitles: { id: string; duration: number; language: string; textBlocks: { text: string; time: number; duration: number; wordTimings?: number[] | undefined; }[]; }[]; media: { type: string; id: string; filename: string; name?: string | undefined; permanentUrl?: string | undefined; hash?: string | undefined; mimeType?: string | undefined; customData?: [string, unknown][] | undefined; placeholderClipIds?: string[] | undefined; }[]; transitions: { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; transitionSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; }[]; filters: { name: string; id: string; provider: string; lutUrl: string; }[]; effects: { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; fragmentSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; autoFit?: boolean | undefined; noTransform?: boolean | undefined; blendMode?: import("./types").BlendModeEnum | undefined; padding?: number | undefined; }[]; customData?: [string, unknown][] | undefined; }, { subtitles: { id: string; duration: number; language: string; textBlocks: { text: string; time: number; duration: number; wordTimings?: number[] | undefined; }[]; }[]; media: { type: string; id: string; filename: string; name?: string | undefined; permanentUrl?: string | undefined; hash?: string | undefined; mimeType?: string | undefined; customData?: [string, unknown][] | undefined; placeholderClipIds?: string[] | undefined; }[]; transitions: { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; transitionSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; }[]; filters: { name: string; id: string; provider: string; lutUrl: string; }[]; effects: { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; fragmentSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; autoFit?: boolean | undefined; noTransform?: boolean | undefined; blendMode?: import("./types").BlendModeEnum | undefined; padding?: number | undefined; }[]; customData?: [string, unknown][] | undefined; }>; subtitlesManager: z.ZodOptional; highlightEnabled: z.ZodDefault; highlightAnimation: z.ZodNativeEnum; highlightAnimationSpeed: z.ZodNumber; mainTextStyle: z.ZodObject<{ color: z.ZodDefault>; padding: z.ZodDefault>; fontSize: z.ZodDefault>; fontWeight: z.ZodDefault>>; fontFamily: z.ZodDefault>; fontStyle: z.ZodDefault>>; backgroundColor: z.ZodDefault>; strokeColor: z.ZodDefault>; strokeThickness: z.ZodDefault>; letterSpacing: z.ZodDefault>; dropShadow: z.ZodDefault>; dropShadowAlpha: z.ZodDefault>; dropShadowAngle: z.ZodDefault>; dropShadowBlur: z.ZodDefault>; dropShadowColor: z.ZodDefault>; dropShadowDistance: z.ZodDefault>; backgroundPadding: z.ZodDefault>; backgroundCornerRadius: z.ZodDefault>; wordWrapWidth: z.ZodDefault>; wordWrap: z.ZodDefault>; leading: z.ZodDefault>; lineHeight: z.ZodDefault>; }, "strip", z.ZodTypeAny, { color: string; padding: number; fontSize: number; fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; fontFamily: string; fontStyle: "normal" | "italic" | "oblique"; backgroundColor: string; strokeColor: string; strokeThickness: number; wordWrapWidth: number; lineHeight: number; letterSpacing: number; dropShadow: boolean; dropShadowAlpha: number; dropShadowAngle: number; dropShadowBlur: number; dropShadowColor: string; dropShadowDistance: number; wordWrap: boolean; backgroundPadding: number; backgroundCornerRadius: number; leading: number; }, { color?: string | undefined; padding?: number | undefined; fontSize?: number | undefined; fontWeight?: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined; fontFamily?: string | undefined; fontStyle?: "normal" | "italic" | "oblique" | undefined; backgroundColor?: string | undefined; strokeColor?: string | undefined; strokeThickness?: number | undefined; letterSpacing?: number | undefined; dropShadow?: boolean | undefined; dropShadowAlpha?: number | undefined; dropShadowAngle?: number | undefined; dropShadowBlur?: number | undefined; dropShadowColor?: string | undefined; dropShadowDistance?: number | undefined; backgroundPadding?: number | undefined; backgroundCornerRadius?: number | undefined; wordWrapWidth?: number | undefined; wordWrap?: boolean | undefined; leading?: number | undefined; lineHeight?: number | undefined; }>; highlightTextStyle: z.ZodObject<{ color: z.ZodDefault>; padding: z.ZodDefault>; fontSize: z.ZodDefault>; fontWeight: z.ZodDefault>>; fontFamily: z.ZodDefault>; fontStyle: z.ZodDefault>>; backgroundColor: z.ZodDefault>; strokeColor: z.ZodDefault>; strokeThickness: z.ZodDefault>; letterSpacing: z.ZodDefault>; dropShadow: z.ZodDefault>; dropShadowAlpha: z.ZodDefault>; dropShadowAngle: z.ZodDefault>; dropShadowBlur: z.ZodDefault>; dropShadowColor: z.ZodDefault>; dropShadowDistance: z.ZodDefault>; backgroundPadding: z.ZodDefault>; backgroundCornerRadius: z.ZodDefault>; }, "strip", z.ZodTypeAny, { color: string; padding: number; fontSize: number; fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; fontFamily: string; fontStyle: "normal" | "italic" | "oblique"; backgroundColor: string; strokeColor: string; strokeThickness: number; letterSpacing: number; dropShadow: boolean; dropShadowAlpha: number; dropShadowAngle: number; dropShadowBlur: number; dropShadowColor: string; dropShadowDistance: number; backgroundPadding: number; backgroundCornerRadius: number; }, { color?: string | undefined; padding?: number | undefined; fontSize?: number | undefined; fontWeight?: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined; fontFamily?: string | undefined; fontStyle?: "normal" | "italic" | "oblique" | undefined; backgroundColor?: string | undefined; strokeColor?: string | undefined; strokeThickness?: number | undefined; letterSpacing?: number | undefined; dropShadow?: boolean | undefined; dropShadowAlpha?: number | undefined; dropShadowAngle?: number | undefined; dropShadowBlur?: number | undefined; dropShadowColor?: string | undefined; dropShadowDistance?: number | undefined; backgroundPadding?: number | undefined; backgroundCornerRadius?: number | undefined; }>; position: z.ZodOptional>; scale: z.ZodDefault>; }, "strip", z.ZodTypeAny, { scale: number; textMode: "partial" | "full"; highlightEnabled: boolean; highlightAnimation: import(".").HighlightAnimationEnum; highlightAnimationSpeed: number; mainTextStyle: { color: string; padding: number; fontSize: number; fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; fontFamily: string; fontStyle: "normal" | "italic" | "oblique"; backgroundColor: string; strokeColor: string; strokeThickness: number; wordWrapWidth: number; lineHeight: number; letterSpacing: number; dropShadow: boolean; dropShadowAlpha: number; dropShadowAngle: number; dropShadowBlur: number; dropShadowColor: string; dropShadowDistance: number; wordWrap: boolean; backgroundPadding: number; backgroundCornerRadius: number; leading: number; }; highlightTextStyle: { color: string; padding: number; fontSize: number; fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; fontFamily: string; fontStyle: "normal" | "italic" | "oblique"; backgroundColor: string; strokeColor: string; strokeThickness: number; letterSpacing: number; dropShadow: boolean; dropShadowAlpha: number; dropShadowAngle: number; dropShadowBlur: number; dropShadowColor: string; dropShadowDistance: number; backgroundPadding: number; backgroundCornerRadius: number; }; position?: [number, number] | undefined; }, { textMode: "partial" | "full"; highlightAnimation: import(".").HighlightAnimationEnum; highlightAnimationSpeed: number; mainTextStyle: { color?: string | undefined; padding?: number | undefined; fontSize?: number | undefined; fontWeight?: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined; fontFamily?: string | undefined; fontStyle?: "normal" | "italic" | "oblique" | undefined; backgroundColor?: string | undefined; strokeColor?: string | undefined; strokeThickness?: number | undefined; letterSpacing?: number | undefined; dropShadow?: boolean | undefined; dropShadowAlpha?: number | undefined; dropShadowAngle?: number | undefined; dropShadowBlur?: number | undefined; dropShadowColor?: string | undefined; dropShadowDistance?: number | undefined; backgroundPadding?: number | undefined; backgroundCornerRadius?: number | undefined; wordWrapWidth?: number | undefined; wordWrap?: boolean | undefined; leading?: number | undefined; lineHeight?: number | undefined; }; highlightTextStyle: { color?: string | undefined; padding?: number | undefined; fontSize?: number | undefined; fontWeight?: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined; fontFamily?: string | undefined; fontStyle?: "normal" | "italic" | "oblique" | undefined; backgroundColor?: string | undefined; strokeColor?: string | undefined; strokeThickness?: number | undefined; letterSpacing?: number | undefined; dropShadow?: boolean | undefined; dropShadowAlpha?: number | undefined; dropShadowAngle?: number | undefined; dropShadowBlur?: number | undefined; dropShadowColor?: string | undefined; dropShadowDistance?: number | undefined; backgroundPadding?: number | undefined; backgroundCornerRadius?: number | undefined; }; highlightEnabled?: boolean | undefined; position?: [number, number] | undefined; scale?: number | undefined; }>>; settings: z.ZodOptional>>; useInternalTranscoder: z.ZodDefault>; clipAudioStoreSamples: z.ZodDefault>; clipAudioSampleRate: z.ZodDefault>; clipAudioSampleForceMono: z.ZodDefault>; clipAudioMonoMixType: z.ZodDefault>>; clipAudioMonoChannelsWeight: z.ZodDefault>>; clipVideoStoreSamples: z.ZodDefault>; clipVideoStoreFilmstrip: z.ZodDefault>; clipVideoFilmstripInterval: z.ZodDefault>; clipVideoFilmstripMaxFrames: z.ZodDefault>; clipVideoFilmstripMaxHeight: z.ZodDefault>; clipVideoFilmstripMaxWidth: z.ZodDefault>; clipVideoFilmstripMaxWorkers: z.ZodDefault>; clipVideoFilmstripKeyframesOnly: z.ZodDefault>; clipAudioSeekThreshold: z.ZodDefault>; clipVideoSeekThreshold: z.ZodDefault>; clipVideoDynamicLoad: z.ZodDefault>; clipVideoDynamicLoadTime: z.ZodDefault>; renderShowPreview: z.ZodDefault>; renderMaxQueueSize: z.ZodDefault>; renderThrottleFactor: z.ZodDefault>; renderAudioUseWorker: z.ZodDefault>; renderCancelFailTimeout: z.ZodDefault>; renderVideoUseDirectFrames: z.ZodDefault>; renderUseChunkedOutput: z.ZodDefault>; renderChunkedOutputMaxSize: z.ZodDefault>; renderFixAntialiasDiagonal: z.ZodDefault>; decoderUseWebCodecs: z.ZodDefault>; decoderPreferredAcceleration: z.ZodDefault>>; decoderUseSeparateWorker: z.ZodDefault>; decoderUseSubImage: z.ZodDefault>; encoderCodec: z.ZodDefault>>; encoderUseWebCodecs: z.ZodDefault>; encoderUseAlpha: z.ZodDefault>; encoderBitrate: z.ZodDefault>; encoderBitrateMode: z.ZodDefault>>; encoderPerformanceMode: z.ZodDefault>>; encoderDeadline: z.ZodDefault>; encoderCrf: z.ZodDefault>; encoderForcedCodecRFCString: z.ZodDefault>; encoderPreferredAcceleration: z.ZodDefault>>; encoderKeyframeInterval: z.ZodDefault>; subtitlesScaleOnResize: z.ZodDefault>; subtitlesAutoWrapOnResize: z.ZodDefault>; viewAutoLayoutOnResize: z.ZodDefault>>; mediaHashAlgorithm: z.ZodDefault>>; }, "strip", z.ZodTypeAny, { m3u8MaxResolution: [number, number]; useInternalTranscoder: boolean; clipAudioStoreSamples: boolean; clipAudioSampleRate: number; clipAudioSampleForceMono: boolean; clipAudioMonoMixType: import(".").MonoMixType; clipAudioMonoChannelsWeight: number[]; clipVideoStoreSamples: boolean; clipVideoStoreFilmstrip: boolean; clipVideoFilmstripInterval: number; clipVideoFilmstripMaxFrames: number; clipVideoFilmstripMaxHeight: number; clipVideoFilmstripMaxWidth: number; clipVideoFilmstripMaxWorkers: number; clipVideoFilmstripKeyframesOnly: boolean; clipAudioSeekThreshold: number; clipVideoSeekThreshold: number; clipVideoDynamicLoad: boolean; clipVideoDynamicLoadTime: number; renderShowPreview: boolean; renderMaxQueueSize: number; renderThrottleFactor: number; renderAudioUseWorker: boolean; renderCancelFailTimeout: number; renderVideoUseDirectFrames: boolean; renderUseChunkedOutput: boolean; renderChunkedOutputMaxSize: number; renderFixAntialiasDiagonal: boolean; decoderUseWebCodecs: boolean; decoderPreferredAcceleration: import(".").PreferredAcceleration; decoderUseSeparateWorker: boolean; decoderUseSubImage: boolean; encoderCodec: VideoCodec; encoderUseWebCodecs: boolean; encoderUseAlpha: boolean; encoderBitrate: number; encoderBitrateMode: import(".").BitrateMode; encoderPerformanceMode: import(".").PerformanceMode; encoderDeadline: number; encoderCrf: number; encoderForcedCodecRFCString: string; encoderPreferredAcceleration: import(".").PreferredAcceleration; encoderKeyframeInterval: number; subtitlesScaleOnResize: boolean; subtitlesAutoWrapOnResize: boolean; viewAutoLayoutOnResize: import(".").AutoLayoutMode; mediaHashAlgorithm: import("./types").HashAlgorithmEnum; }, { m3u8MaxResolution?: [number, number] | undefined; useInternalTranscoder?: boolean | undefined; clipAudioStoreSamples?: boolean | undefined; clipAudioSampleRate?: number | undefined; clipAudioSampleForceMono?: boolean | undefined; clipAudioMonoMixType?: import(".").MonoMixType | undefined; clipAudioMonoChannelsWeight?: number[] | undefined; clipVideoStoreSamples?: boolean | undefined; clipVideoStoreFilmstrip?: boolean | undefined; clipVideoFilmstripInterval?: number | undefined; clipVideoFilmstripMaxFrames?: number | undefined; clipVideoFilmstripMaxHeight?: number | undefined; clipVideoFilmstripMaxWidth?: number | undefined; clipVideoFilmstripMaxWorkers?: number | undefined; clipVideoFilmstripKeyframesOnly?: boolean | undefined; clipAudioSeekThreshold?: number | undefined; clipVideoSeekThreshold?: number | undefined; clipVideoDynamicLoad?: boolean | undefined; clipVideoDynamicLoadTime?: number | undefined; renderShowPreview?: boolean | undefined; renderMaxQueueSize?: number | undefined; renderThrottleFactor?: number | undefined; renderAudioUseWorker?: boolean | undefined; renderCancelFailTimeout?: number | undefined; renderVideoUseDirectFrames?: boolean | undefined; renderUseChunkedOutput?: boolean | undefined; renderChunkedOutputMaxSize?: number | undefined; renderFixAntialiasDiagonal?: boolean | undefined; decoderUseWebCodecs?: boolean | undefined; decoderPreferredAcceleration?: import(".").PreferredAcceleration | undefined; decoderUseSeparateWorker?: boolean | undefined; decoderUseSubImage?: boolean | undefined; encoderCodec?: VideoCodec | undefined; encoderUseWebCodecs?: boolean | undefined; encoderUseAlpha?: boolean | undefined; encoderBitrate?: number | undefined; encoderBitrateMode?: import(".").BitrateMode | undefined; encoderPerformanceMode?: import(".").PerformanceMode | undefined; encoderDeadline?: number | undefined; encoderCrf?: number | undefined; encoderForcedCodecRFCString?: string | undefined; encoderPreferredAcceleration?: import(".").PreferredAcceleration | undefined; encoderKeyframeInterval?: number | undefined; subtitlesScaleOnResize?: boolean | undefined; subtitlesAutoWrapOnResize?: boolean | undefined; viewAutoLayoutOnResize?: import(".").AutoLayoutMode | undefined; mediaHashAlgorithm?: import("./types").HashAlgorithmEnum | undefined; }>>; customData: z.ZodOptional, "many">>; }, "strip", z.ZodTypeAny, { display: { width: number; height: number; backgroundColor: string; }; timeline: { startTime: number; volume: number; fps: number; layers: { id: string; transitions: { properties: [string, any][]; id: string; provider: string; startClipId: string; endClipId: string; inDuration: number; outDuration: number; transitionId: string; }[]; clips: any[]; name?: string | undefined; visible?: boolean | undefined; muted?: boolean | undefined; volume?: number | undefined; customData?: [string, unknown][] | undefined; }[]; fitDuration: number; customData?: [string, unknown][] | undefined; }; library: { subtitles: { id: string; duration: number; language: string; textBlocks: { text: string; time: number; duration: number; wordTimings?: number[] | undefined; }[]; }[]; media: { type: string; id: string; filename: string; name?: string | undefined; permanentUrl?: string | undefined; hash?: string | undefined; mimeType?: string | undefined; customData?: [string, unknown][] | undefined; placeholderClipIds?: string[] | undefined; }[]; transitions: { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; transitionSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; }[]; filters: { name: string; id: string; provider: string; lutUrl: string; }[]; effects: { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; fragmentSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; autoFit?: boolean | undefined; noTransform?: boolean | undefined; blendMode?: import("./types").BlendModeEnum | undefined; padding?: number | undefined; }[]; customData?: [string, unknown][] | undefined; }; version?: string | undefined; createdAt?: number | undefined; projectId?: string | undefined; subtitlesManager?: { scale: number; textMode: "partial" | "full"; highlightEnabled: boolean; highlightAnimation: import(".").HighlightAnimationEnum; highlightAnimationSpeed: number; mainTextStyle: { color: string; padding: number; fontSize: number; fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; fontFamily: string; fontStyle: "normal" | "italic" | "oblique"; backgroundColor: string; strokeColor: string; strokeThickness: number; wordWrapWidth: number; lineHeight: number; letterSpacing: number; dropShadow: boolean; dropShadowAlpha: number; dropShadowAngle: number; dropShadowBlur: number; dropShadowColor: string; dropShadowDistance: number; wordWrap: boolean; backgroundPadding: number; backgroundCornerRadius: number; leading: number; }; highlightTextStyle: { color: string; padding: number; fontSize: number; fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; fontFamily: string; fontStyle: "normal" | "italic" | "oblique"; backgroundColor: string; strokeColor: string; strokeThickness: number; letterSpacing: number; dropShadow: boolean; dropShadowAlpha: number; dropShadowAngle: number; dropShadowBlur: number; dropShadowColor: string; dropShadowDistance: number; backgroundPadding: number; backgroundCornerRadius: number; }; position?: [number, number] | undefined; } | undefined; settings?: { m3u8MaxResolution: [number, number]; useInternalTranscoder: boolean; clipAudioStoreSamples: boolean; clipAudioSampleRate: number; clipAudioSampleForceMono: boolean; clipAudioMonoMixType: import(".").MonoMixType; clipAudioMonoChannelsWeight: number[]; clipVideoStoreSamples: boolean; clipVideoStoreFilmstrip: boolean; clipVideoFilmstripInterval: number; clipVideoFilmstripMaxFrames: number; clipVideoFilmstripMaxHeight: number; clipVideoFilmstripMaxWidth: number; clipVideoFilmstripMaxWorkers: number; clipVideoFilmstripKeyframesOnly: boolean; clipAudioSeekThreshold: number; clipVideoSeekThreshold: number; clipVideoDynamicLoad: boolean; clipVideoDynamicLoadTime: number; renderShowPreview: boolean; renderMaxQueueSize: number; renderThrottleFactor: number; renderAudioUseWorker: boolean; renderCancelFailTimeout: number; renderVideoUseDirectFrames: boolean; renderUseChunkedOutput: boolean; renderChunkedOutputMaxSize: number; renderFixAntialiasDiagonal: boolean; decoderUseWebCodecs: boolean; decoderPreferredAcceleration: import(".").PreferredAcceleration; decoderUseSeparateWorker: boolean; decoderUseSubImage: boolean; encoderCodec: VideoCodec; encoderUseWebCodecs: boolean; encoderUseAlpha: boolean; encoderBitrate: number; encoderBitrateMode: import(".").BitrateMode; encoderPerformanceMode: import(".").PerformanceMode; encoderDeadline: number; encoderCrf: number; encoderForcedCodecRFCString: string; encoderPreferredAcceleration: import(".").PreferredAcceleration; encoderKeyframeInterval: number; subtitlesScaleOnResize: boolean; subtitlesAutoWrapOnResize: boolean; viewAutoLayoutOnResize: import(".").AutoLayoutMode; mediaHashAlgorithm: import("./types").HashAlgorithmEnum; } | undefined; customData?: [string, unknown][] | undefined; }, { display: { width: number; height: number; backgroundColor: string; }; timeline: { startTime: number; fps: number; layers: { id: string; transitions: { properties: [string, any][]; id: string; provider: string; startClipId: string; endClipId: string; inDuration: number; outDuration: number; transitionId: string; }[]; clips: any[]; name?: string | undefined; visible?: boolean | undefined; muted?: boolean | undefined; volume?: number | undefined; customData?: [string, unknown][] | undefined; }[]; fitDuration?: number | undefined; volume?: number | undefined; customData?: [string, unknown][] | undefined; }; library: { subtitles: { id: string; duration: number; language: string; textBlocks: { text: string; time: number; duration: number; wordTimings?: number[] | undefined; }[]; }[]; media: { type: string; id: string; filename: string; name?: string | undefined; permanentUrl?: string | undefined; hash?: string | undefined; mimeType?: string | undefined; customData?: [string, unknown][] | undefined; placeholderClipIds?: string[] | undefined; }[]; transitions: { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; transitionSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; }[]; filters: { name: string; id: string; provider: string; lutUrl: string; }[]; effects: { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; fragmentSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; autoFit?: boolean | undefined; noTransform?: boolean | undefined; blendMode?: import("./types").BlendModeEnum | undefined; padding?: number | undefined; }[]; customData?: [string, unknown][] | undefined; }; version?: string | undefined; createdAt?: number | undefined; projectId?: string | undefined; subtitlesManager?: { textMode: "partial" | "full"; highlightAnimation: import(".").HighlightAnimationEnum; highlightAnimationSpeed: number; mainTextStyle: { color?: string | undefined; padding?: number | undefined; fontSize?: number | undefined; fontWeight?: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined; fontFamily?: string | undefined; fontStyle?: "normal" | "italic" | "oblique" | undefined; backgroundColor?: string | undefined; strokeColor?: string | undefined; strokeThickness?: number | undefined; letterSpacing?: number | undefined; dropShadow?: boolean | undefined; dropShadowAlpha?: number | undefined; dropShadowAngle?: number | undefined; dropShadowBlur?: number | undefined; dropShadowColor?: string | undefined; dropShadowDistance?: number | undefined; backgroundPadding?: number | undefined; backgroundCornerRadius?: number | undefined; wordWrapWidth?: number | undefined; wordWrap?: boolean | undefined; leading?: number | undefined; lineHeight?: number | undefined; }; highlightTextStyle: { color?: string | undefined; padding?: number | undefined; fontSize?: number | undefined; fontWeight?: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined; fontFamily?: string | undefined; fontStyle?: "normal" | "italic" | "oblique" | undefined; backgroundColor?: string | undefined; strokeColor?: string | undefined; strokeThickness?: number | undefined; letterSpacing?: number | undefined; dropShadow?: boolean | undefined; dropShadowAlpha?: number | undefined; dropShadowAngle?: number | undefined; dropShadowBlur?: number | undefined; dropShadowColor?: string | undefined; dropShadowDistance?: number | undefined; backgroundPadding?: number | undefined; backgroundCornerRadius?: number | undefined; }; highlightEnabled?: boolean | undefined; position?: [number, number] | undefined; scale?: number | undefined; } | undefined; settings?: { m3u8MaxResolution?: [number, number] | undefined; useInternalTranscoder?: boolean | undefined; clipAudioStoreSamples?: boolean | undefined; clipAudioSampleRate?: number | undefined; clipAudioSampleForceMono?: boolean | undefined; clipAudioMonoMixType?: import(".").MonoMixType | undefined; clipAudioMonoChannelsWeight?: number[] | undefined; clipVideoStoreSamples?: boolean | undefined; clipVideoStoreFilmstrip?: boolean | undefined; clipVideoFilmstripInterval?: number | undefined; clipVideoFilmstripMaxFrames?: number | undefined; clipVideoFilmstripMaxHeight?: number | undefined; clipVideoFilmstripMaxWidth?: number | undefined; clipVideoFilmstripMaxWorkers?: number | undefined; clipVideoFilmstripKeyframesOnly?: boolean | undefined; clipAudioSeekThreshold?: number | undefined; clipVideoSeekThreshold?: number | undefined; clipVideoDynamicLoad?: boolean | undefined; clipVideoDynamicLoadTime?: number | undefined; renderShowPreview?: boolean | undefined; renderMaxQueueSize?: number | undefined; renderThrottleFactor?: number | undefined; renderAudioUseWorker?: boolean | undefined; renderCancelFailTimeout?: number | undefined; renderVideoUseDirectFrames?: boolean | undefined; renderUseChunkedOutput?: boolean | undefined; renderChunkedOutputMaxSize?: number | undefined; renderFixAntialiasDiagonal?: boolean | undefined; decoderUseWebCodecs?: boolean | undefined; decoderPreferredAcceleration?: import(".").PreferredAcceleration | undefined; decoderUseSeparateWorker?: boolean | undefined; decoderUseSubImage?: boolean | undefined; encoderCodec?: VideoCodec | undefined; encoderUseWebCodecs?: boolean | undefined; encoderUseAlpha?: boolean | undefined; encoderBitrate?: number | undefined; encoderBitrateMode?: import(".").BitrateMode | undefined; encoderPerformanceMode?: import(".").PerformanceMode | undefined; encoderDeadline?: number | undefined; encoderCrf?: number | undefined; encoderForcedCodecRFCString?: string | undefined; encoderPreferredAcceleration?: import(".").PreferredAcceleration | undefined; encoderKeyframeInterval?: number | undefined; subtitlesScaleOnResize?: boolean | undefined; subtitlesAutoWrapOnResize?: boolean | undefined; viewAutoLayoutOnResize?: import(".").AutoLayoutMode | undefined; mediaHashAlgorithm?: import("./types").HashAlgorithmEnum | undefined; } | undefined; customData?: [string, unknown][] | undefined; }>; type CustomClipConstructor = { new (...args: any[]): T; }; /** * Main SDK entrypoint for project editing, playback, serialization, and export. * * The engine coordinates the display, timeline, library, storage, subtitles, rendering, and * media-processing subsystems behind a single singleton instance. */ export declare class Engine { private static instance?; static readonly currentVersion: string; static projectVersion: string; private static queuedDeserializeData; private static isDeserializing; private static deserializationPromise?; private static safariHackAudioContext?; private display; private timeline; private library; private readonly fontRegistry; private subtitlesManager; private readonly undoManager; private storageController; private transcoder; private settings; readonly events: EventEmitter; private initialized; private initializing; private license?; private projectId; private isDestroying; private createdAt; private onSetupLibrary?; private dataHashFunction?; private initOptions; private ready; protected customData?: Map; private readonly renderer; private readonly backgroundTimer; private constructor(); static getInstance(): Engine; /** * Indicates whether the engine singleton has already been created. * * @returns `true` if an engine instance already exists; otherwise `false`. */ hasInstance(): boolean; /** * Returns the low-level FFmpeg instance used by the SDK. * * @returns The initialized FFmpeg bridge. */ getFFmpeg(): import("./libs/ffmpeg").FFmpeg; private checkSafariAudioHack; /** * Initializes the engine and all configured subsystems. * * This sets up display, FFmpeg, storage, library state, timeline state, licensing, and * optional transcoding support. * * @param options Engine startup configuration. * @returns A promise that resolves after initialization has completed. */ init(options: EngineOptions): Promise; private getMissingLibraryAssets; private getLicenseCredentials; /** * Destroys the current engine state and releases runtime resources. * * @param everything When `true`, also destroys long-lived singletons such as display, renderer, * FFmpeg, and font registry, and clears the engine singleton reference. * @returns A promise that resolves after teardown finishes. */ destroy(everything?: boolean): Promise; /** * Returns the background timer used for deferred work while the page is inactive. * * @returns The engine background timer. */ getBackgroundTimer(): BackgroundTimer; /** * Returns the identifier of the active project. * * @returns The current project ID. */ getProjectId(): string; /** * Replaces the active project identifier and reinitializes storage for the new project. * * @param id Project identifier to assign. * @returns A promise that resolves after storage has been rebound to the new project ID. */ setProjectId(id: string): Promise; /** * Returns the display controller used to render the project canvas. * * @returns The engine display. */ getDisplay(): Display; /** * Returns the timeline managed by the engine. * * @returns The project timeline. */ getTimeline(): Timeline; /** * Returns the library that owns imported media, effects, filters, transitions, and subtitles. * * @returns The project library. */ getLibrary(): Library; /** * Returns the project settings currently applied by the engine. * * @returns The active settings instance. */ getSettings(): Settings; /** * Returns the font registry used by text and HTML clips. * * @returns The font registry. */ getFontRegistry(): FontRegistry; /** * Returns the undo manager associated with the engine. * * @returns The undo manager. */ getUndoManager(): UndoManager; /** * Returns the subtitles manager used for subtitle track styling and playback. * * @returns The subtitles manager. */ getSubtitlesManager(): SubtitlesManager; /** * Returns the storage controller responsible for project persistence. * * @returns The storage controller. */ getStorageController(): StorageController; /** * Returns the optional transcode provider configured for this engine. * * @returns The transcode provider, or `null` when transcoding is not configured. */ getTranscoder(): ITranscodeProvider | null; /** * Indicates whether `init()` has completed successfully for this engine instance. * * @returns `true` if the engine has been initialized; otherwise `false`. */ isInitialized(): boolean; /** * Indicates whether preview rendering or export rendering is currently running. * * @returns `true` while render work is in progress; otherwise `false`. */ isRendering(): boolean; /** * Exports the current project using the supplied export settings. * * @param payload Export configuration describing output type, time range, resolution scale, and audio format. * @returns A promise that resolves to the exported artifact, or `null` when no file is produced. */ export(payload?: ExportOptions): Promise; /** * Exports an audio-only mix for the requested timeline range. * * @param payload Audio export configuration, including the exported range and optional clip filtering. * @returns A promise that resolves to the exported audio artifact, or `null` when no file is produced. */ exportAudioRange(payload: AudioRangeExportOptions): Promise; /** * Cancels the active export, if one is currently running. * * @returns A promise that resolves after cancellation has been propagated to the renderer. */ cancelExport(): Promise; /** * Starts timeline playback. * * @returns A promise that resolves after playback has started. */ play(): Promise; /** * Pauses timeline playback without discarding the current playhead position. * * @returns A promise that resolves after playback has paused. */ pause(): Promise; /** * Stops timeline playback. * * @returns A promise that resolves after playback has stopped. */ stop(): Promise; /** * Moves the timeline playhead to the requested time. * * @param value Target timeline time, in seconds. * @returns A promise that resolves after seeking has completed. */ seek(value: number): Promise; /** * Returns the SDK version bundled into the current build. * * @returns The current SDK version string. */ static getSDKVersion(): string; /** * Returns the renderer currently backing the engine display. * * @returns The active PIXI renderer wrapper. */ getRenderer(): import("./modules/display/renderer/PixiRenderer").PixiRenderer; /** * Returns the root PIXI stage used for rendering. * * @returns The renderer stage. */ getRendererStage(): PIXI.Container | null; /** * Looks up a clip by its timeline identifier. * * @param clipId Clip identifier to resolve. * @returns The matching clip, or `undefined` if no clip exists for that ID. */ getClipById(clipId: string): import(".").Clip> | undefined; /** * Returns the IDs of clips intersecting the supplied canvas coordinates. * * This method is currently a placeholder and always returns `null`. * * @param x Horizontal coordinate in canvas space. * @param y Vertical coordinate in canvas space. * @returns `null`. */ getClipsIdsForPoint(x: number, y: number): null; /** * Activates a subtitles track on the timeline. * * @param subtitlesId Subtitle track identifier to apply. * @param offset Time offset, in seconds, used when synchronizing the subtitles track. * @returns Nothing. */ setSubtitles(subtitlesId: string, offset: number): void; /** * Returns the custom media hash function configured during initialization. * * @returns The custom hash function, or `undefined` when the default behavior is used. */ getDataHashFunction(): ((data: Uint8Array) => Promise) | undefined; /** * Indicates whether imported media should have audio separated for the current platform. * * @returns `true` when audio splitting should be enabled; otherwise `false`. */ shouldSplitAudio(): boolean; /** * Stores custom metadata on the engine instance. * * @param key Metadata key to write. * @param value Metadata value to store. * @param overwrite When `false`, existing values are preserved and the write is rejected. * @returns `true` if the value was stored; otherwise `false`. */ setCustomData(key: string, value: unknown, overwrite?: boolean): boolean; /** * Reads a custom metadata value previously stored on the engine. * * @param key Metadata key to read. * @returns The stored value, or `undefined` if the key is not present. */ getCustomData(key: string): unknown; /** * Checks whether a custom metadata entry exists. * * @param key Metadata key to check. * @returns `true` if the key exists; otherwise `false`. */ hasCustomData(key: string): boolean; /** * Removes all custom metadata entries from the engine. * * @returns Nothing. */ clearAllCustomData(): void; /** * Replaces all custom metadata entries with the supplied map. * * @param data Metadata map to store. * @returns Nothing. */ setAllCustomData(data: Map): void; /** * Returns a copy of the engine's custom metadata. * * @returns A new metadata map, or `undefined` when no custom metadata has been set. */ getAllCustomData(): Map | undefined; /** * Captures a rendered frame as a base64-encoded image. * * If `time` is provided, the timeline is temporarily seeked before capture and then restored. * * @param time Optional timeline time, in seconds, to capture. * @param mimeType Image MIME type used for encoding. * @param quality Encoder quality passed to PIXI extraction for lossy formats. * @returns A promise that resolves to a base64 image string, or an empty string when no renderer is available. */ getFrameAsBase64Image(time?: number, mimeType?: "image/jpeg" | "image/webp" | "image/png", quality?: number): Promise; customClipTypes: Map; /** * Registers a custom clip constructor under a clip type identifier. * * @param classType Constructor used to create clip instances of the custom type. * @param typeEnum Clip type identifier associated with the constructor. * @returns Nothing. */ registerCustomClip(classType: CustomClipConstructor, typeEnum: string): void; /** * Invokes a static method on a previously registered custom clip type. * * @param typeEnum Registered custom clip type to target. * @param methodName Static method name to invoke. * @param args Arguments forwarded to the static method. * @returns The value returned by the static method. */ callStaticCustomClipMethod(typeEnum: string, methodName: string, ...args: any[]): any; /** * Creates an instance of a registered custom clip type. * * @param typeEnum Registered custom clip type to instantiate. * @param args Arguments forwarded to the custom clip constructor. * @returns The created custom clip instance. */ createCustomClipInstance(typeEnum: string, ...args: any[]): T; /** * Checks whether a custom clip type has been registered. * * @param typeEnum Clip type identifier to test. * @returns `true` if the custom clip type exists; otherwise `false`. */ hasCustomClipType(typeEnum: string): boolean; /** * Replaces the current project with a fresh empty project. * * @returns A promise that resolves after the reset project has been deserialized. */ reset(): Promise; /** * Indicates whether the engine is ready for playback, editing, and rendering work. * * @returns `true` if initialization has completed and the engine is ready; otherwise `false`. */ isReady(): boolean; /** * Indicates whether the current engine state can be serialized safely. * * @returns `true` when the engine is ready and the library is not processing background work; otherwise `false`. */ isSafeToSerialize(): boolean; /** * Serializes the current project into a schema-validated plain object. * * @returns The serialized engine payload. */ serialize(): { display: { width: number; height: number; backgroundColor: string; }; timeline: { startTime: number; volume: number; fps: number; layers: { id: string; transitions: { properties: [string, any][]; id: string; provider: string; startClipId: string; endClipId: string; inDuration: number; outDuration: number; transitionId: string; }[]; clips: any[]; name?: string | undefined; visible?: boolean | undefined; muted?: boolean | undefined; volume?: number | undefined; customData?: [string, unknown][] | undefined; }[]; fitDuration: number; customData?: [string, unknown][] | undefined; }; library: { subtitles: { id: string; duration: number; language: string; textBlocks: { text: string; time: number; duration: number; wordTimings?: number[] | undefined; }[]; }[]; media: { type: string; id: string; filename: string; name?: string | undefined; permanentUrl?: string | undefined; hash?: string | undefined; mimeType?: string | undefined; customData?: [string, unknown][] | undefined; placeholderClipIds?: string[] | undefined; }[]; transitions: { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; transitionSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; }[]; filters: { name: string; id: string; provider: string; lutUrl: string; }[]; effects: { name: string; properties: { type: import(".").PropertyDescriptionTypeEnum; name: string; defaultValue: Required; label?: string | undefined; description?: string | undefined; min?: number | number[] | undefined; max?: number | number[] | undefined; step?: number | number[] | undefined; initOnly?: boolean | undefined; }[]; id: string; provider: string; fragmentSrc: string; inputTextures?: { name: string; url: string; wrapMode?: import(".").InputTextureWrapMode | undefined; scaleMode?: import(".").InputTextureScaleMode | undefined; mipmap?: import(".").InputTextureMipmapMode | undefined; }[] | undefined; autoFit?: boolean | undefined; noTransform?: boolean | undefined; blendMode?: import("./types").BlendModeEnum | undefined; padding?: number | undefined; }[]; customData?: [string, unknown][] | undefined; }; version?: string | undefined; createdAt?: number | undefined; projectId?: string | undefined; subtitlesManager?: { scale: number; textMode: "partial" | "full"; highlightEnabled: boolean; highlightAnimation: import(".").HighlightAnimationEnum; highlightAnimationSpeed: number; mainTextStyle: { color: string; padding: number; fontSize: number; fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; fontFamily: string; fontStyle: "normal" | "italic" | "oblique"; backgroundColor: string; strokeColor: string; strokeThickness: number; wordWrapWidth: number; lineHeight: number; letterSpacing: number; dropShadow: boolean; dropShadowAlpha: number; dropShadowAngle: number; dropShadowBlur: number; dropShadowColor: string; dropShadowDistance: number; wordWrap: boolean; backgroundPadding: number; backgroundCornerRadius: number; leading: number; }; highlightTextStyle: { color: string; padding: number; fontSize: number; fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; fontFamily: string; fontStyle: "normal" | "italic" | "oblique"; backgroundColor: string; strokeColor: string; strokeThickness: number; letterSpacing: number; dropShadow: boolean; dropShadowAlpha: number; dropShadowAngle: number; dropShadowBlur: number; dropShadowColor: string; dropShadowDistance: number; backgroundPadding: number; backgroundCornerRadius: number; }; position?: [number, number] | undefined; } | undefined; settings?: { m3u8MaxResolution: [number, number]; useInternalTranscoder: boolean; clipAudioStoreSamples: boolean; clipAudioSampleRate: number; clipAudioSampleForceMono: boolean; clipAudioMonoMixType: import(".").MonoMixType; clipAudioMonoChannelsWeight: number[]; clipVideoStoreSamples: boolean; clipVideoStoreFilmstrip: boolean; clipVideoFilmstripInterval: number; clipVideoFilmstripMaxFrames: number; clipVideoFilmstripMaxHeight: number; clipVideoFilmstripMaxWidth: number; clipVideoFilmstripMaxWorkers: number; clipVideoFilmstripKeyframesOnly: boolean; clipAudioSeekThreshold: number; clipVideoSeekThreshold: number; clipVideoDynamicLoad: boolean; clipVideoDynamicLoadTime: number; renderShowPreview: boolean; renderMaxQueueSize: number; renderThrottleFactor: number; renderAudioUseWorker: boolean; renderCancelFailTimeout: number; renderVideoUseDirectFrames: boolean; renderUseChunkedOutput: boolean; renderChunkedOutputMaxSize: number; renderFixAntialiasDiagonal: boolean; decoderUseWebCodecs: boolean; decoderPreferredAcceleration: import(".").PreferredAcceleration; decoderUseSeparateWorker: boolean; decoderUseSubImage: boolean; encoderCodec: VideoCodec; encoderUseWebCodecs: boolean; encoderUseAlpha: boolean; encoderBitrate: number; encoderBitrateMode: import(".").BitrateMode; encoderPerformanceMode: import(".").PerformanceMode; encoderDeadline: number; encoderCrf: number; encoderForcedCodecRFCString: string; encoderPreferredAcceleration: import(".").PreferredAcceleration; encoderKeyframeInterval: number; subtitlesScaleOnResize: boolean; subtitlesAutoWrapOnResize: boolean; viewAutoLayoutOnResize: import(".").AutoLayoutMode; mediaHashAlgorithm: import("./types").HashAlgorithmEnum; } | undefined; customData?: [string, unknown][] | undefined; }; private static _deserializationPromiseAction; /** * Restores engine state from a serialized project payload. * * If another deserialization is already in progress, the latest payload is queued and processed after * the active deserialization finishes. * * @param data Serialized engine payload to load. * @returns A promise that resolves to the engine instance once deserialization finishes. */ static deserialize(data: object): Promise; } export {};