import { BlockNode, Node, ChildNode } from "../../ast"; import { RenderContext } from "../../context"; import { Environment } from "../../environment"; import { BooleanExpression, Expression } from "../../expression"; import { RenderStream } from "../../io/output_stream"; import { Tag } from "../../tag"; import { Token, TokenStream } from "../../token"; type ConditionalAlternative = { token: Token; condition: BooleanExpression; block: BlockNode; }; export declare class CaseTag implements Tag { protected static END_WHEN_BLOCK: Set; protected static END_CASE_BLOCK: Set; protected static DELIM_TOKENS: Set; readonly block = true; readonly name: string; readonly end: string; protected nodeClass: typeof CaseNode; parse(stream: TokenStream, environment: Environment): Node; protected parse_case_expression(expr: string, startIndex: number): Expression; protected parse_when_expression(expr: string, startIndex: number): Expression[]; } export declare class CaseNode implements Node { readonly token: Token; readonly whens: ConditionalAlternative[]; readonly default_?: BlockNode | undefined; forceOutput: boolean; constructor(token: Token, whens: ConditionalAlternative[], default_?: BlockNode | undefined); render(context: RenderContext, out: RenderStream): Promise; renderSync(context: RenderContext, out: RenderStream): void; children(): ChildNode[]; } export {};