sig
  type ('a, 'b, 'c) t
  val create :
    ?init:(Nproc.worker_info -> unit) ->
    int -> ('-> 'Lwt.t) -> '-> ('a, 'b, 'c) Nproc.Full.t * unit Lwt.t
  val close : ('a, 'b, 'c) Nproc.Full.t -> unit Lwt.t
  val terminate : ('a, 'b, 'c) Nproc.Full.t -> unit
  val submit :
    ('a, 'b, 'c) Nproc.Full.t ->
    f:(('-> 'b) -> '-> '-> 'e) -> '-> 'e option Lwt.t
  val iter_stream :
    ?granularity:int ->
    ?init:(Nproc.worker_info -> unit) ->
    nproc:int ->
    serv:('-> 'Lwt.t) ->
    env:'->
    f:(('-> 'b) -> '-> '-> 'e) ->
    g:('e option -> unit) -> 'Stream.t -> unit
end