sig
  type t = Existing of Agent.t * int | Fresh of int * int
  val rename : int -> Renaming.t -> Matching.Agent.t -> Matching.Agent.t
  val concretize :
    Matching.matching * int Mods.IntMap.t -> Matching.Agent.t -> int * int
  val get_type : Matching.Agent.t -> int
  val get_id : Matching.Agent.t -> int
  val same_connected_component : Matching.Agent.t -> Matching.Agent.t -> bool
  val is_fresh : Matching.Agent.t -> bool
  val print :
    ?sigs:Signature.s -> Format.formatter -> Matching.Agent.t -> unit
  val print_site :
    ?sigs:Signature.s -> Matching.Agent.t -> Format.formatter -> int -> unit
  val print_internal :
    ?sigs:Signature.s ->
    Matching.Agent.t -> int -> Format.formatter -> int -> unit
  val to_yojson : Matching.Agent.t -> Yojson.Basic.json
  val of_yojson : Yojson.Basic.json -> Matching.Agent.t
end