import { MnastNode, MnastConversionOptions, MnastNodeMap } from './types';

/**
 * Convert a Myna AST/CST node to a mnast node (generic)
 */
export declare function toMnast<T extends MnastNodeMap>(node: any, options?: MnastConversionOptions): MnastNode<T>;
/**
 * Convert a mnast node back to a Myna AST/CST node (generic)
 */
export declare function fromMnast<T extends MnastNodeMap>(node: MnastNode<T>): any;
/**
 * Visit all nodes in a mnast tree and apply a function
 */
export declare function visitMnast<T extends MnastNodeMap>(tree: MnastNode<T>, visitor: (node: MnastNode<T>) => void): void;
/**
 * Check if a node matches a specific type
 */
export declare function isMnastNode<T extends MnastNodeMap>(node: any, type: Extract<keyof T, string> | string): node is MnastNode<T>;
/**
 * Get all nodes of a specific type
 */
export declare function getMnastNodesByType<T extends MnastNodeMap>(tree: MnastNode<T>, type: Extract<keyof T, string> | string): MnastNode<T>[];
