sig
  module Oid :
    sig
      type t
      val of_string : string -> Ldap_schemaparser.Oid.t
      val to_string : Ldap_schemaparser.Oid.t -> string
      val compare : Ldap_schemaparser.Oid.t -> Ldap_schemaparser.Oid.t -> int
    end
  val format_oid : Ldap_schemaparser.Oid.t -> unit
  module Lcstring :
    sig
      type t
      val of_string : string -> Ldap_schemaparser.Lcstring.t
      val to_string : Ldap_schemaparser.Lcstring.t -> string
      val compare :
        Ldap_schemaparser.Lcstring.t -> Ldap_schemaparser.Lcstring.t -> int
    end
  val format_lcstring : Ldap_schemaparser.Lcstring.t -> unit
  type octype = Abstract | Structural | Auxiliary
  type objectclass = {
    oc_name : string list;
    oc_oid : Ldap_schemaparser.Oid.t;
    oc_desc : string;
    oc_obsolete : bool;
    oc_sup : Ldap_schemaparser.Lcstring.t list;
    oc_must : Ldap_schemaparser.Lcstring.t list;
    oc_may : Ldap_schemaparser.Lcstring.t list;
    oc_type : Ldap_schemaparser.octype;
    oc_xattr : string list;
  }
  type attribute = {
    at_name : string list;
    at_desc : string;
    at_oid : Ldap_schemaparser.Oid.t;
    at_equality : string;
    at_ordering : string;
    at_substr : Ldap_schemaparser.Oid.t;
    at_syntax : Ldap_schemaparser.Oid.t;
    at_length : Int64.t;
    at_obsolete : bool;
    at_single_value : bool;
    at_collective : bool;
    at_no_user_modification : bool;
    at_usage : string;
    at_sup : Ldap_schemaparser.Lcstring.t list;
    at_xattr : string list;
  }
  type schema = {
    objectclasses :
      (Ldap_schemaparser.Lcstring.t, Ldap_schemaparser.objectclass) Hashtbl.t;
    objectclasses_byoid :
      (Ldap_schemaparser.Oid.t, Ldap_schemaparser.objectclass) Hashtbl.t;
    attributes :
      (Ldap_schemaparser.Lcstring.t, Ldap_schemaparser.attribute) Hashtbl.t;
    attributes_byoid :
      (Ldap_schemaparser.Oid.t, Ldap_schemaparser.attribute) Hashtbl.t;
  }
  val schema_print_depth : int Pervasives.ref
  val format_schema : Ldap_schemaparser.schema -> unit
  exception Parse_error_oc of Lexing.lexbuf * Ldap_schemaparser.objectclass *
              string
  exception Parse_error_at of Lexing.lexbuf * Ldap_schemaparser.attribute *
              string
  exception Syntax_error_oc of Lexing.lexbuf *
              Ldap_schemaparser.objectclass * string
  exception Syntax_error_at of Lexing.lexbuf * Ldap_schemaparser.attribute *
              string
  val readSchema : string list -> string list -> Ldap_schemaparser.schema
end