/** * Compositor Store for Svelte 5 * Manages compositor state with scenes, layers, and transitions */ import { type Readable } from "svelte/store"; import type { Scene, Layer, LayerTransform, LayoutConfig, TransitionConfig, RendererType, RendererStats, CompositorConfig } from "@livepeer-frameworks/streamcrafter-core"; import type { IngestControllerV2 } from "@livepeer-frameworks/streamcrafter-core"; export interface CompositorState { isEnabled: boolean; isInitialized: boolean; rendererType: RendererType | null; stats: RendererStats | null; scenes: Scene[]; activeSceneId: string | null; currentLayout: LayoutConfig | null; } export interface CompositorStore extends Readable { readonly activeScene: Readable; enable: (config?: Partial) => Promise; disable: () => void; createScene: (name: string, backgroundColor?: string) => Scene | null; deleteScene: (sceneId: string) => void; setActiveScene: (sceneId: string) => void; transitionTo: (sceneId: string, transition?: TransitionConfig) => Promise; addLayer: (sceneId: string, sourceId: string, transform?: Partial) => Layer | null; removeLayer: (sceneId: string, layerId: string) => void; updateLayerTransform: (sceneId: string, layerId: string, transform: Partial) => void; setLayerVisibility: (sceneId: string, layerId: string, visible: boolean) => void; reorderLayers: (sceneId: string, layerIds: string[]) => void; applyLayout: (layout: LayoutConfig) => void; cycleSourceOrder: (direction?: "forward" | "backward") => void; destroy: () => void; } export interface CreateCompositorStoreOptions { controller: IngestControllerV2 | null; config?: Partial; autoEnable?: boolean; } export declare function createCompositorStore(options: CreateCompositorStoreOptions): CompositorStore;