sig
  type origin_t = ODefault | OGetEnv | OFileLoad | OCommandLine
  type cli_handle_t =
      CLINone
    | CLIAuto
    | CLIWith
    | CLIEnable
    | CLIUser of (Arg.key * Arg.spec * Arg.doc) list
  type definition_t = {
    hide : bool;
    dump : bool;
    cli : BaseEnv.cli_handle_t;
    arg_help : string option;
    group : OASISTypes.name option;
  }
  val schema : (BaseEnv.origin_t, BaseEnv.definition_t) PropList.Schema.t
  val env : PropList.Data.t
  val var_expand : string -> string
  val var_get : OASISTypes.name -> string
  val var_choose :
    ?printer:('-> string) -> ?name:string -> 'OASISExpr.choices -> 'a
  val var_protect : string -> string
  val var_define :
    ?hide:bool ->
    ?dump:bool ->
    ?short_desc:(unit -> string) ->
    ?cli:BaseEnv.cli_handle_t ->
    ?arg_help:string ->
    ?group:string -> OASISTypes.name -> (unit -> string) -> unit -> string
  val var_redefine :
    ?hide:bool ->
    ?dump:bool ->
    ?short_desc:(unit -> string) ->
    ?cli:BaseEnv.cli_handle_t ->
    ?arg_help:string ->
    ?group:string -> OASISTypes.name -> (unit -> string) -> unit -> string
  val var_ignore : (unit -> string) -> unit
  val print_hidden : unit -> string
  val var_all : unit -> OASISTypes.name list
  val default_filename : OASISContext.source_filename
  val load :
    ctxt:OASISContext.t ->
    ?allow_empty:bool ->
    ?filename:OASISContext.source_filename -> unit -> unit
  val unload : unit -> unit
  val dump :
    ctxt:OASISContext.t ->
    ?filename:OASISContext.source_filename -> unit -> unit
  val print : unit -> unit
  val args : unit -> (Arg.key * Arg.spec * Arg.doc) list
end