///
///
import { IfStatementASTNode } 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 { Block, CompiledBlock, RuntimeBlock } from "./Block";
import { Statement, RuntimeStatement } from "./Statement";
import { IfStatementOutlet } from "../../../view/constructs/StatementOutlets";
export declare class IfStatement extends Statement {
readonly construct_type = "if_statement";
readonly condition: Expression;
readonly then: Block;
readonly otherwise?: Block;
static createFromAST(ast: IfStatementASTNode, context: BlockContext): IfStatement;
constructor(context: BlockContext, ast: IfStatementASTNode, condition: Expression, then: Block, otherwise?: Block);
createDefaultOutlet(this: CompiledIfStatement, element: JQuery, parent?: ConstructOutlet): IfStatementOutlet;
isSemanticallyEquivalent_impl(other: AnalyticConstruct, equivalenceContext: SemanticContext): boolean;
}
export interface CompiledIfStatement extends IfStatement, SuccessfullyCompiled {
readonly condition: CompiledExpression;
readonly then: CompiledBlock;
readonly otherwise?: CompiledBlock;
}
export declare class RuntimeIfStatement extends RuntimeStatement {
readonly condition: RuntimeExpression;
readonly then: RuntimeBlock;
readonly otherwise?: RuntimeBlock;
private index;
constructor(model: CompiledIfStatement, parent: RuntimeStatement);
private static upNextFns;
protected upNextImpl(): void;
stepForwardImpl(): void;
}