import * as _Object from './ion/Object';
import * as Statement from './Statement';
import * as Typed from './Typed';
import * as Node from './Node';
import * as Location from './Location';
import * as Null from './ion/Null';
import * as Type from './Type';
import * as VariableDeclaration from './VariableDeclaration';
import * as Expression from './Expression';
import * as BlockStatement from './BlockStatement';
export declare class ForStatement implements _Object.Object, Statement.Statement, Typed.Typed, Node.Node {
    readonly location: Location.Location | Null.Null;
    readonly type: Type.Type | Null.Null;
    readonly init: VariableDeclaration.VariableDeclaration | Null.Null;
    readonly test: Expression.Expression | Null.Null;
    readonly update: Expression.Expression | Null.Null;
    readonly body: BlockStatement.BlockStatement;
    static readonly id = "ForStatement";
    static readonly implements: Set<string>;
    constructor({ location, type, init, test, update, body }: {
        location?: Location.Location | Null.Null;
        type?: Type.Type | Null.Null;
        init?: VariableDeclaration.VariableDeclaration | Null.Null;
        test?: Expression.Expression | Null.Null;
        update?: Expression.Expression | Null.Null;
        body: BlockStatement.BlockStatement;
    });
    patch(properties: {
        location?: Location.Location | Null.Null;
        type?: Type.Type | Null.Null;
        init?: VariableDeclaration.VariableDeclaration | Null.Null;
        test?: Expression.Expression | Null.Null;
        update?: Expression.Expression | Null.Null;
        body?: BlockStatement.BlockStatement;
    }): ForStatement;
    static is(value: any): value is ForStatement;
}
export declare function isForStatement(value: any): value is ForStatement;
export default ForStatement;
