sig
  type t = {
    capacity : int;
    init : Udp.write_buffer;
    before : Udp.write_buffer -> unit;
    after : Udp.write_buffer -> unit;
    stop : unit Import.Deferred.t;
  }
  val stop : Udp.Config.t -> unit Import.Deferred.t
  val after : Udp.Config.t -> Udp.write_buffer -> unit
  val before : Udp.Config.t -> Udp.write_buffer -> unit
  val init : Udp.Config.t -> Udp.write_buffer
  val capacity : Udp.Config.t -> int
  module Fields :
    sig
      val names : string list
      val stop : (Udp.Config.t, unit Import.Deferred.t) Fieldslib.Field.t
      val after : (Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t
      val before : (Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t
      val init : (Udp.Config.t, Udp.write_buffer) Fieldslib.Field.t
      val capacity : (Udp.Config.t, int) Fieldslib.Field.t
      val fold :
        init:'acc__ ->
        capacity:('acc__ -> (Udp.Config.t, int) Fieldslib.Field.t -> 'acc__) ->
        init:('acc__ ->
              (Udp.Config.t, Udp.write_buffer) Fieldslib.Field.t -> 'acc__) ->
        before:('acc__ ->
                (Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
                'acc__) ->
        after:('acc__ ->
               (Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
               'acc__) ->
        stop:('acc__ ->
              (Udp.Config.t, unit Import.Deferred.t) Fieldslib.Field.t ->
              'acc__) ->
        'acc__
      val make_creator :
        capacity:((Udp.Config.t, int) Fieldslib.Field.t ->
                  'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        init:((Udp.Config.t, Udp.write_buffer) Fieldslib.Field.t ->
              'compile_acc__ ->
              ('input__ -> Udp.write_buffer) * 'compile_acc__) ->
        before:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
                'compile_acc__ ->
                ('input__ -> Udp.write_buffer -> unit) * 'compile_acc__) ->
        after:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
               'compile_acc__ ->
               ('input__ -> Udp.write_buffer -> unit) * 'compile_acc__) ->
        stop:((Udp.Config.t, unit Import.Deferred.t) Fieldslib.Field.t ->
              'compile_acc__ ->
              ('input__ -> unit Import.Deferred.t) * 'compile_acc__) ->
        'compile_acc__ -> ('input__ -> Udp.Config.t) * 'compile_acc__
      val create :
        capacity:int ->
        init:Udp.write_buffer ->
        before:(Udp.write_buffer -> unit) ->
        after:(Udp.write_buffer -> unit) ->
        stop:unit Import.Deferred.t -> Udp.Config.t
      val map :
        capacity:((Udp.Config.t, int) Fieldslib.Field.t -> int) ->
        init:((Udp.Config.t, Udp.write_buffer) Fieldslib.Field.t ->
              Udp.write_buffer) ->
        before:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
                Udp.write_buffer -> unit) ->
        after:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
               Udp.write_buffer -> unit) ->
        stop:((Udp.Config.t, unit Import.Deferred.t) Fieldslib.Field.t ->
              unit Import.Deferred.t) ->
        Udp.Config.t
      val iter :
        capacity:((Udp.Config.t, int) Fieldslib.Field.t -> unit) ->
        init:((Udp.Config.t, Udp.write_buffer) Fieldslib.Field.t -> unit) ->
        before:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
                unit) ->
        after:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
               unit) ->
        stop:((Udp.Config.t, unit Import.Deferred.t) Fieldslib.Field.t ->
              unit) ->
        unit
      val for_all :
        capacity:((Udp.Config.t, int) Fieldslib.Field.t -> bool) ->
        init:((Udp.Config.t, Udp.write_buffer) Fieldslib.Field.t -> bool) ->
        before:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
                bool) ->
        after:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
               bool) ->
        stop:((Udp.Config.t, unit Import.Deferred.t) Fieldslib.Field.t ->
              bool) ->
        bool
      val exists :
        capacity:((Udp.Config.t, int) Fieldslib.Field.t -> bool) ->
        init:((Udp.Config.t, Udp.write_buffer) Fieldslib.Field.t -> bool) ->
        before:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
                bool) ->
        after:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
               bool) ->
        stop:((Udp.Config.t, unit Import.Deferred.t) Fieldslib.Field.t ->
              bool) ->
        bool
      val to_list :
        capacity:((Udp.Config.t, int) Fieldslib.Field.t -> 'elem__) ->
        init:((Udp.Config.t, Udp.write_buffer) Fieldslib.Field.t -> 'elem__) ->
        before:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
                'elem__) ->
        after:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
               'elem__) ->
        stop:((Udp.Config.t, unit Import.Deferred.t) Fieldslib.Field.t ->
              'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read | `Set_and_create ], Udp.Config.t, 'x0)
        Fieldslib.Field.user -> 'x0 list
      module Direct :
        sig
          val iter :
            Udp.Config.t ->
            capacity:((Udp.Config.t, int) Fieldslib.Field.t ->
                      Udp.Config.t -> int -> unit) ->
            init:((Udp.Config.t, Udp.write_buffer) Fieldslib.Field.t ->
                  Udp.Config.t -> Udp.write_buffer -> unit) ->
            before:((Udp.Config.t, Udp.write_buffer -> unit)
                    Fieldslib.Field.t ->
                    Udp.Config.t -> (Udp.write_buffer -> unit) -> unit) ->
            after:((Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
                   Udp.Config.t -> (Udp.write_buffer -> unit) -> unit) ->
            stop:((Udp.Config.t, unit Import.Deferred.t) Fieldslib.Field.t ->
                  Udp.Config.t -> unit Import.Deferred.t -> unit) ->
            unit
          val fold :
            Udp.Config.t ->
            init:'acc__ ->
            capacity:('acc__ ->
                      (Udp.Config.t, int) Fieldslib.Field.t ->
                      Udp.Config.t -> int -> 'acc__) ->
            init:('acc__ ->
                  (Udp.Config.t, Udp.write_buffer) Fieldslib.Field.t ->
                  Udp.Config.t -> Udp.write_buffer -> 'acc__) ->
            before:('acc__ ->
                    (Udp.Config.t, Udp.write_buffer -> unit)
                    Fieldslib.Field.t ->
                    Udp.Config.t -> (Udp.write_buffer -> unit) -> 'acc__) ->
            after:('acc__ ->
                   (Udp.Config.t, Udp.write_buffer -> unit) Fieldslib.Field.t ->
                   Udp.Config.t -> (Udp.write_buffer -> unit) -> 'acc__) ->
            stop:('acc__ ->
                  (Udp.Config.t, unit Import.Deferred.t) Fieldslib.Field.t ->
                  Udp.Config.t -> unit Import.Deferred.t -> 'acc__) ->
            'acc__
        end
    end
  val create :
    ?capacity:int ->
    ?init:Udp.write_buffer ->
    ?before:(Udp.write_buffer -> unit) ->
    ?after:(Udp.write_buffer -> unit) ->
    ?stop:unit Import.Deferred.t -> unit -> Udp.Config.t
end