import { EnumDef, TypeDecl } from "../../ir/declarations.js"; import { ExprVisitor } from "../../ir/visitor.js"; type JavaNativeSerialization = "none" | "jackson"; export declare function emitJavaFileContent(types: TypeDecl[], packageName: string, visitor: ExprVisitor, polymorphicTypeNames: Set, enums?: EnumDef[], allTypes?: TypeDecl[], nativeSerialization?: JavaNativeSerialization): string; export declare function emitJavaEnum(enumDef: EnumDef, packageName: string, nativeSerialization?: JavaNativeSerialization): string; /** * Emit the concrete carrier for an abstract base whose discriminator is open. * * The base stays `abstract`, honouring the schema's `@abstract`, and unrecognized discriminator * values load as this subclass rather than throwing. Java allows one public top-level class per * file, so unlike the C# carrier this is emitted as its own compilation unit. * * The carrier declares no fields of its own: it stores the verbatim payload on the base's * `rawPayload` and lets the base's inherited `save` seed its result from it, so the unrecognized * discriminator value and every undeclared key survive a load/save round-trip unchanged. */ export declare function emitJavaUnknownCarrier(type: TypeDecl, packageName: string, nativeSerialization?: JavaNativeSerialization): { filename: string; source: string; } | undefined; export declare const JAVA_EDITABLE_SEAM_MARKER = "// "; export declare const JAVA_EDITABLE_SEAM_NOTE = "// Typra editable seam. This file is created once and is safe to edit."; /** * Adds the editable-seam marker to a pre-existing helper that predates the marker contract. * Returns null when the file already carries the marker and needs no migration. * * Seam files are create-once and consumer-owned, so migration only prepends the comment * header; hand-written bodies are never rewritten. A leading BOM stays at byte zero and the * file's dominant line ending is preserved so the result stays valid and diff-clean. */ export declare function ensureJavaEditableSeamMarker(existingSource: string): string | null; export declare function emitJavaMethodHelper(type: TypeDecl, packageName: string): { filename: string; source: string; } | null; export declare function javaScalarType(typeName: string): string; export {};