/**
 * Parser and serializer for Enfusion text serialization format.
 * Used by .gproj, .et, .ct, .conf, .layer files.
 *
 * Grammar:
 *   Document     = Node
 *   Node         = TypeName [GUID] [":" QuotedString] "{" Content* "}"
 *   Content      = Property | BareValue | Node
 *   Property     = Key (QuotedString | Number | Node)
 *   BareValue    = QuotedString (standalone value inside a block, e.g. dependency GUIDs)
 *   QuotedString = '"' chars '"'
 */
/** A single property: key-value pair */
export interface EnfusionProperty {
    key: string;
    value: string | EnfusionNode;
}
/** A node in the Enfusion text tree */
export interface EnfusionNode {
    /** Type name (e.g., "GameProject", "GenericEntity", "MeshObject") */
    type: string;
    /** Quoted GUID that follows the type name (e.g., component instance ID) */
    id?: string;
    /** Parent reference after ":" (e.g., "{GUID}path/to/parent.et") */
    inheritance?: string;
    /** Key-value properties */
    properties: EnfusionProperty[];
    /** Standalone quoted values (e.g., dependency GUIDs in Dependencies block) */
    values: string[];
    /** Child nodes (blocks nested inside this node) */
    children: EnfusionNode[];
}
/**
 * Parse Enfusion text serialization format into a node tree.
 */
export declare function parse(input: string): EnfusionNode;
/**
 * Serialize an EnfusionNode tree back to Enfusion text format.
 */
export declare function serialize(node: EnfusionNode): string;
/**
 * Create a new empty EnfusionNode.
 */
export declare function createNode(type: string, opts?: {
    id?: string;
    inheritance?: string;
    properties?: EnfusionProperty[];
    values?: string[];
    children?: EnfusionNode[];
}): EnfusionNode;
/**
 * Helper: set or update a property on a node.
 */
export declare function setProperty(node: EnfusionNode, key: string, value: string | EnfusionNode): void;
/**
 * Helper: get a property value from a node.
 */
export declare function getProperty(node: EnfusionNode, key: string): string | EnfusionNode | undefined;
//# sourceMappingURL=enfusion-text.d.ts.map