import * as _Object from './ion/Object';
import * as Expression from './Expression';
import * as Scope from './Scope';
import * as Type from './Type';
import * as Typed from './Typed';
import * as Node from './Node';
import * as Location from './Location';
import * as Null from './ion/Null';
import * as Identifier from './Identifier';
import * as Boolean from './ion/Boolean';
import * as _Array from './ion/Array';
import * as Parameter from './Parameter';
import * as BlockStatement from './BlockStatement';
export declare class FunctionExpression implements _Object.Object, Expression.Expression, Scope.Scope, Type.Type, Typed.Typed, Node.Node {
    readonly location: Location.Location | Null.Null;
    readonly type: Type.Type | Null.Null;
    readonly id: Identifier.Identifier | Null.Null;
    readonly bind: Boolean.Boolean;
    readonly params: _Array.Array<Parameter.Parameter>;
    readonly body: BlockStatement.BlockStatement;
    readonly async: Boolean.Boolean;
    readonly generator: Boolean.Boolean;
    readonly returnType: Type.Type | Null.Null;
    static readonly id = "FunctionExpression";
    static readonly implements: Set<string>;
    constructor({ location, type, id, bind, params, body, async: _async, generator, returnType }: {
        location?: Location.Location | Null.Null;
        type?: Type.Type | Null.Null;
        id?: Identifier.Identifier | Null.Null;
        bind?: Boolean.Boolean;
        params: _Array.Array<Parameter.Parameter>;
        body: BlockStatement.BlockStatement;
        async?: Boolean.Boolean;
        generator?: Boolean.Boolean;
        returnType?: Type.Type | Null.Null;
    });
    patch(properties: {
        location?: Location.Location | Null.Null;
        type?: Type.Type | Null.Null;
        id?: Identifier.Identifier | Null.Null;
        bind?: Boolean.Boolean;
        params?: _Array.Array<Parameter.Parameter>;
        body?: BlockStatement.BlockStatement;
        async?: Boolean.Boolean;
        generator?: Boolean.Boolean;
        returnType?: Type.Type | Null.Null;
    }): FunctionExpression;
    static is(value: any): value is FunctionExpression;
}
export declare function isFunctionExpression(value: any): value is FunctionExpression;
export default FunctionExpression;
