import { Runtime } from '../runtime/Runtime'; export declare type TemplateParams = { [key: string]: any; }; export interface EnvironmentLoop { __hasRemaining: boolean; __key: any; __value: any; __next(): void; iteration: number; index: number; remaining: number; count: number; first: boolean; last: boolean; odd: boolean; even: boolean; depth: number; parent?: EnvironmentLoop; } export interface Environment { readonly runtime: Runtime; readonly params: TemplateParams; process(input: AsyncIterable): AsyncIterable; print(text: any, escaped: boolean): AsyncIterable; filter(text: any, name: string, ...args: any[]): PromiseLike | string; call(name: string, ...args: any[]): AsyncIterable; extends(parent: string): AsyncIterable; section(name: string, renderer: ((parent: AsyncIterable) => AsyncIterable) | any, isShow: boolean): void | AsyncIterable; yield(name: string, def?: string): string | string[] | AsyncIterable; pushLoop(iteratee: any): EnvironmentLoop; popLoop(): void; push(name: string, renderer: () => AsyncIterable, prepend?: boolean): void; stack(name: string): AsyncIterable; beginComponent(name: string, args?: TemplateParams): void; endComponent(): AsyncIterable; beginSlot(name: string): void; endSlot(): void; }