sig
  type worker
  val create_worker : ?port:int -> string -> Functory.Network.worker
  val declare_workers : ?port:int -> ?n:int -> string -> unit
  val set_default_port_number : int -> unit
  val set_pong_timeout : float -> unit
  val set_ping_interval : float -> unit
  type worker_type = ?port:int -> unit -> unit
  type computation_status = Running | Done | Dead
  module Same :
    sig
      module Computation :
        sig
          type ('a, 'c) t
          val create :
            worker:('-> 'b) ->
            master:('a * '-> '-> ('a * 'c) list) ->
            ('a, 'c) Functory.Network.Same.Computation.t
          val add_worker :
            ('a, 'c) Functory.Network.Same.Computation.t ->
            Functory.Network.worker -> unit
          val add_task :
            ('a, 'c) Functory.Network.Same.Computation.t -> 'a * '-> unit
          val remove_worker :
            ('a, 'c) Functory.Network.Same.Computation.t ->
            Functory.Network.worker -> unit
          val one_step :
            ?timeout:float ->
            ('a, 'c) Functory.Network.Same.Computation.t -> unit
          val status :
            ('a, 'c) Functory.Network.Same.Computation.t ->
            Functory.Network.computation_status
          val clear : ('a, 'c) Functory.Network.Same.Computation.t -> unit
          val kill : ('a, 'c) Functory.Network.Same.Computation.t -> unit
        end
      val compute :
        worker:('-> 'b) ->
        master:('a * '-> '-> ('a * 'c) list) -> ('a * 'c) list -> unit
      module Worker : sig val compute : Functory.Network.worker_type end
      val map : f:('-> 'b) -> 'a list -> 'b list
      val map_local_fold :
        f:('-> 'b) -> fold:('-> '-> 'c) -> '-> 'a list -> 'c
      val map_remote_fold :
        f:('-> 'b) -> fold:('-> '-> 'c) -> '-> 'a list -> 'c
      val map_fold_ac :
        f:('-> 'b) -> fold:('-> '-> 'b) -> '-> 'a list -> 'b
      val map_fold_a :
        f:('-> 'b) -> fold:('-> '-> 'b) -> '-> 'a list -> 'b
    end
  module Poly :
    sig
      module Master :
        sig
          module Computation :
            sig
              type ('a, 'c) t
              val create :
                master:('a * '-> '-> ('a * 'c) list) ->
                ('a, 'c) Functory.Network.Poly.Master.Computation.t
              val add_worker :
                ('a, 'c) Functory.Network.Poly.Master.Computation.t ->
                Functory.Network.worker -> unit
              val remove_worker :
                ('a, 'c) Functory.Network.Poly.Master.Computation.t ->
                Functory.Network.worker -> unit
              val one_step :
                ?timeout:float ->
                ('a, 'c) Functory.Network.Poly.Master.Computation.t -> unit
              val status :
                ('a, 'c) Functory.Network.Poly.Master.Computation.t ->
                Functory.Network.computation_status
              val kill :
                ('a, 'c) Functory.Network.Poly.Master.Computation.t -> unit
              val clear :
                ('a, 'c) Functory.Network.Poly.Master.Computation.t -> unit
              val add_task :
                ('a, 'c) Functory.Network.Poly.Master.Computation.t ->
                'a * '-> unit
              val nb_tasks :
                ('a, 'c) Functory.Network.Poly.Master.Computation.t -> int
            end
          val compute :
            master:('a * '-> '-> ('a * 'c) list) ->
            ('a * 'c) list -> unit
          val map : 'a list -> 'b list
          val map_local_fold : fold:('-> '-> 'c) -> '-> 'a list -> 'c
          val map_remote_fold : '-> 'a list -> 'c
          val map_fold_ac : '-> 'a list -> 'b
          val map_fold_a : '-> 'a list -> 'b
        end
      module Worker :
        sig
          val compute : ('-> 'b) -> Functory.Network.worker_type
          val map : f:('-> 'b) -> Functory.Network.worker_type
          val map_local_fold : f:('-> 'b) -> Functory.Network.worker_type
          val map_remote_fold :
            f:('-> 'b) ->
            fold:('-> '-> 'c) -> Functory.Network.worker_type
          val map_fold_ac :
            f:('-> 'b) ->
            fold:('-> '-> 'b) -> Functory.Network.worker_type
          val map_fold_a :
            f:('-> 'b) ->
            fold:('-> '-> 'b) -> Functory.Network.worker_type
        end
    end
  module Mono :
    sig
      module Computation :
        sig
          type 'c t
          val create :
            master:(string * '-> string -> (string * 'c) list) ->
            'Functory.Network.Mono.Computation.t
          val add_worker :
            'Functory.Network.Mono.Computation.t ->
            Functory.Network.worker -> unit
          val remove_worker :
            'Functory.Network.Mono.Computation.t ->
            Functory.Network.worker -> unit
          val one_step :
            ?timeout:float -> 'Functory.Network.Mono.Computation.t -> unit
          val status :
            'Functory.Network.Mono.Computation.t ->
            Functory.Network.computation_status
          val kill : 'Functory.Network.Mono.Computation.t -> unit
          val clear : 'Functory.Network.Mono.Computation.t -> unit
          val add_task :
            'Functory.Network.Mono.Computation.t -> string * '-> unit
        end
      module Master :
        sig
          val compute :
            master:(string * '-> string -> (string * 'c) list) ->
            (string * 'c) list -> unit
        end
      module Worker :
        sig
          val compute : (string -> string) -> Functory.Network.worker_type
        end
    end
end