module Direct: sig .. end
val iter : Writer0.t ->
       id:(([< `Read | `Set_and_create ], Writer0.t, Writer0.Id.t)
           Fieldslib.Field.t_with_perm -> Writer0.t -> Writer0.Id.t -> 'a) ->
       fd:(([< `Read | `Set_and_create ], Writer0.t, Fd.t)
           Fieldslib.Field.t_with_perm -> Writer0.t -> Fd.t -> 'b) ->
       monitor:(([< `Read | `Set_and_create ], Writer0.t, Import.Monitor.t)
                Fieldslib.Field.t_with_perm -> Writer0.t -> Import.Monitor.t -> 'c) ->
       background_writer_state:(([< `Read | `Set_and_create ], Writer0.t,
                                 [ `Not_running | `Running | `Stopped_permanently ])
                                Fieldslib.Field.t_with_perm ->
                                Writer0.t ->
                                [ `Not_running | `Running | `Stopped_permanently ] ->
                                'd) ->
       syscall:(([< `Read | `Set_and_create ], Writer0.t,
                 [ `Per_cycle | `Periodic of Core.Std.Time.Span.t ])
                Fieldslib.Field.t_with_perm ->
                Writer0.t ->
                [ `Per_cycle | `Periodic of Core.Std.Time.Span.t ] -> 'e) ->
       bytes_received:(([< `Read | `Set_and_create ], Writer0.t, Core.Std.Int63.t)
                       Fieldslib.Field.t_with_perm ->
                       Writer0.t -> Core.Std.Int63.t -> 'f) ->
       bytes_written:(([< `Read | `Set_and_create ], Writer0.t, Core.Std.Int63.t)
                      Fieldslib.Field.t_with_perm ->
                      Writer0.t -> Core.Std.Int63.t -> 'g) ->
       scheduled:(([< `Read | `Set_and_create ], Writer0.t,
                   (Core.Std.Bigstring.t Writer0.IOVec.t * [ `Destroy | `Keep ])
                   Core.Std.Queue.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm ->
                  Writer0.t ->
                  (Core.Std.Bigstring.t Writer0.IOVec.t * [ `Destroy | `Keep ])
                  Core.Std.Queue.t Core.Std.sexp_opaque -> 'h) ->
       scheduled_bytes:(([< `Read | `Set_and_create ], Writer0.t, int)
                        Fieldslib.Field.t_with_perm -> Writer0.t -> int -> 'i) ->
       buf:(([< `Read | `Set_and_create ], Writer0.t,
             Core.Std.Bigstring.t Core.Std.sexp_opaque)
            Fieldslib.Field.t_with_perm ->
            Writer0.t -> Core.Std.Bigstring.t Core.Std.sexp_opaque -> 'j) ->
       scheduled_back:(([< `Read | `Set_and_create ], Writer0.t, int)
                       Fieldslib.Field.t_with_perm -> Writer0.t -> int -> 'k) ->
       back:(([< `Read | `Set_and_create ], Writer0.t, int)
             Fieldslib.Field.t_with_perm -> Writer0.t -> int -> 'l) ->
       flushes:(([< `Read | `Set_and_create ], Writer0.t,
                 (Core.Std.Time.t Import.Ivar.t * Core.Std.Int63.t) Core.Std.Queue.t
                 Core.Std.sexp_opaque)
                Fieldslib.Field.t_with_perm ->
                Writer0.t ->
                (Core.Std.Time.t Import.Ivar.t * Core.Std.Int63.t) Core.Std.Queue.t
                Core.Std.sexp_opaque -> 'm) ->
       close_state:(([< `Read | `Set_and_create ], Writer0.t,
                     [ `Closed | `Closed_and_flushing | `Open ])
                    Fieldslib.Field.t_with_perm ->
                    Writer0.t -> [ `Closed | `Closed_and_flushing | `Open ] -> 'n) ->
       close_finished:(([< `Read | `Set_and_create ], Writer0.t, unit Import.Ivar.t)
                       Fieldslib.Field.t_with_perm ->
                       Writer0.t -> unit Import.Ivar.t -> 'o) ->
       producers_to_flush_at_close:(([< `Read | `Set_and_create ], Writer0.t,
                                     (unit -> unit Import.Deferred.t) Core.Std.Bag.t)
                                    Fieldslib.Field.t_with_perm ->
                                    Writer0.t ->
                                    (unit -> unit Import.Deferred.t) Core.Std.Bag.t ->
                                    'p) ->
       flush_at_shutdown_elt:(([< `Read | `Set_and_create ], Writer0.t,
                               Writer0.t Core.Std.sexp_opaque Core.Std.Bag.Elt.t
                               option)
                              Fieldslib.Field.t_with_perm ->
                              Writer0.t ->
                              Writer0.t Core.Std.sexp_opaque Core.Std.Bag.Elt.t
                              option -> 'q) ->
       check_buffer_age:(([< `Read | `Set_and_create ], Writer0.t,
                          Writer0.t Core.Std.sexp_opaque Writer0.Check_buffer_age'.t
                          Core.Std.Bag.Elt.t option)
                         Fieldslib.Field.t_with_perm ->
                         Writer0.t ->
                         Writer0.t Core.Std.sexp_opaque Writer0.Check_buffer_age'.t
                         Core.Std.Bag.Elt.t option -> 'r) ->
       consumer_left:(([< `Read | `Set_and_create ], Writer0.t, unit Import.Ivar.t)
                      Fieldslib.Field.t_with_perm ->
                      Writer0.t -> unit Import.Ivar.t -> 's) ->
       raise_when_consumer_leaves:(([< `Read | `Set_and_create ], Writer0.t, bool)
                                   Fieldslib.Field.t_with_perm ->
                                   Writer0.t -> bool -> 't) ->
       open_flags:(([< `Read | `Set_and_create ], Writer0.t,
                    Writer0.open_flags Import.Deferred.t)
                   Fieldslib.Field.t_with_perm ->
                   Writer0.t -> Writer0.open_flags Import.Deferred.t -> 'u) ->
       'u
val fold : Writer0.t ->
       init:'a ->
       id:('a ->
           ([< `Read | `Set_and_create ], Writer0.t, Writer0.Id.t)
           Fieldslib.Field.t_with_perm -> Writer0.t -> Writer0.Id.t -> 'b) ->
       fd:('b ->
           ([< `Read | `Set_and_create ], Writer0.t, Fd.t)
           Fieldslib.Field.t_with_perm -> Writer0.t -> Fd.t -> 'c) ->
       monitor:('c ->
                ([< `Read | `Set_and_create ], Writer0.t, Import.Monitor.t)
                Fieldslib.Field.t_with_perm -> Writer0.t -> Import.Monitor.t -> 'd) ->
       background_writer_state:('d ->
                                ([< `Read | `Set_and_create ], Writer0.t,
                                 [ `Not_running | `Running | `Stopped_permanently ])
                                Fieldslib.Field.t_with_perm ->
                                Writer0.t ->
                                [ `Not_running | `Running | `Stopped_permanently ] ->
                                'e) ->
       syscall:('e ->
                ([< `Read | `Set_and_create ], Writer0.t,
                 [ `Per_cycle | `Periodic of Core.Std.Time.Span.t ])
                Fieldslib.Field.t_with_perm ->
                Writer0.t ->
                [ `Per_cycle | `Periodic of Core.Std.Time.Span.t ] -> 'f) ->
       bytes_received:('f ->
                       ([< `Read | `Set_and_create ], Writer0.t, Core.Std.Int63.t)
                       Fieldslib.Field.t_with_perm ->
                       Writer0.t -> Core.Std.Int63.t -> 'g) ->
       bytes_written:('g ->
                      ([< `Read | `Set_and_create ], Writer0.t, Core.Std.Int63.t)
                      Fieldslib.Field.t_with_perm ->
                      Writer0.t -> Core.Std.Int63.t -> 'h) ->
       scheduled:('h ->
                  ([< `Read | `Set_and_create ], Writer0.t,
                   (Core.Std.Bigstring.t Writer0.IOVec.t * [ `Destroy | `Keep ])
                   Core.Std.Queue.t Core.Std.sexp_opaque)
                  Fieldslib.Field.t_with_perm ->
                  Writer0.t ->
                  (Core.Std.Bigstring.t Writer0.IOVec.t * [ `Destroy | `Keep ])
                  Core.Std.Queue.t Core.Std.sexp_opaque -> 'i) ->
       scheduled_bytes:('i ->
                        ([< `Read | `Set_and_create ], Writer0.t, int)
                        Fieldslib.Field.t_with_perm -> Writer0.t -> int -> 'j) ->
       buf:('j ->
            ([< `Read | `Set_and_create ], Writer0.t,
             Core.Std.Bigstring.t Core.Std.sexp_opaque)
            Fieldslib.Field.t_with_perm ->
            Writer0.t -> Core.Std.Bigstring.t Core.Std.sexp_opaque -> 'k) ->
       scheduled_back:('k ->
                       ([< `Read | `Set_and_create ], Writer0.t, int)
                       Fieldslib.Field.t_with_perm -> Writer0.t -> int -> 'l) ->
       back:('l ->
             ([< `Read | `Set_and_create ], Writer0.t, int)
             Fieldslib.Field.t_with_perm -> Writer0.t -> int -> 'm) ->
       flushes:('m ->
                ([< `Read | `Set_and_create ], Writer0.t,
                 (Core.Std.Time.t Import.Ivar.t * Core.Std.Int63.t) Core.Std.Queue.t
                 Core.Std.sexp_opaque)
                Fieldslib.Field.t_with_perm ->
                Writer0.t ->
                (Core.Std.Time.t Import.Ivar.t * Core.Std.Int63.t) Core.Std.Queue.t
                Core.Std.sexp_opaque -> 'n) ->
       close_state:('n ->
                    ([< `Read | `Set_and_create ], Writer0.t,
                     [ `Closed | `Closed_and_flushing | `Open ])
                    Fieldslib.Field.t_with_perm ->
                    Writer0.t -> [ `Closed | `Closed_and_flushing | `Open ] -> 'o) ->
       close_finished:('o ->
                       ([< `Read | `Set_and_create ], Writer0.t, unit Import.Ivar.t)
                       Fieldslib.Field.t_with_perm ->
                       Writer0.t -> unit Import.Ivar.t -> 'p) ->
       producers_to_flush_at_close:('p ->
                                    ([< `Read | `Set_and_create ], Writer0.t,
                                     (unit -> unit Import.Deferred.t) Core.Std.Bag.t)
                                    Fieldslib.Field.t_with_perm ->
                                    Writer0.t ->
                                    (unit -> unit Import.Deferred.t) Core.Std.Bag.t ->
                                    'q) ->
       flush_at_shutdown_elt:('q ->
                              ([< `Read | `Set_and_create ], Writer0.t,
                               Writer0.t Core.Std.sexp_opaque Core.Std.Bag.Elt.t
                               option)
                              Fieldslib.Field.t_with_perm ->
                              Writer0.t ->
                              Writer0.t Core.Std.sexp_opaque Core.Std.Bag.Elt.t
                              option -> 'r) ->
       check_buffer_age:('r ->
                         ([< `Read | `Set_and_create ], Writer0.t,
                          Writer0.t Core.Std.sexp_opaque Writer0.Check_buffer_age'.t
                          Core.Std.Bag.Elt.t option)
                         Fieldslib.Field.t_with_perm ->
                         Writer0.t ->
                         Writer0.t Core.Std.sexp_opaque Writer0.Check_buffer_age'.t
                         Core.Std.Bag.Elt.t option -> 's) ->
       consumer_left:('s ->
                      ([< `Read | `Set_and_create ], Writer0.t, unit Import.Ivar.t)
                      Fieldslib.Field.t_with_perm ->
                      Writer0.t -> unit Import.Ivar.t -> 't) ->
       raise_when_consumer_leaves:('t ->
                                   ([< `Read | `Set_and_create ], Writer0.t, bool)
                                   Fieldslib.Field.t_with_perm ->
                                   Writer0.t -> bool -> 'u) ->
       open_flags:('u ->
                   ([< `Read | `Set_and_create ], Writer0.t,
                    Writer0.open_flags Import.Deferred.t)
                   Fieldslib.Field.t_with_perm ->
                   Writer0.t -> Writer0.open_flags Import.Deferred.t -> 'v) ->
       'v