import { Rotation3dValues } from './transform-keyframe-edit'; type UnknownRecord = Record; export interface PreviewItemTransformPatch { x?: number; y?: number; scale?: number; scaleX?: number; scaleY?: number; rotate?: number; } export interface PreviewItemCropPatch { x: number; y: number; w: number; h: number; rotate?: number; } export interface PreviewItemPerspectivePatch { corners: [number, number][]; } export type PreviewItemWriteCommand = ({ kind: 'overlay'; itemId: string; patch: { vars?: UnknownRecord; /** 3D の向き(--akari-3d-rot-x/y/z・度)。playheadSeconds があり、回転にキーがあれば再生ヘッドに自動キー。 */ varsAt?: Rotation3dValues; transform?: PreviewItemTransformPatch; html?: string; text?: string; params?: Record; xyKeyframes?: { t: number; transform: { x: number; y: number; }; }[]; element?: { ref: string; tag: string; style: Record; }; }; } | { kind: 'layer'; itemId: string; patch: { transform?: PreviewItemTransformPatch; crop?: PreviewItemCropPatch; perspective?: PreviewItemPerspectivePatch | null; xyKeyframes?: { t: number; transform: { x: number; y: number; }; }[]; }; } | { kind: 'cut'; /** v2 の安定 identity。legacy では legacyIndex だけを使う。 */ itemId?: string; legacyIndex: number; patch: { transform?: PreviewItemTransformPatch; /** 出力プレビューの辺バークロップ。cuts[] に crop の席があるのは v2 だけ。 */ crop?: PreviewItemCropPatch; xyKeyframes?: { t: number; transform: { x: number; y: number; }; }[]; }; }) & { playheadSeconds?: number; }; export interface PreviewItemWriteResolution { /** edit.json を更新する patch があるときだけ返す。 */ candidateText?: string; /** html patch の書き込み先。本文自体は edit.json へ入れない。 */ htmlPath?: string; } /** * 出力プレビューの item 書き戻しを、版判定を含む読み込み層 1 箇所へ閉じ込める。 * 呼び出し側は v2 / legacy を知らず、返された edit.json 候補と HTML 参照先だけを扱う。 */ export declare function resolvePreviewItemWrite(editText: string, command: PreviewItemWriteCommand): PreviewItemWriteResolution; /** Resolve all commands in memory. The caller lints and persists the final document once. * External HTML writes cannot participate in this single-document transaction. */ export declare function resolvePreviewItemWriteBatch(editText: string, commands: PreviewItemWriteCommand[]): PreviewItemWriteResolution; export {};