sig
  type t
  val num_of_site :
    ?agent_name:string -> string Locality.annot -> Signature.t -> int
  val site_of_num : int -> Signature.t -> string
  val fold : (int -> string -> '-> 'a) -> '-> Signature.t -> 'a
  val num_of_internal_state :
    int -> string Locality.annot -> Signature.t -> int
  val internal_state_of_num : int -> int -> Signature.t -> string
  val counter_of_site : int -> Signature.t -> (int * int) option
  val has_counter : Signature.t -> bool
  type s
  val create :
    counters:(string Locality.annot * string Locality.annot list) list ->
    bool ->
    (string Locality.annot *
     (unit NamedDecls.t *
      (string Locality.annot * string Locality.annot) list *
      (int * int) option)
     NamedDecls.t)
    list -> Signature.s
  val size : Signature.s -> int
  val get : Signature.s -> int -> Signature.t
  val arity : Signature.s -> int -> int
  val max_arity : Signature.s -> int
  val num_of_agent : string Locality.annot -> Signature.s -> int
  val agent_of_num : int -> Signature.s -> string
  val id_of_site :
    string Locality.annot -> string Locality.annot -> Signature.s -> int
  val id_of_internal_state :
    string Locality.annot ->
    string Locality.annot -> string Locality.annot -> Signature.s -> int
  val internal_states_number : int -> int -> Signature.s -> int
  val default_internal_state : int -> int -> Signature.s -> int option
  val allowed_link : int -> int -> int -> int -> Signature.s -> bool
  val print_agent : Signature.s -> Format.formatter -> int -> unit
  val print_site : Signature.s -> int -> Format.formatter -> int -> unit
  val print_internal_state :
    Signature.s -> int -> int -> Format.formatter -> int -> unit
  val print_site_internal_state :
    Signature.s -> int -> int -> Format.formatter -> int option -> unit
  val print_counter : Signature.s -> int -> Format.formatter -> int -> unit
  val print : Format.formatter -> Signature.s -> unit
  val to_json : Signature.s -> Yojson.Basic.json
  val of_json : Yojson.Basic.json -> Signature.s
  val is_counter_agent : Signature.s option -> int -> bool
  val ports_if_counter_agent : Signature.s -> int -> (int * int) option
  val site_is_counter : Signature.s -> int -> int -> bool
  val incr_agent : Signature.s -> int * int * int * int
end