import * as _Object from './ion/Object';
import * as Identifier from './Identifier';
import * as Expression from './Expression';
import * as Type from './Type';
import * as RuntimeType from './RuntimeType';
import * as Node from './Node';
import * as Typed from './Typed';
import * as Location from './Location';
import * as Null from './ion/Null';
import * as String from './ion/String';
import * as _Array from './ion/Array';
export declare class Reference implements _Object.Object, Identifier.Identifier, Expression.Expression, Type.Type, RuntimeType.RuntimeType, Node.Node, Typed.Typed {
    readonly location: Location.Location | Null.Null;
    readonly name: String.String;
    readonly path: String.String | Null.Null;
    readonly type: Type.Type | Null.Null;
    readonly arguments: _Array.Array<Type.Type> | Null.Null;
    static readonly id = "Reference";
    static readonly implements: Set<string>;
    constructor({ location, name, path, type, arguments: _arguments }: {
        location?: Location.Location | Null.Null;
        name: String.String;
        path?: String.String | Null.Null;
        type?: Type.Type | Null.Null;
        arguments?: _Array.Array<Type.Type> | Null.Null;
    });
    patch(properties: {
        location?: Location.Location | Null.Null;
        name?: String.String;
        path?: String.String | Null.Null;
        type?: Type.Type | Null.Null;
        arguments?: _Array.Array<Type.Type> | Null.Null;
    }): Reference;
    static is(value: any): value is Reference;
}
export declare function isReference(value: any): value is Reference;
export default Reference;
