sig
  type 'a t = private 'a
  val raw : 'a t -> 'a
  module type Raw = Validated_intf.Raw
  module type Validated =
    sig
      type raw
      type t = raw t
      val create : raw -> t Or_error.t
      val create_exn : raw -> t
      val raw : t -> raw
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  module type Validated_binable =
    sig
      type raw
      type t = raw t
      val create : raw -> t Or_error.t
      val create_exn : raw -> t
      val raw : t -> raw
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
      val bin_t : t Bin_prot.Type_class.t
      val bin_read_t : t Bin_prot.Read.reader
      val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
      val bin_reader_t : t Bin_prot.Type_class.reader
      val bin_size_t : t Bin_prot.Size.sizer
      val bin_write_t : t Bin_prot.Write.writer
      val bin_writer_t : t Bin_prot.Type_class.writer
    end
  module Make :
    functor (Raw : Raw->
      sig
        type t = Raw.t t
        val create : Raw.t -> t Or_error.t
        val create_exn : Raw.t -> t
        val raw : t -> Raw.t
        val t_of_sexp : Sexplib.Sexp.t -> t
        val sexp_of_t : t -> Sexplib.Sexp.t
      end
  module Make_binable :
    functor (Raw : Validated_intf.Raw_binable->
      sig
        type t = Raw.t t
        val create : Raw.t -> t Or_error.t
        val create_exn : Raw.t -> t
        val raw : t -> Raw.t
        val t_of_sexp : Sexplib.Sexp.t -> t
        val sexp_of_t : t -> Sexplib.Sexp.t
        val bin_t : t Bin_prot.Type_class.t
        val bin_read_t : t Bin_prot.Read.reader
        val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
        val bin_reader_t : t Bin_prot.Type_class.reader
        val bin_size_t : t Bin_prot.Size.sizer
        val bin_write_t : t Bin_prot.Write.writer
        val bin_writer_t : t Bin_prot.Type_class.writer
      end
end