///
///
import { WhileStatementASTNode } from "../../../ast/ast_statements";
import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet";
import { BlockContext, SemanticContext } from "../../compilation/contexts";
import { AnalyticConstruct } from "../../../analysis/predicates";
import { Bool } from "../../compilation/types";
import { SuccessfullyCompiled } from "../CPPConstruct";
import { CompiledExpression, Expression } from "../expressions/Expression";
import { RuntimeExpression } from "../expressions/RuntimeExpression";
import { CompiledStatement, Statement, RuntimeStatement } from "./Statement";
import { WhileStatementOutlet } from "../../../view/constructs/StatementOutlets";
export declare class WhileStatement extends Statement {
readonly construct_type = "while_statement";
readonly condition: Expression;
readonly body: Statement;
static createFromAST(ast: WhileStatementASTNode, outerContext: BlockContext): WhileStatement;
constructor(context: BlockContext, ast: WhileStatementASTNode, condition: Expression, body: Statement);
createDefaultOutlet(this: CompiledWhileStatement, element: JQuery, parent?: ConstructOutlet): WhileStatementOutlet;
isSemanticallyEquivalent_impl(other: AnalyticConstruct, equivalenceContext: SemanticContext): boolean;
}
export interface CompiledWhileStatement extends WhileStatement, SuccessfullyCompiled {
readonly condition: CompiledExpression;
readonly body: CompiledStatement;
}
export declare class RuntimeWhileStatement extends RuntimeStatement {
readonly condition: RuntimeExpression;
readonly body?: RuntimeStatement;
private index;
constructor(model: CompiledWhileStatement, parent: RuntimeStatement);
private static upNextFns;
protected upNextImpl(): void;
stepForwardImpl(): void;
}