import type { ClipInfo, Frame, FrameRange, HostCapabilities, HostRuntime, MarkerInfo, TimelineState } from "../../../types.js"; import { type VideoHost } from "../types.js"; import { type PremiereTransportKind } from "./bridge.js"; /** * Adobe Premiere Pro adapter. * * Drives Premiere via ExtendScript through `osascript` on macOS (see * ./bridge.ts). Each call generates a self-contained JSX file and asks * Premiere to evalFile it; the JSX writes a JSON result to a temp file. * * Requirements: * - macOS (Windows path requires a CEP panel — deferred) * - Premiere Pro running with a project + active sequence * * Capability map (verified against current Premiere Pro APIs): * - canMoveClips: true (Premiere has direct timeline mutation) * - canScriptColor: false (Lumetri preset application is limited) * - canScriptAudio: true (track levels, mute, gain via TrackItem) * - canTriggerAI: false (Speech-to-Text + Auto Reframe not exposed) * - preferredImportFormat: xml (FCPXML) * * Unsupported via live API (use write_edl + import_timeline): * - cut_at — QE DOM razor is undocumented and version-fragile * - ripple_delete — same reason * - render — requires Adobe Media Encoder integration; deferred */ export declare class PremiereAdapter implements VideoHost { readonly name: "premiere"; readonly displayName = "Adobe Premiere Pro"; private bridge; capabilities(): Promise; getTimeline(): Promise; addMarker(marker: MarkerInfo): Promise; cutAt(_track: number, _frame: Frame): Promise; rippleDelete(_track: number, _range: FrameRange): Promise; appendClip(track: number, mediaPath: string): Promise; importTimeline(filePath: string): Promise; render(_opts: { preset: string; output: string; }): Promise; getMarkers(): Promise; createTimeline(opts: { name: string; fps: number; width?: number; height?: number; }): Promise; importToMediaPool(paths: string[], bin?: string): Promise; setClipSpeed(_clipId: string, _speed: number): Promise; applyLut(_clipId: string, _lutPath: string, _nodeIndex?: number): Promise; setPrimaryCorrection(_clipId: string, _cdl: { slope?: [number, number, number]; offset?: [number, number, number]; power?: [number, number, number]; saturation?: number; nodeIndex?: number; }): Promise; copyGrade(_sourceClipId: string, _targetClipIds: string[]): Promise; listRenderPresets(): Promise; replaceClip(clipId: string, mediaPath: string): Promise; cloneTimeline(newName: string): Promise<{ name: string; }>; saveProject(): Promise; addTrack(_kind: "video" | "audio" | "subtitle"): Promise<{ track: number; }>; insertClipOnTrack(opts: { mediaPath: string; track: number; recordFrame: number; sourceInFrame?: number; sourceOutFrame?: number; mediaKind?: "video" | "audio"; }): Promise; importSubtitles(srtPath: string): Promise<{ imported: boolean; attached: boolean; note?: string; }>; executeCode(code: string): Promise<{ result: unknown; stdout?: string; }>; shutdown(): void; static _snapColorToPremiereForTest(color: unknown): string; static _mapTransportToRuntimeForTest(t: PremiereTransportKind): HostRuntime; private checkReachable; } //# sourceMappingURL=adapter.d.ts.map