import { Cloneable } from "../../utils/Cloneable.js";
import { ToJson } from "../../utils/ToJson.js";
import { IRTerm } from "../IRTerm.js";
import { IHash, IIRParent } from "../interfaces/index.js";
import { IRParentTerm } from "../utils/isIRParentTerm.js";
import { BaseIRMetadata } from "./BaseIRMetadata.js";
import { MutArrayLike } from "../utils/MutArrayLike.js";
import { IRHash } from "../IRHash.js";
import { IRNodeKind } from "../IRNodeKind.js";
export interface IRConstrMeta extends BaseIRMetadata {
}
export declare class IRConstr implements Cloneable<IRConstr>, IHash, IIRParent, ToJson {
    readonly index: bigint;
    readonly fields: MutArrayLike<IRTerm>;
    readonly meta: IRConstrMeta;
    static get kind(): IRNodeKind.Constr;
    get kind(): IRNodeKind.Constr;
    static get tag(): Uint8Array;
    constructor(index: number | bigint, fields: ArrayLike<IRTerm>, meta?: IRConstrMeta, _unsafeHash?: IRHash);
    private _hash;
    get hash(): IRHash;
    markHashAsInvalid(): void;
    isHashPresent(): boolean;
    private _parent;
    get parent(): IRParentTerm | undefined;
    set parent(newParent: IRParentTerm | undefined);
    clone(): IRConstr;
    toJSON(): any;
    toJson(): any;
}
