///
///
import { ForStatementASTNode } 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 { CompiledObjectDeallocator, ObjectDeallocator, RuntimeObjectDeallocator } from "../ObjectDeallocator";
import { DeclarationStatement, CompiledDeclarationStatement, RuntimeDeclarationStatement } from "./DeclarationStatement";
import { ExpressionStatement, CompiledExpressionStatement, RuntimeExpressionStatement } from "./ExpressionStatement";
import { NullStatement, CompiledNullStatement, RuntimeNullStatement } from "./NullStatement";
import { CompiledStatement, Statement, RuntimeStatement } from "./Statement";
import { ForStatementOutlet } from "../../../view/constructs/StatementOutlets";
export declare class ForStatement extends Statement {
readonly construct_type = "for_statement";
readonly initial: ExpressionStatement | NullStatement | DeclarationStatement;
readonly condition: Expression;
readonly body: Statement;
readonly post?: Expression;
readonly localDeallocator: ObjectDeallocator;
constructor(context: BlockContext, ast: ForStatementASTNode, initial: ExpressionStatement | NullStatement | DeclarationStatement, condition: Expression, body: Statement, post: Expression | undefined);
static createFromAST(ast: ForStatementASTNode, outerContext: BlockContext): ForStatement;
createDefaultOutlet(this: CompiledForStatement, element: JQuery, parent?: ConstructOutlet): ForStatementOutlet;
isSemanticallyEquivalent_impl(other: AnalyticConstruct, equivalenceContext: SemanticContext): boolean;
}
export interface CompiledForStatement extends ForStatement, SuccessfullyCompiled {
readonly initial: CompiledExpressionStatement | CompiledNullStatement | CompiledDeclarationStatement;
readonly condition: CompiledExpression;
readonly body: CompiledStatement;
readonly post?: CompiledExpression;
readonly localDeallocator: CompiledObjectDeallocator;
}
export declare class RuntimeForStatement extends RuntimeStatement {
readonly initial: RuntimeExpressionStatement | RuntimeNullStatement | RuntimeDeclarationStatement;
readonly condition: RuntimeExpression;
readonly body?: RuntimeStatement;
readonly post?: RuntimeExpression;
readonly localDeallocator: RuntimeObjectDeallocator;
private index;
private upNextFns;
constructor(model: CompiledForStatement, parent: RuntimeStatement);
private static upNextFns;
protected upNextImpl(): void;
stepForwardImpl(): void;
}