import { type AspectRatio, type EditorApi, type Locale, type PlaybackEngineFactory, type PreviewLayout, type Project, type Theme } from "@aicut/core"; /** * Vue 3 wrapper around `@aicut/core`. Same shape as `@aicut/react`: * uncontrolled for project state, theme is reactive, API exposed via * `defineExpose` so a parent `ref` can call cut/seek/setProject/etc. */ type __VLS_Props = { defaultProject?: Project; theme?: Theme; /** UI string overrides (English default). Reactive — swap to `localeZh` for Chinese. */ locale?: Partial; /** * Initial-only factory for a custom playback engine. Defaults to the * built-in `HtmlVideoEngine`. Pass `WebCodecsEngine` (v0.6+) or your * own engine to override. Bound at mount; later prop changes are * ignored. */ playbackEngine?: PlaybackEngineFactory; /** * Initial-only — pixel height of each track row (default 56). Lower * values (~32–40) shrink the timeline for small viewports. Applied * process-wide at construction time. */ trackHeight?: number; /** Initial-only — pixel height of the timeline ruler (default 24). */ rulerHeight?: number; /** * Pixel height of the whole bottom timeline area (default 240). * Reactive — swap any time to recompact. The canvas inside fills * 100% and shows an internal scrollbar when track count overflows. */ timelineHeight?: number; /** * Per-clip keyframe animation (X / Y / Scale). Reactive — set * `{ enabled: true }` to surface keyframe diamonds on the timeline * and route the canvas-based engines through the transform pipeline. * Data is preserved when disabled. */ keyframes?: { enabled?: boolean; }; /** * Jump-to-clip-edge toolbar cluster (|◀ ▶|) + I/O keyboard shortcuts. * Reactive — set `{ enabled: true }` to surface the buttons next to * the keyframe diamond and bind the shortcuts. Off hides the buttons * entirely (no toolbar space cost). */ clipEdgeNav?: { enabled?: boolean; }; /** * Dashed outline of the output canvas on top of the preview. * Defaults to `{ enabled: true }` — purely visual. Set * `{ enabled: false }` to hide it entirely. Independent of * `keyframes`; when keyframes mode is also on the frame body * becomes draggable and grows corner scale handles. */ previewFrame?: { enabled?: boolean; }; /** * Multi-track picture-in-picture compositing in the preview. Off * by default. Reactive — set `{ enabled: true }` to composite * every video track's active clip with track `0` on top. Audio * policy: only top track unmuted; lower tracks mute. */ pictureInPicture?: { enabled?: boolean; toolbarAdd?: boolean; }; /** * Built-in aspect-ratio picker (CapCut-style 比例 dropdown). Reactive * — set `{ enabled: true }` to surface the chip at the left of the * toolbar. Listen for `aspectChange` to drive your preview letterbox * / export defaults. */ aspect?: { enabled?: boolean; }; /** * Picks how the preview area sits in the row below the header. * `"centered"` (default) pins it to the middle third (CapCut-desktop * style) with `panelLeft` / `panelRight` slots flanking it. * `"fullWidth"` spans the row with no side columns. Reactive. */ previewLayout?: PreviewLayout; /** * Minimum pixel gap between timeline ruler major ticks. Default 80; * lower (~50) packs labels denser, higher (~140) spaces them out. * Reactive — change anytime to retune density. */ rulerMinTickPx?: number; }; declare var __VLS_5: {}, __VLS_11: {}, __VLS_17: {}, __VLS_23: {}; type __VLS_Slots = {} & { headerLeft?: (props: typeof __VLS_5) => any; } & { headerRight?: (props: typeof __VLS_11) => any; } & { panelLeft?: (props: typeof __VLS_17) => any; } & { panelRight?: (props: typeof __VLS_23) => any; }; declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, { /** Returns the underlying core API or null if not yet mounted. */ api: () => EditorApi | null; }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & { ready: (api: EditorApi) => any; change: (project: Project) => any; export: (project: Project) => any; timeUpdate: (timeMs: number) => any; play: () => any; pause: () => any; selectionChange: (clipId: string | null) => any; keyframeSelectionChange: (target: { clipId: string; keyframeId: string; } | null) => any; aspectChange: (aspect: AspectRatio | null) => any; pictureInPictureAddRequested: () => any; error: (error: Error) => any; }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{ onReady?: ((api: EditorApi) => any) | undefined; onChange?: ((project: Project) => any) | undefined; onExport?: ((project: Project) => any) | undefined; onTimeUpdate?: ((timeMs: number) => any) | undefined; onPlay?: (() => any) | undefined; onPause?: (() => any) | undefined; onSelectionChange?: ((clipId: string | null) => any) | undefined; onKeyframeSelectionChange?: ((target: { clipId: string; keyframeId: string; } | null) => any) | undefined; onAspectChange?: ((aspect: AspectRatio | null) => any) | undefined; onPictureInPictureAddRequested?: (() => any) | undefined; onError?: ((error: Error) => any) | undefined; }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>; declare const _default: __VLS_WithSlots; export default _default; type __VLS_WithSlots = T & { new (): { $slots: S; }; }; //# sourceMappingURL=VideoEditor.vue.d.ts.map