import type { Brand } from "../util/brand"; import type { Expression } from "./expression"; export type TemplateElementValue = Brand; export type TemplateElementRawValue = Brand< string, "estree.TemplateElementRawValue" >; export type TaggedTemplateExpression = X & { type: "TaggedTemplateExpression"; tag: Expression; quasi: TemplateLiteral; }; export type TemplateLiteral = X & { type: "TemplateLiteral"; quasis: TemplateElement[]; expressions: Expression[]; }; export type TemplateElement = X & { type: "TemplateElement"; tail: boolean; value: { cooked: TemplateElementValue | null; raw: TemplateElementRawValue; }; };