type node_type = | Leaf [@name "leaf"] | Tag [@name "tag"] | Other [@name "other"] [@@deriving yojson] type value_constraint = | Regex of string [@name "regex"] | External of string * string option [@name "exec"] [@@deriving yojson] type ref_node_data = { node_type: node_type; constraints: value_constraint list; help: string; value_help: (string * string) list; constraint_error_message: string; multi: bool; valueless: bool; owner: string option; priority: string option; keep_order: bool; hidden: bool; secret: bool; } [@@deriving yojson] type t = ref_node_data Vytree.t [@@deriving yojson] exception Bad_interface_definition of string exception Validation_error of string val default_data : ref_node_data val default : t val load_from_xml : t -> string -> t val is_multi : t -> string list -> bool val is_hidden : t -> string list -> bool val is_secret : t -> string list -> bool val is_tag : t -> string list -> bool val is_leaf : t -> string list -> bool val is_valueless : t -> string list -> bool val get_keep_order : t -> string list -> bool val get_owner : t -> string list -> string option val get_help_string : t -> string list -> string val get_value_help : t -> string list -> (string * string) list val get_completion_data : t -> string list -> (node_type * bool * string) list val render_json : t -> string