import { PlaylistPage, PlaylistSchema, PublishBatch, ScheduleRule, SignageElement, TemplateBundle, TemplateEntry, GridLayoutConfig } from '@signage-editor/core'; import { ZoneLayoutRect } from './layoutFactory'; export declare const useEditorStore: import('pinia').StoreDefinition<"editor", Pick<{ pages: import('vue').Ref<{ id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[], PlaylistPage[] | { id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[]>; activePageIndex: import('vue').Ref; activePage: import('vue').ComputedRef<{ id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }>; loop: import('vue').Ref; elements: import('vue').WritableComputedRef; canvasWidth: import('vue').Ref; canvasHeight: import('vue').Ref; canvasBackground: import('vue').WritableComputedRef; canvasBackgroundImage: import('vue').WritableComputedRef; canvasBackgroundSize: import('vue').WritableComputedRef; activeElementId: import('vue').WritableComputedRef; activeElement: import('vue').ComputedRef; activeObjectType: import('vue').ComputedRef<"" | "audio" | "iframe" | "video" | "image" | "text" | "dateTime" | "scrollText" | "weather" | "dataTable" | "customSlot" | "container">; isEditingText: import('vue').Ref; activeToolType: import('vue').Ref; zoom: import('vue').Ref; panX: import('vue').Ref; panY: import('vue').Ref; viewportTransform: import('vue').ComputedRef; canUndo: import('vue').Ref; canRedo: import('vue').Ref; isPreviewing: import('vue').Ref; schema: import('vue').ComputedRef; bundleSchema: import('vue').ComputedRef; bundleName: import('vue').Ref; entries: import('vue').Ref<{ id: string; name: string; category: string; playlist: { version: "3.0"; name: string; canvas: { width: number; height: number; background: string; }; loop: boolean; pages: { id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[]; }; schedule?: { id: string; enabled: boolean; priority: number; startDate?: string | undefined; endDate?: string | undefined; timeRange: { start: string; end: string; }; recurrence: import('@signage-editor/core').ScheduleRecurrence; daysOfWeek?: number[] | undefined; daysOfMonth?: number[] | undefined; }[] | undefined; }[], TemplateEntry[] | { id: string; name: string; category: string; playlist: { version: "3.0"; name: string; canvas: { width: number; height: number; background: string; }; loop: boolean; pages: { id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[]; }; schedule?: { id: string; enabled: boolean; priority: number; startDate?: string | undefined; endDate?: string | undefined; timeRange: { start: string; end: string; }; recurrence: import('@signage-editor/core').ScheduleRecurrence; daysOfWeek?: number[] | undefined; daysOfMonth?: number[] | undefined; }[] | undefined; }[]>; activeEntryIndex: import('vue').Ref; activeEntry: import('vue').ComputedRef; bundleLoop: import('vue').Ref; setBundleLoop: (value: boolean) => void; strategyType: import('vue').Ref<"playlist" | "scheduled", "playlist" | "scheduled">; defaultEntryId: import('vue').Ref; undo: () => void; redo: () => void; beginBatch: () => void; endBatch: () => void; clearHistory: () => void; addElement: (el: SignageElement) => void; addElementWithPageDuration: (el: SignageElement, duration?: number) => void; addElementToContainer: (el: SignageElement, containerId: string, duration?: number) => void; ensurePageDuration: (duration: number) => void; deleteActive: () => void; deleteElementById: (id: string) => void; updateElement: (id: string, patch: Partial) => void; updateActiveElement: (patch: Partial) => void; selectElement: (id: string | null) => void; deselectAll: () => void; moveLayer: (id: string, direction: "up" | "down" | "top" | "bottom") => void; toggleLock: (id: string) => void; toggleVisibility: (id: string) => void; setZoom: (newZoom: number, originX?: number, originY?: number) => void; zoomIn: () => void; zoomOut: () => void; resetZoom: () => void; fitToScreen: (containerWidth: number, containerHeight: number) => void; setCanvasSize: (w: number, h: number) => void; setActiveToolType: (type: string | null) => void; applyGridLayout: (config: Omit) => { gap: number; margin: number; }; applyZoneLayout: (zones: ZoneLayoutRect[], gap: number, marginPx: number) => { gap: number; margin: number; }; loadSchema: (data: any) => void; initEmpty: () => void; addPage: () => void; deletePage: (index: number) => void; duplicatePage: (index: number) => void; movePage: (fromIndex: number, toIndex: number) => void; selectPage: (index: number) => void; updatePageProperty: (index: number, patch: Partial) => void; addEntry: (name?: string, category?: string) => void; deleteEntry: (index: number) => void; duplicateEntry: (index: number) => void; moveEntry: (fromIndex: number, toIndex: number) => void; selectEntry: (index: number) => void; renameEntry: (index: number, name: string) => void; setStrategyType: (type: "playlist" | "scheduled") => void; setDefaultEntryId: (id: string | null) => void; addScheduleRule: (entryIndex: number, rule: ScheduleRule) => void; updateScheduleRule: (entryIndex: number, ruleId: string, patch: Partial) => void; removeScheduleRule: (entryIndex: number, ruleId: string) => void; exportBatch: (entryIndices: number[], schedule: ScheduleRule) => PublishBatch; }, "entries" | "loop" | "defaultEntryId" | "canvasWidth" | "canvasHeight" | "bundleName" | "bundleLoop" | "strategyType" | "pages" | "activePageIndex" | "isEditingText" | "activeToolType" | "zoom" | "panX" | "panY" | "canUndo" | "canRedo" | "isPreviewing" | "activeEntryIndex">, Pick<{ pages: import('vue').Ref<{ id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[], PlaylistPage[] | { id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[]>; activePageIndex: import('vue').Ref; activePage: import('vue').ComputedRef<{ id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }>; loop: import('vue').Ref; elements: import('vue').WritableComputedRef; canvasWidth: import('vue').Ref; canvasHeight: import('vue').Ref; canvasBackground: import('vue').WritableComputedRef; canvasBackgroundImage: import('vue').WritableComputedRef; canvasBackgroundSize: import('vue').WritableComputedRef; activeElementId: import('vue').WritableComputedRef; activeElement: import('vue').ComputedRef; activeObjectType: import('vue').ComputedRef<"" | "audio" | "iframe" | "video" | "image" | "text" | "dateTime" | "scrollText" | "weather" | "dataTable" | "customSlot" | "container">; isEditingText: import('vue').Ref; activeToolType: import('vue').Ref; zoom: import('vue').Ref; panX: import('vue').Ref; panY: import('vue').Ref; viewportTransform: import('vue').ComputedRef; canUndo: import('vue').Ref; canRedo: import('vue').Ref; isPreviewing: import('vue').Ref; schema: import('vue').ComputedRef; bundleSchema: import('vue').ComputedRef; bundleName: import('vue').Ref; entries: import('vue').Ref<{ id: string; name: string; category: string; playlist: { version: "3.0"; name: string; canvas: { width: number; height: number; background: string; }; loop: boolean; pages: { id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[]; }; schedule?: { id: string; enabled: boolean; priority: number; startDate?: string | undefined; endDate?: string | undefined; timeRange: { start: string; end: string; }; recurrence: import('@signage-editor/core').ScheduleRecurrence; daysOfWeek?: number[] | undefined; daysOfMonth?: number[] | undefined; }[] | undefined; }[], TemplateEntry[] | { id: string; name: string; category: string; playlist: { version: "3.0"; name: string; canvas: { width: number; height: number; background: string; }; loop: boolean; pages: { id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[]; }; schedule?: { id: string; enabled: boolean; priority: number; startDate?: string | undefined; endDate?: string | undefined; timeRange: { start: string; end: string; }; recurrence: import('@signage-editor/core').ScheduleRecurrence; daysOfWeek?: number[] | undefined; daysOfMonth?: number[] | undefined; }[] | undefined; }[]>; activeEntryIndex: import('vue').Ref; activeEntry: import('vue').ComputedRef; bundleLoop: import('vue').Ref; setBundleLoop: (value: boolean) => void; strategyType: import('vue').Ref<"playlist" | "scheduled", "playlist" | "scheduled">; defaultEntryId: import('vue').Ref; undo: () => void; redo: () => void; beginBatch: () => void; endBatch: () => void; clearHistory: () => void; addElement: (el: SignageElement) => void; addElementWithPageDuration: (el: SignageElement, duration?: number) => void; addElementToContainer: (el: SignageElement, containerId: string, duration?: number) => void; ensurePageDuration: (duration: number) => void; deleteActive: () => void; deleteElementById: (id: string) => void; updateElement: (id: string, patch: Partial) => void; updateActiveElement: (patch: Partial) => void; selectElement: (id: string | null) => void; deselectAll: () => void; moveLayer: (id: string, direction: "up" | "down" | "top" | "bottom") => void; toggleLock: (id: string) => void; toggleVisibility: (id: string) => void; setZoom: (newZoom: number, originX?: number, originY?: number) => void; zoomIn: () => void; zoomOut: () => void; resetZoom: () => void; fitToScreen: (containerWidth: number, containerHeight: number) => void; setCanvasSize: (w: number, h: number) => void; setActiveToolType: (type: string | null) => void; applyGridLayout: (config: Omit) => { gap: number; margin: number; }; applyZoneLayout: (zones: ZoneLayoutRect[], gap: number, marginPx: number) => { gap: number; margin: number; }; loadSchema: (data: any) => void; initEmpty: () => void; addPage: () => void; deletePage: (index: number) => void; duplicatePage: (index: number) => void; movePage: (fromIndex: number, toIndex: number) => void; selectPage: (index: number) => void; updatePageProperty: (index: number, patch: Partial) => void; addEntry: (name?: string, category?: string) => void; deleteEntry: (index: number) => void; duplicateEntry: (index: number) => void; moveEntry: (fromIndex: number, toIndex: number) => void; selectEntry: (index: number) => void; renameEntry: (index: number, name: string) => void; setStrategyType: (type: "playlist" | "scheduled") => void; setDefaultEntryId: (id: string | null) => void; addScheduleRule: (entryIndex: number, rule: ScheduleRule) => void; updateScheduleRule: (entryIndex: number, ruleId: string, patch: Partial) => void; removeScheduleRule: (entryIndex: number, ruleId: string) => void; exportBatch: (entryIndices: number[], schedule: ScheduleRule) => PublishBatch; }, "elements" | "activePage" | "canvasBackground" | "canvasBackgroundImage" | "canvasBackgroundSize" | "activeElementId" | "activeElement" | "activeObjectType" | "viewportTransform" | "schema" | "bundleSchema" | "activeEntry">, Pick<{ pages: import('vue').Ref<{ id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[], PlaylistPage[] | { id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[]>; activePageIndex: import('vue').Ref; activePage: import('vue').ComputedRef<{ id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }>; loop: import('vue').Ref; elements: import('vue').WritableComputedRef; canvasWidth: import('vue').Ref; canvasHeight: import('vue').Ref; canvasBackground: import('vue').WritableComputedRef; canvasBackgroundImage: import('vue').WritableComputedRef; canvasBackgroundSize: import('vue').WritableComputedRef; activeElementId: import('vue').WritableComputedRef; activeElement: import('vue').ComputedRef; activeObjectType: import('vue').ComputedRef<"" | "audio" | "iframe" | "video" | "image" | "text" | "dateTime" | "scrollText" | "weather" | "dataTable" | "customSlot" | "container">; isEditingText: import('vue').Ref; activeToolType: import('vue').Ref; zoom: import('vue').Ref; panX: import('vue').Ref; panY: import('vue').Ref; viewportTransform: import('vue').ComputedRef; canUndo: import('vue').Ref; canRedo: import('vue').Ref; isPreviewing: import('vue').Ref; schema: import('vue').ComputedRef; bundleSchema: import('vue').ComputedRef; bundleName: import('vue').Ref; entries: import('vue').Ref<{ id: string; name: string; category: string; playlist: { version: "3.0"; name: string; canvas: { width: number; height: number; background: string; }; loop: boolean; pages: { id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[]; }; schedule?: { id: string; enabled: boolean; priority: number; startDate?: string | undefined; endDate?: string | undefined; timeRange: { start: string; end: string; }; recurrence: import('@signage-editor/core').ScheduleRecurrence; daysOfWeek?: number[] | undefined; daysOfMonth?: number[] | undefined; }[] | undefined; }[], TemplateEntry[] | { id: string; name: string; category: string; playlist: { version: "3.0"; name: string; canvas: { width: number; height: number; background: string; }; loop: boolean; pages: { id: string; name: string; background: string; backgroundImage?: string | undefined; backgroundAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; backgroundSize?: string | undefined; duration: number; elements: ({ type: "text"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fontWeight: string; fill: string; textAlign: "left" | "center" | "right"; lineHeight: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "scrollText"; content: string; fontSize: number; fontFamily: string; fontUrl?: string | undefined; fontAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; fontFormat?: string | undefined; fill: string; scrollSpeed: number; scrollDirection: "left" | "right"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "video"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; muted?: boolean | undefined; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "image"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit: "fill" | "cover" | "contain"; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "audio"; src: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; poster?: string | undefined; posterAsset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; objectFit?: ("fill" | "cover" | "contain") | undefined; autoplay: boolean; loop: boolean; clip?: { startSeconds: number; endSeconds: number | null; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dateTime"; showDate: boolean; showTime: boolean; showWeekday: boolean; timeFormat: string; dateFormat: string; timeColor: string; dateColor: string; bgColor: string; timeFontSize: number; dateFontSize: number; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "weather"; city: string; temp: string; weatherDesc: string; bgColor: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "iframe"; url: string; asset?: { url: string; type: import('@signage-editor/core').AssetKind; sizeBytes?: number | undefined; mimeType?: string | undefined; hash?: string | undefined; name?: string | undefined; source?: import('@signage-editor/core').AssetSource | undefined; refId?: string | undefined; thumbnailUrl?: string | undefined; } | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "dataTable"; columns: string[]; rows: string[][]; headerBgColor: string; headerTextColor: string; cellTextColor: string; fontSize: number; dataSourceUrl?: string | undefined; refreshInterval?: number | undefined; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "customSlot"; slotId: string; slotLabel: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; } | { type: "container"; fill: string; label: string; id: string; containerId?: string | undefined; x: number; y: number; width: number; height: number; rotation: number; opacity: number; visible: boolean; locked: boolean; })[]; transition: { type: import('@signage-editor/core').TransitionType; duration: number; }; }[]; }; schedule?: { id: string; enabled: boolean; priority: number; startDate?: string | undefined; endDate?: string | undefined; timeRange: { start: string; end: string; }; recurrence: import('@signage-editor/core').ScheduleRecurrence; daysOfWeek?: number[] | undefined; daysOfMonth?: number[] | undefined; }[] | undefined; }[]>; activeEntryIndex: import('vue').Ref; activeEntry: import('vue').ComputedRef; bundleLoop: import('vue').Ref; setBundleLoop: (value: boolean) => void; strategyType: import('vue').Ref<"playlist" | "scheduled", "playlist" | "scheduled">; defaultEntryId: import('vue').Ref; undo: () => void; redo: () => void; beginBatch: () => void; endBatch: () => void; clearHistory: () => void; addElement: (el: SignageElement) => void; addElementWithPageDuration: (el: SignageElement, duration?: number) => void; addElementToContainer: (el: SignageElement, containerId: string, duration?: number) => void; ensurePageDuration: (duration: number) => void; deleteActive: () => void; deleteElementById: (id: string) => void; updateElement: (id: string, patch: Partial) => void; updateActiveElement: (patch: Partial) => void; selectElement: (id: string | null) => void; deselectAll: () => void; moveLayer: (id: string, direction: "up" | "down" | "top" | "bottom") => void; toggleLock: (id: string) => void; toggleVisibility: (id: string) => void; setZoom: (newZoom: number, originX?: number, originY?: number) => void; zoomIn: () => void; zoomOut: () => void; resetZoom: () => void; fitToScreen: (containerWidth: number, containerHeight: number) => void; setCanvasSize: (w: number, h: number) => void; setActiveToolType: (type: string | null) => void; applyGridLayout: (config: Omit) => { gap: number; margin: number; }; applyZoneLayout: (zones: ZoneLayoutRect[], gap: number, marginPx: number) => { gap: number; margin: number; }; loadSchema: (data: any) => void; initEmpty: () => void; addPage: () => void; deletePage: (index: number) => void; duplicatePage: (index: number) => void; movePage: (fromIndex: number, toIndex: number) => void; selectPage: (index: number) => void; updatePageProperty: (index: number, patch: Partial) => void; addEntry: (name?: string, category?: string) => void; deleteEntry: (index: number) => void; duplicateEntry: (index: number) => void; moveEntry: (fromIndex: number, toIndex: number) => void; selectEntry: (index: number) => void; renameEntry: (index: number, name: string) => void; setStrategyType: (type: "playlist" | "scheduled") => void; setDefaultEntryId: (id: string | null) => void; addScheduleRule: (entryIndex: number, rule: ScheduleRule) => void; updateScheduleRule: (entryIndex: number, ruleId: string, patch: Partial) => void; removeScheduleRule: (entryIndex: number, ruleId: string) => void; exportBatch: (entryIndices: number[], schedule: ScheduleRule) => PublishBatch; }, "setBundleLoop" | "undo" | "redo" | "beginBatch" | "endBatch" | "clearHistory" | "addElement" | "addElementWithPageDuration" | "addElementToContainer" | "ensurePageDuration" | "deleteActive" | "deleteElementById" | "updateElement" | "updateActiveElement" | "selectElement" | "deselectAll" | "moveLayer" | "toggleLock" | "toggleVisibility" | "setZoom" | "zoomIn" | "zoomOut" | "resetZoom" | "fitToScreen" | "setCanvasSize" | "setActiveToolType" | "applyGridLayout" | "applyZoneLayout" | "loadSchema" | "initEmpty" | "addPage" | "deletePage" | "duplicatePage" | "movePage" | "selectPage" | "updatePageProperty" | "addEntry" | "deleteEntry" | "duplicateEntry" | "moveEntry" | "selectEntry" | "renameEntry" | "setStrategyType" | "setDefaultEntryId" | "addScheduleRule" | "updateScheduleRule" | "removeScheduleRule" | "exportBatch">>;