sig
  type ('i, 'o) t = ('i, 'o) Cf_flow.cell Lazy.t
  and ('i, 'o) cell =
      P of 'o * ('i, 'o) Cf_flow.t
    | Q of ('-> ('i, 'o) Cf_flow.cell)
    | Z
  val nil : ('y, 'x) Cf_flow.t
  val nop : ('x, 'x) Cf_flow.t
  val filter : ('-> bool) -> ('x, 'x) Cf_flow.t
  val map : ('-> 'o) -> ('i, 'o) Cf_flow.t
  val optmap : ('-> 'o option) -> ('i, 'o) Cf_flow.t
  val listmap : ('-> 'o list) -> ('i, 'o) Cf_flow.t
  val seqmap : ('-> 'Cf_seq.t) -> ('i, 'o) Cf_flow.t
  val broadcast : ('i, 'o) Cf_flow.t list -> ('i, 'o) Cf_flow.t
  val mapstate : ('-> '-> 's * 'o) -> '-> ('i, 'o) Cf_flow.t
  val machine :
    ('-> '-> ('s * 'Cf_seq.t) option) -> '-> ('i, 'o) Cf_flow.t
  module Op :
    sig
      val ( -*- ) :
        ('i, 'o) Cf_flow.t -> ('i, 'o) Cf_flow.t -> ('i, 'o) Cf_flow.t
      val ( -=- ) :
        ('i, 'x) Cf_flow.t -> ('x, 'o) Cf_flow.t -> ('i, 'o) Cf_flow.t
      val ( -&- ) :
        ('i, 'o) Cf_flow.t -> ('i, 'o) Cf_flow.t -> ('i, 'o) Cf_flow.t
      val ( -+- ) :
        ('ia, 'oa) Cf_flow.t ->
        ('ib, 'ob) Cf_flow.t ->
        (('ia, 'ib) Cf_either.t, ('oa, 'ob) Cf_either.t) Cf_flow.t
      val ( ~@ ) : ('x, 'x) Cf_flow.t -> ('x, 'x) Cf_flow.t
      val ( ~@< ) :
        (('x, 'i) Cf_either.t, ('x, 'o) Cf_either.t) Cf_flow.t ->
        ('i, 'o) Cf_flow.t
      val ( -@- ) :
        (('o0, 'i1) Cf_either.t, ('i0, 'o1) Cf_either.t) Cf_flow.t ->
        ('i0, 'o0) Cf_flow.t -> ('i1, 'o1) Cf_flow.t
    end
  val to_seq : (unit, 'o) Cf_flow.t -> 'Cf_seq.t
  val of_seq : 'Cf_seq.t -> ('i, 'o) Cf_flow.t
  val upcase : (char, char) Cf_flow.t
  val dncase : (char, char) Cf_flow.t
  val commute : ('i, 'o) Cf_flow.t -> 'Cf_seq.t -> 'Cf_seq.t
  val commute_string : (char, char) Cf_flow.t -> string -> string
  val drain : ('i, 'o) Cf_flow.t -> 'Cf_seq.t
  val flush : ('i, 'o) Cf_flow.t -> ('i, 'o) Cf_flow.t
  val ingestor : ('Cf_seq.t option, 'a) Cf_flow.t
  val transcode :
    ('Cf_seq.t option, 'o) Cf_flow.t -> 'Cf_seq.t -> 'Cf_seq.t
  module Transcode :
    sig
      val more :
        ('Cf_seq.t option, 'o) Cf_flow.t ->
        'Cf_seq.t -> 'Cf_seq.t * ('Cf_seq.t option, 'o) Cf_flow.t
      val last : ('Cf_seq.t option, 'o) Cf_flow.t -> 'Cf_seq.t
    end
  val readC : (('i, 'o) Cf_flow.t, 'i) Cf_cmonad.t
  val writeC : '-> (('i, 'o) Cf_flow.t, unit) Cf_cmonad.t
  val evalC : (('i, 'o) Cf_flow.t, unit) Cf_cmonad.t -> ('i, 'o) Cf_flow.t
  val readSC : ('s, ('i, 'o) Cf_flow.t, 'i) Cf_scmonad.t
  val writeSC : '-> ('s, ('i, 'o) Cf_flow.t, unit) Cf_scmonad.t
  val evalSC :
    ('s, ('i, 'o) Cf_flow.t, unit) Cf_scmonad.t -> '-> ('i, 'o) Cf_flow.t
end