sig   module Scheme :     sig       type t       type trigger = [ `After | `Before ]       type direct       val direct :         ?preset:B0.Conf.Preset.t ->         ?setup:(B0.Conf.t -> unit B0.result) ->         ?delete:(B0.Conf.t -> unit B0.result) ->         ?env:(unit -> B0.Env.t B0.result) ->         ?build:(B0.Variant.Scheme.trigger -> B0.Build.t -> unit B0.result) ->         ?stage:(B0.Variant.Scheme.trigger -> B0.Outcome.t -> unit B0.result) ->         unit -> B0.Variant.Scheme.direct       val direct_preset : B0.Variant.Scheme.direct -> B0.Conf.Preset.t option       val direct_env : B0.Variant.Scheme.direct -> unit -> B0.Env.t B0.result       type proxy_conf       val proxy_conf :         root_dir:B0.Fpath.t ->         b0_dir:B0.Fpath.t ->         variant_dir:B0.Fpath.t -> unit -> B0.Variant.Scheme.proxy_conf       val proxy_conf_root_dir : B0.Variant.Scheme.proxy_conf -> B0.Fpath.t       val proxy_conf_b0_dir : B0.Variant.Scheme.proxy_conf -> B0.Fpath.t       val proxy_conf_variant_dir : B0.Variant.Scheme.proxy_conf -> B0.Fpath.t       type proxy       val proxy :         ?create:(B0.Variant.Scheme.proxy_conf -> unit B0.result) ->         ?setup:(B0.Variant.Scheme.proxy_conf -> unit B0.result) ->         ?delete:(B0.Variant.Scheme.proxy_conf -> unit B0.result) ->         run:(B0.Variant.Scheme.proxy_conf ->              B0.Cmd.t -> B0.OS.Cmd.status B0.result) ->         B0.Variant.Scheme.t -> B0.Variant.Scheme.proxy       val proxy_run :         B0.Variant.Scheme.proxy ->         B0.Variant.Scheme.proxy_conf ->         B0.Cmd.t -> B0.OS.Cmd.status B0.result       val proxy_create :         B0.Variant.Scheme.proxy ->         B0.Variant.Scheme.proxy_conf -> unit B0.result       val proxy_delete :         B0.Variant.Scheme.proxy ->         B0.Variant.Scheme.proxy_conf -> unit B0.result       val proxy_setup :         B0.Variant.Scheme.proxy ->         B0.Variant.Scheme.proxy_conf -> unit B0.result       type kind =           [ `Direct of B0.Variant.Scheme.direct           | `Proxy of B0.Variant.Scheme.proxy ]       val v :         ?loc:B0.Def.loc ->         ?doc:string ->         string -> B0.Variant.Scheme.kind -> B0.Variant.Scheme.t       val kind : B0.Variant.Scheme.t -> B0.Variant.Scheme.kind       val nop : B0.Variant.Scheme.t       val with_preset :         ?loc:B0.Def.loc ->         ?doc:string ->         B0.Variant.Scheme.t ->         B0.Conf.Preset.t option -> string -> B0.Variant.Scheme.t       val wrap :         B0.Variant.Scheme.t ->         B0.Variant.Scheme.t -> string -> B0.Variant.Scheme.t       val value_kind : string       val name : t -> string       val loc : t -> Def.loc       val doc : t -> string       val equal : t -> t -> bool       val compare : t -> t -> int       val compare_by_name : t -> t -> int       val find : string -> t option       val get : string -> t       val get_or_suggest : string -> (t, string list) result       val list : unit -> t list       val pp_name_str : string Fmt.t       val pp_name : t Fmt.t       val pp_synopsis : t Fmt.t       val pp_info : t Fmt.t       val pp_info_ext : t Fmt.t -> t Fmt.t     end   type t   val create :     ?preset:bool ->     dir:B0.Fpath.t ->     string ->     B0.Variant.Scheme.t ->     (B0.Variant.t * B0.Conf.Preset.def_error list) B0.result   val reset : B0.Variant.t -> unit B0.result   val delete :     ?force:bool ->     B0.Variant.t ->     (unit, [ `Msg of string | `Scheme of B0.R.msg ]) Pervasives.result   val scheme : B0.Variant.t -> B0.Variant.Scheme.t   val conf_path : B0.Variant.t -> B0.Fpath.t   val outcome_path : B0.Variant.t -> B0.Fpath.t   val build_path : B0.Variant.t -> B0.Fpath.t   val cache_index_path : B0.Variant.t -> B0.Fpath.t   val value_kind : string   val name : B0.Variant.t -> string   val path : B0.Variant.t -> B0.Fpath.t   val equal : B0.Variant.t -> B0.Variant.t -> bool   val compare : B0.Variant.t -> B0.Variant.t -> int   val compare_by_name : B0.Variant.t -> B0.Variant.t -> int   type unknown_scheme = [ `Unknown_scheme of string * B0.Variant.t ]   val of_unknown_scheme : B0.Variant.unknown_scheme -> B0.Variant.t   val pp_unknown_scheme : B0.Variant.unknown_scheme B0.Fmt.t   type load =       (B0.Variant.t, [ `Unknown_scheme of string * B0.Variant.t ])       Pervasives.result   val of_load : B0.Variant.load -> B0.Variant.t   val exists : dir:B0.Fpath.t -> string -> bool B0.result   val find : dir:B0.Fpath.t -> string -> B0.Variant.load option B0.result   val get : dir:B0.Fpath.t -> string -> B0.Variant.load B0.result   val get_or_suggest :     dir:B0.Fpath.t ->     string -> (B0.Variant.load, string list) Pervasives.result B0.result   val list : dir:B0.Fpath.t -> B0.Variant.load list B0.result   val list_empty : dir:B0.Fpath.t -> bool B0.result   val pp_name_str : string B0.Fmt.t   val pp_name : B0.Variant.t B0.Fmt.t   val pp_synopsis : B0.Variant.t B0.Fmt.t   val pp_info : B0.Variant.t B0.Fmt.t   val pp_info_ext : B0.Variant.t B0.Fmt.t -> B0.Variant.t B0.Fmt.t end