import { BlockNode, Node, ChildNode } from "../../ast"; import { RenderContext } from "../../context"; import { Environment } from "../../environment"; import { ExpressionTokenStream } from "../../expressions"; import { RenderStream } from "../../io/output_stream"; import { Tag } from "../../tag"; import { Token, TokenStream } from "../../token"; import { Expression } from "../../expression"; type Arguments = { [index: string]: Expression; }; /** * An implementation of the `with` tag. * * Extend the current scope for the duration of the `with` block. Useful for * aliasing long or nested variable names. Also useful for caching the result * of a drop's methods, if the drop does not perform its own caching. */ export declare class WithTag implements Tag { parse(stream: TokenStream, environment: Environment): Node; protected parseExpression(expressionToken: Token): Arguments; protected parseArgument(eStream: ExpressionTokenStream): [string, Expression]; } export declare class WithNode implements Node { readonly token: Token; readonly args: Arguments; readonly block: BlockNode; constructor(token: Token, args: Arguments, block: BlockNode); render(context: RenderContext, out: RenderStream): Promise; renderSync(context: RenderContext, out: RenderStream): void; children(): ChildNode[]; } export {};