sig
  type 'a or_error = ('a, string) CCResult.t
  type state = Logtk.Flex_state.t
  type env_action = (module Env.S-> unit
  type prec_action =
      Extensions.state -> Logtk.Compute_prec.t -> Logtk.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 :
      Logtk.UntypedAST.statement Sequence.t Extensions.state_actions;
    post_typing_actions :
      Logtk.TypeInference.typed_statement CCVector.ro_vector
      Extensions.state_actions;
    post_cnf_actions :
      Logtk.Statement.clause_t CCVector.ro_vector Extensions.state_actions;
    ord_select_actions :
      (Logtk.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