sig
  type completer = left:string -> right:string -> string list
  module History :
    sig
      type t = Readline.History.t
      val null : t
      val default : t
      val create : int -> t
      val flush : t -> unit
      val to_list : t -> string list
      val of_list : ?size:int -> string list -> t
    end
  val input_line :
    ?history:History.t ->
    ?prompt:string ->
    ?text:string -> ?tab_completion:completer -> unit -> string option
  val input_line_eof :
    ?history:History.t ->
    ?prompt:string ->
    ?text:string -> ?tab_completion:completer -> unit -> string
  val password : ?prompt:string -> unit -> string option
  val confirm : ?prompt:string -> string -> bool
  val choice : (string * 'a) list -> 'a option
end