import type { File, ObjectExpression } from '@babel/types'; import type { EffectClipboardParam, EffectClipboardPasteType, EffectClipboardSnapshot } from '@remotion/studio-shared'; import type { InteractivitySchema, SequenceNodePath } from 'remotion'; export { findEffectCallExpression, findEffectsAttr, } from './sequence-props/can-update-effect-props'; export { enumerateEffectArrayElements, type EffectArrayElement, } from './sequence-props/effect-array-elements'; export type FormatEffectFile = (input: { contents: string; }) => Promise<{ formatted: boolean; output: string; }>; type EffectSourceStyleOptions = { formatFile?: FormatEffectFile; prettierConfigOverride?: Record | null; }; export type EffectTarget = { sequenceNodePath: SequenceNodePath; effectIndex: number; }; export type EffectDeletionTarget = { sequenceNodePath: SequenceNodePath; } & ({ type: 'single-effect'; effectIndex: number; } | { type: 'all-effects'; }); export type EffectPropUpdate = { key: string; value: unknown; defaultValue: unknown | null; } | { key: string; effectParam: EffectClipboardParam; defaultValue: unknown | null; }; export type PropDelta = { key: string; valueString: string; }; export type UpdateEffectPropsResult = { output: string; formatted: boolean; oldValueString: string; newValueString: string; logLine: number; effectCallee: string; removedProps: PropDelta[]; }; export declare const assertValidEffect: ({ effectImportPath, effectName, }: { effectImportPath: string; effectName: string; }) => void; export declare const ensureEffectImport: ({ ast, effectImportPath, effectName, }: { ast: File; effectImportPath: string; effectName: string; }) => string; export declare const makeConfigObjectExpression: (config: Record) => ObjectExpression; export declare const addEffect: ({ effectConfig, effectImportPath, effectName, input, prettierConfigOverride, sequenceNodePath, }: { effectConfig: Record; effectImportPath: string; effectName: string; input: string; sequenceNodePath: SequenceNodePath; } & EffectSourceStyleOptions) => Promise<{ output: string; formatted: boolean; effectLabel: string; nodeLabel: string; logLine: number; }>; export declare const duplicateEffects: ({ effects, input, prettierConfigOverride, }: { effects: EffectTarget[]; input: string; } & EffectSourceStyleOptions) => Promise<{ output: string; formatted: boolean; effectLabels: string[]; logLines: number[]; }>; export declare const duplicateEffect: ({ effectIndex, input, prettierConfigOverride, sequenceNodePath, }: { effectIndex: number; input: string; sequenceNodePath: SequenceNodePath; } & EffectSourceStyleOptions) => Promise<{ output: string; formatted: boolean; effectLabel: string; logLine: number; }>; export declare const reorderEffect: ({ fromIndex, input, prettierConfigOverride, sequenceNodePath, toIndex, }: { fromIndex: number; input: string; sequenceNodePath: SequenceNodePath; toIndex: number; } & EffectSourceStyleOptions) => Promise<{ output: string; formatted: boolean; effectLabel: string; logLine: number; }>; export declare const deleteEffects: ({ effects, input, prettierConfigOverride, }: { effects: EffectDeletionTarget[]; input: string; } & EffectSourceStyleOptions) => Promise<{ output: string; formatted: boolean; effectLabels: string[]; logLines: number[]; }>; export declare const deleteEffect: ({ effectIndex, input, prettierConfigOverride, sequenceNodePath, }: { effectIndex: number; input: string; sequenceNodePath: SequenceNodePath; } & EffectSourceStyleOptions) => Promise<{ output: string; formatted: boolean; effectLabel: string; logLine: number; }>; export declare const pasteEffects: ({ effects, input, insertAtIndices, prettierConfigOverride, targetSequenceNodePath, type, }: { effects: EffectClipboardSnapshot[]; input: string; insertAtIndices: number[] | null; targetSequenceNodePath: SequenceNodePath; type: EffectClipboardPasteType; } & EffectSourceStyleOptions) => Promise<{ output: string; formatted: boolean; effectLabels: string[]; logLine: number; }>; export declare const updateEffectPropsAst: ({ effectIndex, input, prettierConfigOverride, schema, sequenceNodePath, update, }: { effectIndex: number; input: string; prettierConfigOverride?: Record | null | undefined; schema: InteractivitySchema; sequenceNodePath: SequenceNodePath; update: EffectPropUpdate; }) => { serialized: string; oldValueString: string; newValueString: string; logLine: number; effectCallee: string; removedProps: PropDelta[]; }; export declare const updateEffectProps: ({ effectIndex, input, prettierConfigOverride, schema, sequenceNodePath, update, }: { effectIndex: number; input: string; schema: InteractivitySchema; sequenceNodePath: SequenceNodePath; update: EffectPropUpdate; } & EffectSourceStyleOptions) => Promise;