sig
  module Error = Qcow_error
  module Header = Qcow_header
  module Make :
    functor (B : Qcow_s.RESIZABLE_BLOCK->
      sig
        type page_aligned_buffer = Cstruct.t
        type error =
            [ `Disconnected
            | `Is_read_only
            | `Unimplemented
            | `Unknown of string ]
        type 'a io = 'Lwt.t
        type t
        type id
        val disconnect : t -> unit io
        type info = {
          read_write : bool;
          sector_size : int;
          size_sectors : int64;
        }
        val get_info : t -> info io
        val read :
          t ->
          int64 ->
          page_aligned_buffer list -> [ `Error of error | `Ok of unit ] io
        val write :
          t ->
          int64 ->
          page_aligned_buffer list -> [ `Error of error | `Ok of unit ] io
        val create : B.t -> int64 -> [ `Error of error | `Ok of t ] io
        val connect : B.t -> [ `Error of error | `Ok of t ] io
        val resize : t -> int64 -> [ `Error of error | `Ok of unit ] io
        val seek_unmapped :
          t -> int64 -> [ `Error of error | `Ok of int64 ] io
        val seek_mapped : t -> int64 -> [ `Error of error | `Ok of int64 ] io
      end
end