import { Items } from './tokens.js'; import { Pos } from './position.js'; import { LaxReadOptions } from './reader.js'; import * as M from './matcher.js'; export type Substitution = Items | string; export type TemplateFunction = (consts: TemplateStringsArray, ...vars: Substitution[]) => Items; export declare class Templates { readonly sources: { [name: string]: string; }; readonly defaultPos: Pos; recordSources: boolean; readonly readOptions: LaxReadOptions; constructor(defaultPos?: Pos, readOptions?: LaxReadOptions); template(start0?: Pos | string, context?: M.ItemContext): TemplateFunction; sourceFor(name: string): string | undefined; } export declare function joinItems(itemss: Items[], separator0?: Substitution, readOptions?: LaxReadOptions): Items; export declare function commaJoin(itemss: Items[]): Items; export declare const anonymousTemplate: TemplateFunction;