sig
  val env : string -> default:'-> (string -> 'a) -> 'a
  val prefs_path :
    org:string -> app:string -> (string, [ `Msg of string ]) Result.result
  val quit : unit React.event
  val init :
    ?name:string ->
    ?surface:Useri.Surface.t ->
    unit -> (unit, [ `Msg of string ]) Result.result
  val run_step : unit -> Useri.Time.span
  val run : ?until:'React.event -> unit -> unit
  val release : ?sinks:bool -> unit -> unit
  val start : unit React.event
  val stop : unit React.event
  val sink_event : 'React.event -> unit
  val sink_signal : 'React.signal -> unit
  val release_sinks : unit -> unit
  type launch_context = [ `Browser | `Gui | `Terminal ]
  val launch_context : Useri.App.launch_context
  val pp_launch_context :
    Format.formatter -> Useri.App.launch_context -> unit
  val platform : string
  type backend = [ `Jsoo | `Other of string | `Tsdl ]
  val backend : Useri.App.backend
  val pp_backend : Format.formatter -> Useri.App.backend -> unit
  val set_backend_logger : ([ `Error | `Warning ] -> string -> unit) -> unit
  type backend_scheme = [ `Async | `Sync ]
  val backend_scheme : [ `Async | `Sync ]
  val pp_backend_scheme :
    Format.formatter -> Useri.App.backend_scheme -> unit
  type cpu_count = [ `Known of int | `Unknown ]
  val cpu_count : Useri.App.cpu_count
  val pp_cpu_count : Format.formatter -> Useri.App.cpu_count -> unit
end