export class Interpreter { /** @param {{ baseDir?: string }} [options] */ constructor(options?: { baseDir?: string; }); /** @type {Env} */ globalEnv: Env; /** @type {string} */ baseDir: string; /** @type {Set} */ loadedModules: Set; /** @type {{ sections: Record, labels: Record, citations: Record }} */ refs: { sections: Record; labels: Record; citations: Record; }; /** @type {number} */ citationCounter: number; /** @type {number} */ footnoteCounter: number; /** @type {Array<{number:string,content:any[]}>} */ footnoteEntries: Array<{ number: string; content: any[]; }>; /** @param {{ tag: string, data: any }} doc @returns {{ tag: string, data: any }} */ evalDocument(doc: { tag: string; data: any; }): { tag: string; data: any; }; /** @param {{ tag: string, data: any }} doc @returns {void} */ collectReferences(doc: { tag: string; data: any; }): void; /** @returns {Array<{id:string,number:string,title:string,children:any[]}>} */ buildTocTree(): Array<{ id: string; number: string; title: string; children: any[]; }>; /** @param {{ tag: string, data: any }} node @param {Env} env @returns {any} */ evalNode(node: { tag: string; data: any; }, env: Env): any; /** @param {string} expr @param {Env} env @returns {any} */ evalInterpolationExpr(expr: string, env: Env): any; /** * @param {string} str * @param {Env} env * @returns {string} */ resolveInterpolations(str: string, env: Env): string; /** @param {{ [key: string]: string }} attrs @param {Env} env @returns {{ [key: string]: string }} */ evalAttrs(attrs: { [key: string]: string; }, env: Env): { [key: string]: string; }; /** @param {{ name: string, attrs: any, inline_content: any[], children: any[] }} block @param {Env} env @returns {{ tag: string, data: any }} */ evalBlock(block: { name: string; attrs: any; inline_content: any[]; children: any[]; }, env: Env): { tag: string; data: any; }; /** * @param {any[]} nodes * @param {Env} env * @param {{ [key: string]: string }} attrs * @returns {string[]} */ collectArgs(nodes: any[], env: Env, attrs: { [key: string]: string; }): string[]; /** @param {any[]} inline_content @param {any[]} children @returns {string} */ collectCodeText(inline_content: any[], children: any[]): string; /** @param {{ inline_content: any[], children: any[] }} codeBlock @param {Env} env @returns {{ tag: string, data: { value: string } }|null} */ execCodeBlock(codeBlock: { inline_content: any[]; children: any[]; }, env: Env): { tag: string; data: { value: string; }; } | null; /** @param {{ name: string, attrs: any, content: any[] }} inl @param {Env} env @returns {{ tag: string, data: any }} */ evalInline(inl: { name: string; attrs: any; content: any[]; }, env: Env): { tag: string; data: any; }; /** @param {{ value: string }} _text @returns {{ tag: string, data: { value: string } }} */ evalText(_text: { value: string; }, _env: any): { tag: string; data: { value: string; }; }; /** @param {{ expression: string }} interp @param {Env} env @returns {{ tag: string, data: { value: string } }} */ evalInterpolation(interp: { expression: string; }, env: Env): { tag: string; data: { value: string; }; }; /** @param {any[]} children @param {Env} env @returns {any[]} */ evalChildren(children: any[], env: Env): any[]; /** @param {any[]} nodes @param {Env} env @returns {any[]} */ evalInlineList(nodes: any[], env: Env): any[]; /** @param {{ items: any[], ordered: boolean }} list @param {Env} env @returns {{ tag: string, data: any }} */ evalList(list: { items: any[]; ordered: boolean; }, env: Env): { tag: string; data: any; }; /** @returns {any} */ evalIf(ifblk: any, env: any): any; /** @returns {any} */ evalFor(forblk: any, env: any): any; /** @returns {boolean} */ evaluateCondition(condition: any, env: any): boolean; /** @returns {boolean} */ parseCondition(tokens: any, env: any): boolean; /** @returns {string|null} */ resolveModulePath(modulePath: any): string | null; /** @returns {void} */ evalUse(modulePath: any): void; } import { Env } from "./env"; /** * @param {{ tag: string, data: any }} doc * @param {{ baseDir?: string }} [options] * @returns {{ tag: string, data: any }} */ export function interpret(doc: { tag: string; data: any; }, options?: { baseDir?: string; }): { tag: string; data: any; }; export declare let deepClone: typeof import("./deep-clone").deepClone; export { Env };