sig
  type 'a or_error = [ `Error of string | `Ok of 'a ]
  type state = Flex_state.t
  type env_action = (module Env.S-> unit
  type prec_action = Extensions.state -> Compute_prec.t -> Compute_prec.t
  type 'a state_actions = ('-> Extensions.state -> Extensions.state) list
  type t = {
    name : string;
    prio : int;
    start_file_actions : string Extensions.state_actions;
    post_parse_actions :
      Libzipperposition.UntypedAST.statement Sequence.t
      Extensions.state_actions;
    post_typing_actions :
      Libzipperposition.TypeInference.typed_statement CCVector.ro_vector
      Extensions.state_actions;
    post_cnf_actions :
      Libzipperposition.Statement.clause_t CCVector.ro_vector
      Extensions.state_actions;
    ord_select_actions :
      (Libzipperposition.Ordering.t * Selection.t) Extensions.state_actions;
    ctx_actions : (module Ctx_intf.SExtensions.state_actions;
    prec_actions : Extensions.prec_action list;
    env_actions : Extensions.env_action list;
  }
  val default : Extensions.t
  val register : Extensions.t -> unit
  val extensions : unit -> Extensions.t list
  val by_name : string -> Extensions.t option
  val names : unit -> string Sequence.t
end