import type { JsonLiteral, LocalTargetKey } from "../annotations.js"; import type { DomainSchema } from "../generator/ir.js"; import { type Token } from "../lexer/index.js"; import type { ActionNode, ComputedNode, ProgramNode, StateFieldNode, TypeDeclNode, TypeFieldNode } from "../parser/index.js"; import { type SourcePoint } from "../source-map.js"; import type { MelEditAddActionOp, MelTextEdit, SchemaDiff } from "./compile-fragment-types.js"; export declare function findAction(program: ProgramNode, name: string): ActionNode | null; export declare function findComputed(program: ProgramNode, name: string): ComputedNode | null; export declare function findStateField(program: ProgramNode, name: string): StateFieldNode | null; export declare function findTypeDecl(program: ProgramNode, name: string): TypeDeclNode | null; export declare function findTypeField(program: ProgramNode, typeName: string, fieldName: string): TypeFieldNode | null; export declare function parseTypeFieldTarget(target: `type_field:${string}.${string}`): { typeName: string; fieldName: string; } | null; export declare function targetLocation(program: ProgramNode, target: LocalTargetKey): ProgramNode["location"]; export declare function findActionBodyBraces(source: string, action: ActionNode): { open: Token; close: Token; } | null; export declare function findActionToken(source: string, action: ActionNode, kind: Token["kind"]): Token | null; export declare function insertBeforeClosingLine(source: string, closeOffset: number, text: string): MelTextEdit; export declare function textEdit(source: string, start: number, end: number, replacement: string): MelTextEdit; export declare function applyTextEdits(source: string, edits: readonly MelTextEdit[]): string; export declare function requiredOffset(point: SourcePoint): number; export declare function lineIndentAt(source: string, offset: number): string; export declare function indentLines(source: string, indent: string): string; export declare function renderAction(op: MelEditAddActionOp): string; export declare function renderBodyReplacement(body: string, bodyIndent: string, actionIndent: string): string; export declare function renderJsonLiteral(value: JsonLiteral): string; export declare function diffSchemas(before: DomainSchema, after: DomainSchema): SchemaDiff; export declare function sortTargets(targets: readonly LocalTargetKey[]): LocalTargetKey[]; export declare function isEditObject(value: unknown): value is { readonly kind: string; }; export declare function describeUnknown(value: unknown): string;