sig
  module Id : Core.Std.Unique_id
  type t
  val invariant : t Core_kernel.Invariant_intf.inv
  val io_stats : Io_stats.t
  val stdout : Writer.t Core.Std.Lazy.t
  val stderr : Writer.t Core.Std.Lazy.t
  type buffer_age_limit = [ `At_most of Core.Std.Time.Span.t | `Unlimited ]
  val create :
    ?buf_len:int ->
    ?syscall:[ `Per_cycle | `Periodic of Core.Std.Time.Span.t ] ->
    ?buffer_age_limit:Writer.buffer_age_limit ->
    ?raise_when_consumer_leaves:bool -> Fd.t -> Writer.t
  val set_raise_when_consumer_leaves : Writer.t -> bool -> unit
  val set_buffer_age_limit : Writer.t -> Writer.buffer_age_limit -> unit
  val consumer_left : Writer.t -> unit Import.Deferred.t
  val of_out_channel : Pervasives.out_channel -> Fd.Kind.t -> Writer.t
  val open_file :
    ?append:bool ->
    ?close_on_exec:bool -> ?perm:int -> string -> Writer.t Import.Deferred.t
  val with_file :
    ?perm:int ->
    ?append:bool ->
    ?exclusive:bool ->
    string -> f:(Writer.t -> 'Import.Deferred.t) -> 'Import.Deferred.t
  val id : Writer.t -> Id.t
  val fd : Writer.t -> Fd.t
  val set_fd : Writer.t -> Fd.t -> unit Import.Deferred.t
  val write : ?pos:int -> ?len:int -> Writer.t -> string -> unit
  val write_bigstring :
    ?pos:int -> ?len:int -> Writer.t -> Core.Std.Bigstring.t -> unit
  val write_substring : Writer.t -> Core.Std.Substring.t -> unit
  val write_bigsubstring : Writer.t -> Core.Std.Bigsubstring.t -> unit
  val writef : Writer.t -> ('a, unit, string, unit) Pervasives.format4 -> 'a
  val to_formatter : Writer.t -> Format.formatter
  val write_char : Writer.t -> char -> unit
  val newline : Writer.t -> unit
  val write_line : Writer.t -> string -> unit
  val write_byte : Writer.t -> int -> unit
  val write_sexp : ?hum:bool -> Writer.t -> Core.Std.Sexp.t -> unit
  val write_bin_prot :
    Writer.t -> 'Core.Std.Bin_prot.Type_class.writer -> '-> unit
  val write_marshal :
    Writer.t -> flags:Marshal.extern_flags list -> '-> unit
  val schedule_bigstring :
    Writer.t -> ?pos:int -> ?len:int -> Core.Std.Bigstring.t -> unit
  val schedule_bigsubstring : Writer.t -> Core.Std.Bigsubstring.t -> unit
  val schedule_iovec :
    Writer.t -> Core.Std.Bigstring.t Core.Std.Unix.IOVec.t -> unit
  val schedule_iovecs :
    Writer.t ->
    Core.Std.Bigstring.t Core.Std.Unix.IOVec.t Core.Std.Queue.t -> unit
  val flushed : Writer.t -> unit Import.Deferred.t
  val flushed_time : Writer.t -> Core.Std.Time.t Import.Deferred.t
  val fsync : Writer.t -> unit Import.Deferred.t
  val fdatasync : Writer.t -> unit Import.Deferred.t
  val send : Writer.t -> string -> unit
  val monitor : Writer.t -> Import.Monitor.t
  val close :
    ?force_close:unit Import.Deferred.t -> Writer.t -> unit Import.Deferred.t
  val close_finished : Writer.t -> unit Import.Deferred.t
  val is_closed : Writer.t -> bool
  val is_open : Writer.t -> bool
  val bytes_to_write : Writer.t -> int
  val bytes_written : Writer.t -> Core.Std.Int63.t
  val bytes_received : Writer.t -> Core.Std.Int63.t
  val with_file_atomic :
    ?temp_file:string ->
    ?perm:Core.Std.Unix.file_perm ->
    ?fsync:bool ->
    string -> f:(Writer.t -> 'Import.Deferred.t) -> 'Import.Deferred.t
  val save :
    ?temp_file:string ->
    ?perm:Core.Std.Unix.file_perm ->
    ?fsync:bool -> string -> contents:string -> unit Import.Deferred.t
  val save_lines :
    ?temp_file:string ->
    ?perm:Core.Std.Unix.file_perm ->
    ?fsync:bool -> string -> string list -> unit Import.Deferred.t
  val save_sexp :
    ?temp_file:string ->
    ?perm:Core.Std.Unix.file_perm ->
    ?fsync:bool ->
    ?hum:bool -> string -> Core.Std.Sexp.t -> unit Import.Deferred.t
  val transfer :
    Writer.t ->
    'Import.Pipe.Reader.t -> ('-> unit) -> unit Import.Deferred.t
  val pipe : Writer.t -> string Import.Pipe.Writer.t
  val sexp_of_t : Writer.t -> Sexplib.Sexp.t
  val buffer_age_limit_of_sexp : Sexplib.Sexp.t -> Writer.buffer_age_limit
  val __buffer_age_limit_of_sexp__ :
    Sexplib.Sexp.t -> Writer.buffer_age_limit
  val sexp_of_buffer_age_limit : Writer.buffer_age_limit -> Sexplib.Sexp.t
  val bin_buffer_age_limit :
    Writer.buffer_age_limit Core.Std.Bin_prot.Type_class.t
  val bin_read_buffer_age_limit :
    Writer.buffer_age_limit Core.Std.Bin_prot.Read_ml.reader
  val bin_read_buffer_age_limit_ :
    Writer.buffer_age_limit Core.Std.Bin_prot.Unsafe_read_c.reader
  val bin_read_buffer_age_limit__ :
    (int -> Writer.buffer_age_limit) Core.Std.Bin_prot.Unsafe_read_c.reader
  val bin_reader_buffer_age_limit :
    Writer.buffer_age_limit Core.Std.Bin_prot.Type_class.reader
  val bin_size_buffer_age_limit :
    Writer.buffer_age_limit Core.Std.Bin_prot.Size.sizer
  val bin_write_buffer_age_limit :
    Writer.buffer_age_limit Core.Std.Bin_prot.Write_ml.writer
  val bin_write_buffer_age_limit_ :
    Writer.buffer_age_limit Core.Std.Bin_prot.Unsafe_write_c.writer
  val bin_writer_buffer_age_limit :
    Writer.buffer_age_limit Core.Std.Bin_prot.Type_class.writer
end