import { SrcMap } from 'mini-parse'; import { AbstractElem, AliasElem, ExportElem, ExtendsElem, FnElem, GlobalDirectiveElem, StructElem, TemplateElem, TreeImportElem, VarElem } from './AbstractElems.js'; import { ApplyTemplateFn } from './ModuleRegistry.js'; /** module with exportable text fragments that are optionally transformed by a templating engine */ export interface TextModule { kind: "text"; template?: TemplateElem; exports: TextExport[]; fns: FnElem[]; vars: VarElem[]; structs: StructElem[]; imports: (ExtendsElem | TreeImportElem)[]; aliases: AliasElem[]; globalDirectives: GlobalDirectiveElem[]; modulePath: string; /** original src for module */ src: string; /** src code after processing #if conditionals */ preppedSrc: string; /** tracks changes through conditional processing for error reporting */ srcMap: SrcMap; } /** an export elem annotated with the fn/struct to which it refers */ export interface TextExport extends ExportElem { ref: FnElem | StructElem; } export declare function preProcess(src: string, params?: Record, templates?: Map): SrcMap; export declare function parseModule(src: string, naturalModulePath: string, params?: Record, templates?: Map): TextModule; export declare function filterElems(parsed: AbstractElem[], kind: T["kind"]): T[];