sig
  type xml_stream_state = New | Handshaking | Normal | Ended | Failed
  exception Not_enough
  exception Stream_end
  exception Stream_error of string
  class type xml_stream_reader =
    object
      method add_data : string -> int -> int -> unit
      method default_ns_URI : unit -> string
      method get_state : unit -> Xmlstream.xml_stream_state
      method pull_ele : unit -> Yaxpodom.ele
      method pull_handshake : unit -> Yaxpodom.qname * Yaxpodom.att list
      method stream_ns_URI : unit -> string
      method stream_ns_decls : unit -> Yaxpodom.att list
      method stream_ns_pfx : unit -> string
    end
  val mk_xml_stream_reader : unit -> Xmlstream.xml_stream_reader
  class type xml_stream_writer =
    object
      method add_ele : Yaxpodom.ele -> bool -> unit
      method data_bytes_avail : unit -> int
      method end_stream : unit -> unit
      method handshake :
        Yaxpodom.txt ->
        Yaxpodom.txt -> Yaxpodom.txt -> Yaxpodom.att list -> unit
      method write_fully : (string -> int -> int -> unit) -> unit
      method write_some : int -> (string -> int -> int -> int) -> int
    end
  val mk_xml_stream_writer : unit -> Xmlstream.xml_stream_writer
end