import { Cloneable } from "@harmoniclabs/cbor/dist/utils/Cloneable";
import { ToJson } from "../../utils/ToJson.js";
import { IRTerm } from "../IRTerm.js";
import { IHash } from "../interfaces/IHash.js";
import { IIRParent } from "../interfaces/IIRParent.js";
import { IRParentTerm } from "../utils/isIRParentTerm.js";
import { BaseIRMetadata } from "./BaseIRMetadata.js";
import { IRHash } from "../IRHash.js";
import { IRNodeKind } from "../IRNodeKind.js";
export interface IRFuncMetadata extends BaseIRMetadata {
}
export declare class IRFunc implements Cloneable<IRFunc>, IHash, IIRParent, ToJson {
    readonly arity: number;
    constructor(arity: number, body: IRTerm, func_name?: string | undefined, _unsafeHash?: IRHash);
    static get kind(): IRNodeKind.Func;
    get kind(): IRNodeKind.Func;
    static get tag(): Uint8Array;
    private _body;
    get body(): IRTerm;
    set body(newBody: IRTerm);
    private _hash;
    get hash(): IRHash;
    isHashPresent(): boolean;
    markHashAsInvalid(): void;
    readonly meta: IRFuncMetadata;
    get name(): string | undefined;
    private _parent;
    get parent(): IRParentTerm | undefined;
    set parent(newParent: IRTerm | undefined);
    clone(): IRFunc;
    toJSON(): any;
    toJson(): any;
}
