import { IRHash } from "../IRHash.js";
import { IRNodeKind } from "../IRNodeKind.js";
import { IRTerm } from "../IRTerm.js";
import { IRParentTerm } from "../utils/isIRParentTerm.js";
import { BaseIRMetadata } from "./BaseIRMetadata.js";
export interface IRRecursiveMetadata extends BaseIRMetadata {
}
export declare class IRRecursive {
    static get kind(): IRNodeKind.Recursive;
    get kind(): IRNodeKind.Recursive;
    static get tag(): Uint8Array;
    readonly arity: number;
    constructor(body: IRTerm, func_name?: string | undefined, _unsafeHash?: IRHash);
    private _body;
    get body(): IRTerm;
    set body(newBody: IRTerm);
    private _hash;
    get hash(): IRHash;
    isHashPresent(): boolean;
    markHashAsInvalid(): void;
    readonly meta: IRRecursiveMetadata;
    get name(): string | undefined;
    private _parent;
    get parent(): IRParentTerm | undefined;
    set parent(newParent: IRTerm | undefined);
    clone(): IRRecursive;
    toJSON(): any;
    toJson(): any;
}
