import type { NullLiteral } from '@babel/types'; import { type InsertJsxElementRequest, type InsertableCompositionElement, type InsertableCompositionElementPosition, type SequenceNodePathRemapping } from '@remotion/studio-shared'; import type { namedTypes } from 'ast-types'; import type { SequenceNodePath } from 'remotion'; import { type SourceEdit } from './source-edits'; export type InsertJsxElementCodemodEnvironment = { rootDir: string; dirname: (fileName: string) => string; extname: (fileName: string) => string; fileExists: (fileName: string) => boolean; isAbsolute: (fileName: string) => boolean; join: (...parts: string[]) => string; pathSeparator: string; readFile: (fileName: string) => Promise; relative: (from: string, to: string) => string; resolve: (...parts: string[]) => string; svgMarkupToJsx: (markup: string) => Promise; }; export declare const makeInMemoryInsertJsxElementCodemodEnvironment: ({ project, svgMarkupToJsx, }: { project: { files: Record; rootDir: string; }; svgMarkupToJsx: (markup: string) => Promise; }) => InsertJsxElementCodemodEnvironment; export type ResolvedCompositionComponent = { source: string; line: number; column: number; canAddSequence: boolean; }; export type ResolvedCompositionComponentWithFile = ResolvedCompositionComponent & { fileName: string; exportName: string | 'default'; }; export declare const getInsertionRootSourceEdit: ({ insertInside, input, insertion, nullRoot, prettierConfigOverride, root, }: { insertInside: boolean; input: string; insertion: string; nullRoot: NullLiteral | null; prettierConfigOverride: Record | null; root: namedTypes.JSXElement | namedTypes.JSXFragment | null; }) => SourceEdit; export declare function resolveCompositionComponentWithFile({ environment, compositionFile, compositionId }: { environment: InsertJsxElementCodemodEnvironment; compositionFile: string; compositionId: string; }): Promise; export declare const resolveCompositionComponent: ({ environment, compositionFile, compositionId, }: { environment: InsertJsxElementCodemodEnvironment; compositionFile: string; compositionId: string; }) => Promise; export declare const insertJsxElementIntoComposition: ({ compositionFile, compositionId, element, environment, from, prettierConfigOverride, wrapInSequence, }: { compositionFile: string; compositionId: string; element: InsertableCompositionElement; environment: InsertJsxElementCodemodEnvironment; from: number | null; prettierConfigOverride: Record | null; wrapInSequence: { dimensions: { width: number; height: number; } | null; durationInFrames: number | null; from: number | null; name: string | null; position: InsertableCompositionElementPosition | null; } | null; }) => Promise<{ fileName: string; source: string; oldContents: string; output: string; logLine: number; nodePathRemappings: SequenceNodePathRemapping[]; insertedNodePath: SequenceNodePath | null; }>; export declare const insertJsxElementIntoProjectWithNodePathRemappings: ; rootDir: string; }>({ project, request, svgMarkupToJsx, wrapInSequence, }: { project: Project; request: InsertJsxElementRequest; svgMarkupToJsx: (markup: string) => Promise; wrapInSequence: { dimensions: { width: number; height: number; } | null; durationInFrames: number | null; from: number | null; name: string | null; position: InsertableCompositionElementPosition | null; } | null; }) => Promise<{ filePath: string; insertedNodePath: SequenceNodePath | null; nodePathRemappings: SequenceNodePathRemapping[]; project: Project; }>;